El comando Linux du en la función Shell solo produce una línea de salida

El comando Linux du en la función Shell solo produce una línea de salida

He estado usando duel 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, dusolo aparece una línea de salida como:

$ show_disk() /*
0   /bin

Me parece que el ducomando se comporta de manera diferente en una función de shell, ¿en qué me equivoqué con esto? Cualquier ayuda sería apreciada.

Respuesta1

$1es 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).

información relacionada