私はこれだけ知っています:
$ command 2>> error
$ command 1>> output
stderrをエラーファイルに出力し、stdoutをbashの同じ行の出力ファイルに出力する方法はありますか?
私はこれだけ知っています:
$ command 2>> error
$ command 1>> output
stderrをエラーファイルに出力し、stdoutをbashの同じ行の出力ファイルに出力する方法はありますか?
回答:
1行に追加するだけです command 2>> error 1>> output
ただし、これ>>
は、ファイルにすでにデータがある場合に追加するためのものです。一方、>
ファイル内の既存のデータは上書きされます。
したがって、command 2> error 1> output
追加したくない場合。
ただ、完成のために、あなたは書くことができる1>
と同じように>
、デフォルトのファイルディスクリプタが出力されますので、。これ1>
と>
同じことです。
だから、にcommand 2> error 1> output
なるcommand 2> error > output
command &2>err.log
とどのように違うのか、私は完全に混乱している構文だと思います。(すべてのbash pipe-ismsの適切な回答へのリンクが正しい場合があります)
command &2>err.log
完全に合法ではないようです-その構文のアンパサンドは、ターゲットとしてファイル記述子に使用されますcommand 1>&2
。たとえば、stdoutをstderrに再ルーティングします。
これを試して:
your_command 2>stderr.log 1>stdout.log
数字0
までは、9
あるファイルディスクリプタのbashインチ
0
標準入力を1
表し、標準出力を2
表し、標準エラーを表します。3
から9
他の一時的な使用のための予備です。
演算子を使用して、ファイル記述子をファイルまたは別のファイル記述子にリダイレクトできます>
。>>
代わりに、空のファイルを作成する代わりに、演算子を使用してファイルに追加できます。
使用法:
file_descriptor > filename
file_descriptor > &file_descriptor
Advanced Bash-Scripting Guide:Chapter 20. I / O Redirectionを参照してください。
そのように:
$ command >>output 2>>error
または、出力(stdoutとstderr)を1つのファイルに混在させる場合は、次のように使用できます。
command > merged-output.txt 2>&1
複数のコマンドの出力をリダイレクトできます。これは、コマンドラインまたはbashスクリプトで最も便利に機能します。-s
画面にプロンプトパスワードを指示します。
Hereblockコマンドstdout / stderrは、個別のファイルに送信され、何も表示されません。
sudo -s -u username <<'EOF' 2>err 1>out
ls; pwd;
EOF
hereblock cmds stdout / stderrは単一のファイルに送信されて表示されます。
sudo -s -u username <<'EOF' 2>&1 | tee out
ls; pwd;
EOF
hereblock cmds stdout / stderrは、個別のファイルとstdoutに送信されて表示されます。
sudo -s -u username <<'EOF' 2>err | tee out
ls; pwd;
EOF
あなたが誰であるか(whoami)とユーザー名に応じて、パスワードが必要な場合と必要でない場合があります。
1>
ように書くことができるかについてのあなたの説明が本当に好きです>