我一直在使用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
命令在 shell 函數中的行為有所不同,我哪裡出了問題?任何幫助,將不勝感激。
答案1
$1
是第一個參數。請記住,擴展通配符的是 shell,而不是應用程序,因此*
不是單一參數,除非它僅匹配一個(或沒有)檔案/目錄。
"$@"
如果您想接受所有參數,則應該在腳本中使用雙引號。 (不要使用,$*
因為它會破壞包含空格的檔名。)