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 du
comando. 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 HOME
variável de ambiente.