如何检查用户作为参数给出的目录的大小?

如何检查用户作为参数给出的目录的大小?

我想获取用户作为参数提供的目录的大小。示例:

read -p "Enter the directory" target

du -k $target

如果用户给出的路径为~/Documents/dir,我会收到错误消息:du: cannot access '~/Documents/dir': No such file or directory

如果我给出以下命令:

du -k ~/Documents/dir

我得到了期望的输出。

为什么我不能将变量与 du 命令一起使用?

答案1

在 shell 中读入后不会展开~,放入命令中也不会展开du。您可以使用以下代码强制 bash 进行展开:

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

${target/#\~/$HOME}是重点部分。它替换~为环境变量的内容HOME

相关内容