cat < file
コンテンツ印刷文書標準出力として。
cat > file
Ctrl+が検出されるまでstdinを読み、D入力テキストを作成します。文書。
cat <> file
、少なくとも私のBashバージョンでは、以下を印刷します。文書問題はありませんが(エラーなし)、ファイルは変更されず、修正タイムスタンプも更新されません。
Bash標準は、3番目のステートメントで無視されたように見える内容をどのように正当化しますか>
?さらに重要なこと行為何か?
ベストアンサー1
Bashは<>
生成に使用します。ファイル記述子の読み書き:
リダイレクト演算子
[n]<>word
ファイルディスクリプタnまたはnが指定されていない場合は、ファイルディスクリプタ0で読み書きするために単語拡張子を持つファイルを開くようにします。ファイルが存在しない場合、ファイルが生成されます。
cat <> file
読み書きをオンにして、ディスクリプタfile
0(標準入力)にバインドします。< file
通常、誰もが標準入力に書き込もうとしないという点で合理的に書かれたプログラムと本質的に同じです。しかし、誰かがそうすればそうすることができます。
これを直接テストするために、単純なCプログラムを書くことができます。write(0, "hello", 6)
これは標準入力で作成されますhello
。file
<>
しなければならない他のPOSIX互換シェルでも動作します。同じ効果があります。