He estado usando du
el comando para mostrar el uso de archivos:
$ sudo du -hsx /* | sort -rh | head -n 40
16G /home
5.3G /var
2.6G /usr
840M /run
...
Y quiero escribir una función para salvarme del trabajo repetitivo:
show_disk() {
sudo du -hsx "$1" | sort -rh | head -n 40
}
Pero cuando ejecuto esta función, du
solo aparece una línea de salida como:
$ show_disk() /*
0 /bin
Me parece que el du
comando se comporta de manera diferente en una función de shell, ¿en qué me equivoqué con esto? Cualquier ayuda sería apreciada.
Respuesta1
$1
es el primer argumento. Recuerde que es el shell el que expande los comodines, no la aplicación, por lo que *
no es un argumento único a menos que coincida con solo un (o ningún) archivo/directorio.
Debe utilizar comillas dobles "$@"
en su secuencia de comandos si desea aceptar todos los argumentos. (No lo use $*
ya que se romperá con nombres de archivos que contengan espacios).