du
파일 사용법을 표시하기 위해 명령을 사용했습니다 .
$ sudo du -hsx /* | sort -rh | head -n 40
16G /home
5.3G /var
2.6G /usr
840M /run
...
그리고 반복적인 작업으로부터 나를 구하기 위한 함수를 작성하고 싶습니다.
show_disk() {
sudo du -hsx "$1" | sort -rh | head -n 40
}
하지만 이 기능을 실행하면 다음 du
과 같은 한 줄의 출력만 표시됩니다.
$ show_disk() /*
0 /bin
제가 보기에는 쉘 함수에서 명령이 다르게 동작하는 것 같습니다 du
. 여기서 잘못된 점은 무엇입니까? 어떤 도움이라도 주시면 감사하겠습니다.
답변1
$1
첫 번째 주장이다. 앱이 아니라 와일드카드를 확장하는 셸이므로 *
파일/디렉토리가 하나만 일치하거나 일치하지 않는 한 단일 인수가 아닙니다.
"$@"
모든 인수를 허용하려면 스크립트에서 큰따옴표를 사용해야 합니다 . ( $*
공백이 포함된 파일 이름으로 인해 중단될 수 있으므로 사용하지 마십시오 .)