1

リダイレクトに関する Bash の奇妙な動作に気付きましたが、説明できません。入力すると

ls <>a
現在のディレクトリのファイルが stdout (Bash シェル) に出力され、ファイルaが作成されて空のままになります。入力ファイルが指定されていないため、エラーが発生することが予想されます。入力すると
ls >< a
エラーが発生します (予期しないトークン '<')。最初のことが起こった場合、これはファイルaをlsへの入力として使用しようとするはずです。これは矛盾を感じます。やっている
ls <>
エラーが表示されます (予期しないトークン '改行')
ls ><
別のエラーが表示されます (予期しないトークン '<')

ここで何が起こっているのか誰か説明できますか?

4

2 に答える 2

2

<><連続するand演算子ではなく、有効な bash 演算>子です。 ><は有効な演算子ではないため>連続したand<演算子として解釈されます。マニュアルページを確認してください:

リダイレクト演算子

[n]<>word 

の展開である名前のファイルが、ファイル記述子で、または指定されていない場合はファイル記述子で、word読み取りと書き込みの両方のために開かれます。ファイルが存在しない場合は、作成されます。n0n

于 2013-01-30T05:52:05.997 に答える
1

>< は有効な Bash ビルトインではありません。<>は、しかし。

[fd] <> *word*

それが行うのは、名前が入力の拡張であるファイルが、そのファイル記述子での読み取りと書き込みの両方のために開かれることだけです。

それやその他のリダイレクトについて詳しく知りたい場合は、http://www.gnu.org/software/bash/manual/bashref.html#Redirectionsが良い情報源です。

ああ、「Enter」を押すと、ターミナルに改行が作成されます。これは、シェルが単語と見なすものです。

于 2013-01-30T06:02:47.773 に答える