Quiero obtener el tamaño de un directorio proporcionado por el usuario como argumento. Ejemplo:
read -p "Enter the directory" target
du -k $target
Si el usuario proporciona la ruta como ~/Documents/dir
, aparece un mensaje de error:du: cannot access '~/Documents/dir': No such file or directory
Mientras que si doy el comando como:
du -k ~/Documents/dir
Estoy obteniendo el resultado deseado.
¿Por qué no puedo utilizar variables junto con el comando du?
Respuesta1
No se ~
expande después de leerlo en el shell ni cuando se coloca en el du
comando. Puedes forzar a bash a realizar la expansión con el siguiente código:
read -p "Enter the directory" target
target=${target/#\~/$HOME}
du -k "${target}"
La ${target/#\~/$HOME}
es la parte importante. Se reemplaza ~
con el contenido de la HOME
variable de entorno.