上記のようにここopen()
、リダイレクトはファイルの書き込みに使用されます。内部(?)ファイル記述子はシェルに作成され、必要に応じて使用されます。
内部記述子はスクリプト全体の期間中に生成されますか、またはシェルの存続期間中に生成されますか?時間が経つにつれて、いくつかの作業などによって破壊されますか?
私の言葉は、組み込み操作のためにシェル自体で開かれるファイルのファイル記述子です。各タスクに対して記述子が作成され、ファイルが開きますか?どのくらい保存されますか?例:
#!/bin/bash
>>x echo something
...do many other things not related to the file x
>>x echo something more
2番目の操作まで、最初の記述子インスタンスは保持されますか?
端末で使用するシェルはどうですか?時々、数日、数週間セッションを続行することもあります。シェル組み込み機能を使用して操作するすべてのファイルの記述子はまだ保持されますか?
ベストアンサー1
完了すると閉じます。シェルは、実行される各コマンドに対して3つのファイル記述子0、1、2を生成します。これは数字にすぎず、この数字は再利用されます。シェルは記述子を再利用する前にファイルを閉じます。
ファイル記述子は他のプロセスにも渡されます。バックグラウンドにプロセスがある場合でも、ファイル記述子がまだあります。
例ではを使用します3>&1
。これは、ファイル記述子 3 が現在記述子 1 が参照するファイルを参照するようにすることを意味します。