사용자가 인수로 제공한 디렉토리의 크기를 확인하는 방법은 무엇입니까?

사용자가 인수로 제공한 디렉토리의 크기를 확인하는 방법은 무엇입니까?

사용자가 인수로 제공한 디렉토리의 크기를 얻고 싶습니다. 예:

read -p "Enter the directory" target

du -k $target

사용자가 경로를 다음과 같이 제공하면 ~/Documents/dir오류 메시지가 나타납니다.du: cannot access '~/Documents/dir': No such file or directory

반면에 다음과 같이 명령을 내리면:

du -k ~/Documents/dir

원하는 출력을 얻고 있습니다.

du 명령과 함께 변수를 사용할 수 없는 이유는 무엇입니까?

답변1

~셸을 통해 읽은 후나 명령에 배치된 후에는 확장되지 않습니다 du. 다음 코드를 사용하여 bash가 확장을 수행하도록 강제할 수 있습니다:

read -p "Enter the directory" target
target=${target/#\~/$HOME}
du -k "${target}"

${target/#\~/$HOME}중요한 부분입니다. 환경 변수 ~의 내용으로 대체됩니다 HOME.

관련 정보