쉘 함수의 linux du 명령은 한 줄의 출력만 생성합니다.

쉘 함수의 linux du 명령은 한 줄의 출력만 생성합니다.

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첫 번째 매개변수입니다. 애플리케이션이 아니라 와일드카드를 확장하는 셸이므로 *하나의 파일/디렉토리와 일치하거나 일치하지 않는 한 단일 인수가 아닙니다.

"$@"모든 매개변수를 허용하려면 스크립트에 큰따옴표를 사용해야 합니다. ( $*공백이 포함된 파일 이름이 손상될 수 있으므로 사용하지 마십시오 .)

관련 정보