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

0

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

read -p "Enter the directory" target

du -k $target

Se o usuário der o caminho como ~/Documents/dir , estou recebendo a 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?

    
por Anuraag Khare 30.09.2017 / 21:47

1 resposta

0

O ~ não é expandido depois de ser lido no shell, nem quando é colocado no comando du . 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}"

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

    
por 30.09.2017 / 22:48