Tenho usado du
o comando para mostrar o uso do arquivo:
$ sudo du -hsx /* | sort -rh | head -n 40
16G /home
5.3G /var
2.6G /usr
840M /run
...
E quero escrever uma função para me salvar do trabalho repetitivo:
show_disk() {
sudo du -hsx "$1" | sort -rh | head -n 40
}
Mas quando executo esta função, du
apenas uma linha de saída é mostrada como:
$ show_disk() /*
0 /bin
Parece-me que o du
comando se comporta de maneira diferente em uma função shell, onde foi que errei com isso? Qualquer ajuda seria apreciada.
Responder1
$1
é o primeiro argumento. Lembre-se de que é o shell que expande os curingas, não o aplicativo, portanto, *
não é um único argumento, a menos que corresponda a apenas um (ou nenhum) arquivo/diretório.
Você deve usar aspas duplas "$@"
em seu script se quiser aceitar todos os argumentos. (Não use, $*
pois isso interromperá nomes de arquivos contendo espaços.)