プロセス置換にsudoを使用できますか?

プロセス置換に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を有効にする方法は?

答え1

まず、空のコマンドで実行するか、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サブディレクトリを含むディレクトリを含むすべてのディレクトリを一覧表示し、すべてのサブツリー自体のサイズを計算します。したがって、表示される数字だけを追加すると、各深さレベルに対してすべてのディレクトリを一度に計算できます。たとえば、以下は100kBファイルですa/b/c

$ du a
104     a/b/c
108     a/b
112     a

また、du -s指定されたディレクトリの合計サイズのみが表示され、少なくともGNU duは表示されるサブディレクトリのレベル数を持つ-dか制限します。--max-depth=N

関連情報