コンピューターがこのコマンドをどのように読み取るのかよくわかりません。
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
ではありません 。