ユーザーが引数として指定したディレクトリのサイズを確認するにはどうすればよいですか?

ユーザーが引数として指定したディレクトリのサイズを確認するにはどうすればよいですか?

ユーザーが引数として指定したディレクトリのサイズを取得したい。例:

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

~、シェル経由で読み込まれた後も、コマンド内に配置された後も展開されませんdu。次のコードを使用して、bash に展開を強制することができます。

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

${target/#\~/$HOME}重要な部分です。環境変数~の内容に置き換えられますHOME

関連情報