如何檢查使用者作為參數給出的目錄的大小?

如何檢查使用者作為參數給出的目錄的大小?

我想取得使用者作為參數給出的目錄的大小。例子:

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

相關內容