">>" の仕組みを理解しようとしています。自動追加モードまたは lseek を使用しますか?
私は bash ソースをダウンロードし、それがどのように機能するかを調べるために grep を試みましたが、うまくいきませんでした。多分もっと良い方法がありますか?
これはシステム コールを介して機能するため、知る最も簡単な方法は、strace を使用して bash を実行することです。次のようなことができます:
$ strace -o bash.log bash
$ echo hello >> test.txt
$ echo goodbye >> test.txt
$ exit
$ grep test.txt bash.log
open("test.txt", O_WRONLY|O_CREAT|O_APPEND, 0666) = 3
open("test.txt", O_WRONLY|O_CREAT|O_APPEND, 0666) = 3
write(3, "echo hello >> test.txt\necho good"..., 48) = 48
呼び出しに渡されたフラグから、open()
追加モードで直接開かれていることがわかります。