我一直在使用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,而不是应用程序,因此*
不是单个参数,除非它仅匹配一个(或没有)文件/目录。
"$@"
如果您想接受所有参数,则应该在脚本中使用双引号。 (不要使用,$*
因为它会破坏包含空格的文件名。)