コマンドの標準入力にリダイレクトしながらファイルを変更します。

コマンドの標準入力にリダイレクトしながらファイルを変更します。

Bashで実行中に内容をmycommand < myfile修正しました。myfile

myfileどのようなコンテンツを取得しますかmycommandmycommand実行を開始したときに元のコンテンツを取得しますか、それともmyfile修正しながら変更されたコンテンツを取得しますか?myfile

ベストアンサー1

mycommand何をすべきかによって異なります。 10分間スリープモードに切り替えた後に標準入力を読み始めると、修正が表示されます(すでに完了した場合)。最初にファイルの一部を読み取り、そのファイルを変更してから2番目に読み取ると、読み取りポイント以降の変更が表示されます。

また、多くのプログラムがバッファリングを使用しているため、コマンドが1行しか読み取らないと思うと、実際にはもっと読み込むことができます(「バッファいっぱい」、通常8192バイト)。

ただし、編集プログラムはファイルを削除し、変更を含む新しいファイルを再作成することがよくあります。この場合、プログラムは以前に削除されたファイルの内容を引き続き使用し、変更は表示されません。これは、ファイルを開くと、ファイル名が対応する固有の「inode」に変換され、ファイル名が不要になるためです。誰かがファイルを削除しても、そのファイルを開くプログラムがある限り、inodeは存在し続けます。同じファイル名で新しいファイルが作成されると、異なる一意の inode が付与されます。

おすすめ記事