Como verificar o tamanho de um diretório fornecido pelo usuário como argumento?

Como verificar o tamanho de um diretório fornecido pelo usuário como argumento?

Quero obter o tamanho de um diretório fornecido pelo usuário como argumento. Exemplo:

read -p "Enter the directory" target

du -k $target

Se o usuário fornecer o caminho como ~/Documents/dir, estou recebendo uma mensagem de erro:du: cannot access '~/Documents/dir': No such file or directory

Considerando que se eu der o comando como:

du -k ~/Documents/dir

Estou obtendo a saída desejada.

Por que não consigo usar variáveis ​​junto com o comando du?

Responder1

O ~não é expandido depois de lido no shell, nem quando é colocado no ducomando. Você pode forçar o bash a fazer a expansão com o seguinte código:

read -p "Enter the directory" target
target=${target/#\~/$HOME}
du -k "${target}"

Essa ${target/#\~/$HOME}é a parte importante. Ele substitui ~pelo conteúdo da HOMEvariável de ambiente.

informação relacionada