3

One、Two、Threeという名前の3つのファイルがあります。

1つは含まれています:

1
3
2

2つ含まれています:

4
6
5

3つ含まれています:

7
9
8

次のコマンドを実行すると、次のようになります。

$sort < One < Two < Three

出力を取得します:

7
8
9

しかし、私が次のコマンドを与えると:

$sort One Two Three

私は出力を取得します:

1
2
3
4
5
6
7
8
9

誰かがここで何が起こっているのかを明らかにしてくれませんか?最初のコマンドで1と2からの入力が考慮されないのはなぜですか?

4

2 に答える 2

4

あなたのコマンドは次と同じです:

sort 0<1 0<2 0<3

(ファイル記述子 0 は標準入力です)

リダイレクトは、表示された順序で左から右に処理されます。
sortコマンド自体は、これらのファイルを表示できません。ファイル、を1 つずつ
bash開きます。 したがって、最も右のものは左のものをオーバーライドします。 最後に、read from which is bind to file .123file descriptor 0

sortfile descriptor 03

于 2012-09-11T13:54:38.823 に答える
2

bashで複数のファイルをリダイレクトすることはできません。この制限を回避するには、catを使用できます。

cat 1 2 3 | sort

ちなみに、zshはmutliosと呼ばれるものをサポートしています。

 zsh$ setopt multios
 zsh$ sort < 1 < 2 < 3 > 4 > 5
 zsh$ tr '\n' ' ' < 4 < 5
 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 
于 2012-09-11T14:08:17.443 に答える