対称リダイレクトは同じ結果を生成しません。

対称リダイレクトは同じ結果を生成しません。

Bashリダイレクトを理解しようとしていますが、奇妙な例を見つけました。次の対話を考えます。

1: $ echo "Hello" 11>txt 11<&1
2: Hello
3: $ cat txt
4: $ echo "Hello" 11>txt 1>&11
5: $ cat txt
6: Hello

私の目には1行と4行が完全に対称に見えますが、なぜ同じ結果が出ないのですか?

ベストアンサー1

@chorobaは素晴らしい答えを提供しましたが、説明はありませんでした。だから。

echo "Hello" 11>txt 11<&1

  • 標準出力 - >端子
  • 11>txttxtファイルをfd / xで開くfd / 11をfd / xにリダイレクトする(fd / xの数字をfd / 11にコピー)
  • 11<&1fd/11 を fd/1 にリダイレクトします (fd/1 から fd/11 に番号をコピー)。

fd/11 は fd/1 (ターミナル) と同じです。 fd / xはファイルを指します(しかし、私たちはxを知りません)。

  • echo "Hello" 11>txt 1>&11
  • 標準出力 - >端子
  • 11>txttxtファイルをfd / xで開くfd / 11をfd / xにリダイレクトする(fd / xの数字をfd / 11にコピー)
  • 1>&111を11にリダイレクトします(fd / 11の番号をfd / 1にコピー)。

fd/1、fd/11、および fd/x はファイルを指します。

おすすめ記事