コンピューターがこのコマンドをどのように読み取るのかよくわかりません。
cat file1 file2 1> file.txt 2>&1
理解できれば、2>&1 標準エラーを標準出力にリダイレクトするだけです。
その論理により、コマンドは次のように私に読み取ります:
-
ファイルを連結する
file1およびfile2。 -
stdoutを送信します この操作からfile.txtへ 。 -
stderrを送信しますstdoutへ 。 -
終了しますか?
コンピューターが何をしているのかわかりません。私の論理では、コマンドは
cat file1 file2 2>&1 > file.txt
しかし、これは正しくありません。
承認された回答:
割り当てを使用することを考える方が簡単だと思います。
-
>=のようなものです -
&$のようなものです
あなたは
から始めます1 = /dev/tty
2 = /dev/tty
次に、最初の例、1> file.txt 2>&1 、します
1 = file.txt
2 = $1 # and currently $1 = file.txt
残して
1 = file.txt
2 = file.txt
逆の場合は、
から始めます。1 = /dev/tty
2 = /dev/tty
次に2>&1 > file.txt
2 = $1 # and currently $1 = /dev/tty
1 = file.txt
したがって、最終結果は
1 = file.txt
2 = /dev/tty
stdoutのみをリダイレクトしました 、stderrではありません 。