Bash
我可以在程序替換中使用 sudo 嗎?
我想通過 計算磁碟空間
du
,但我需要sudo
訪問一些目錄:$perl -ane '$i+=($F[0] =~ s/^(\d+).*/$1/r); print "$i\n"' <(sudo du /home)
這使:
[sudo] password for user1: sudo: unable to read user1: Input/output error
如何在程序替換中啟用 sudo?
首先使用空命令執行它,或者
sudo -v
設置身份驗證令牌,然後接下來的執行應該可以在不詢問密碼的情況下執行。雖然取決於系統上 sudo 的設置方式,但預設情況下身份驗證有效期為 15 分鐘。$ sudo -v [sudo] password for iv: $ cat <(sudo du -d 1) 28636 ./foo ...
或者使用管道代替程序替換:
$ sudo du -d 1 | cat [sudo] password for iv: 28636 ./foo ...
請注意,您的 Perl 腳本似乎沒有多大意義。
du
列出所有目錄,包括帶有子目錄的目錄,併計算所有子樹本身的大小。因此,如果您只是添加它顯示的數字,您會為每個深度級別的所有目錄計算一次。例如,這裡只有一個 100 kB 的文件a/b/c
:$ du a 104 a/b/c 108 a/b 112 a
此外,
du -s
僅顯示給定目錄的總大小,並且至少 GNU du 具有-d
或--max-depth=N
限制它顯示的子目錄級別等。