¿Cómo verificar el tamaño de un directorio dado por el usuario como argumento?

¿Cómo verificar el tamaño de un directorio dado por el usuario como argumento?

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 ducomando. 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 HOMEvariable de entorno.

información relacionada