標準入力について。 `[n]の例

標準入力について。 `[n]の例

ポイントは何ですか1<filename?たぶん「キーボード - >標準出力」を意味しますか?

ベストアンサー1

1<filenamefilename読み取り用にファイルを開き、ファイル記述子1で実行されているコマンド(またはリダイレクトを使用している場合はフルシェルプロセス)でそのファイルを使用できるようにシェルに指示するリダイレクトexec。これは通常、すべてのリダイレクトに適用されるためです。<入力リダイレクトを表示するために、オプションの先行番号はファイル記述子番号を指定します。

このリダイレクトで珍しいことは、fd 1が標準出力ストリーム用に予約されているため、プログラムは通常ここに書き込むことができると仮定していることです。入力リダイレクトで開くと、この仮定は失敗します。

$ touch filename
$ ls 1<filename
ls: write error: Bad file descriptor

入力用にfd 2(stderr)を開くか、入力用にfd 0(stdin)を開くと同じことが起こります。出力

$ cat 0> filename
cat: -: Bad file descriptor

もちろん、stderrに書き込めない場合、エラーメッセージは表示されません。ゼロ以外の偽の終了ステータスが表示されることがあります。

おすすめ記事