出力のファイル記述子番号を取得する方法とすべてのファイル記述子を一度にリダイレクトする方法

出力のファイル記述子番号を取得する方法とすべてのファイル記述子を一度にリダイレクトする方法

このコマンドを例に挙げます。

$ time ssh ec2 ls
www apps
real    0m0.554s
user    0m0.004s
sys     0m0.000s

$ time ssh ec2 ls 1>/dev/null
real    0m0.554s
user    0m0.004s
sys     0m0.000s

$ time ssh ec2 ls 2>/dev/null
www apps
real    0m0.554s
user    0m0.004s
sys     0m0.000s

明らかに、ls出力はfd 1.outputから来ますtime。どのファイル記述子を使用しますか?どうやって見つけることができますか?

それ以外に、個別にリダイレクトするのではなく、一度にリダイレクトできますかall>/dev/null?私は探していません1>/dev/null 2>&1...

答え1

time標準エラーに書き込みます。

それ以外の理由は、/dev/null時間の出力ではなく、現在のコマンドの標準エラーを作成しているためです。これは、sキーワードが通常のユーティリティとは異なる方法で解析されるためですtime。リダイレクトはタイムアウトコマンドの一部です。

コードブロックを使用してすべての出力をリダイレクトします。

{ time ls; } 2> /dev/null

必要に応じて、lsの出力をブロック内の他の場所にリダイレクトできます。これには時間制限があります。

可能なすべてをリダイレクトしてください。

{ time ls 1>&2; } 2> /dev/null

関連情報