GNU/Linux >> Linux の 問題 >  >> Linux

Echo To File Descriptorはファイルを上書きしますか?

ファイル記述子に書き込もうとすると何が起こっているのか理解できませんか?元の内容を上書きしているようですか?これは予想される動作ですか?

以下の例でこれを複製しました:

$ echo "The quick brown fox ..." > example.txt  
$ echo "The quick brown fox ..." >> example.txt
$ cat example.txt
The quick brown fox ...  
The quick brown fox ...
$ exec 88<>example.txt
$ cat example.txt
The quick brown fox ...  
The quick brown fox ...
$ echo "jumped" >&88  
$ cat example.txt
jumped  
ck brown fox ...  
The quick brown fox ...
$ echo "jumped" >&88  
$ cat example.txt
jumped  
jumped  
n fox ...  
The quick brown fox ...

承認された回答:

記述子88で読み取りを行っていないため、現在のシーク位置は「0」であり、書き込みはその時点で行われました。

代わりに、それ以前にファイルを読んだ場合は、追加が行われます:

bash-4.2$ cat <&88
The quick brown fox ...
The quick brown fox ...

bash-4.2$ echo hello >&88

bash-4.2$ cat example.txt 
The quick brown fox ...
The quick brown fox ...
hello

bash-4.2$ echo more >&88

bash-4.2$ cat example.txt 
The quick brown fox ...
The quick brown fox ...
hello
more

Linux
  1. ファイル記述子リンクの移植性?

  2. ファイルの内容をコマンド「echo」にリダイレクトしますか?

  3. バッシュ‘?

  1. MvはFsでアトミックですか?

  2. Linux –より積極的なファイルシステムキャッシュのためにLinuxシステムを構成しますか?

  3. Mvはプロンプトなしで読み取り専用ファイルを上書きしますか?

  1. ファイル拡張子をクリーンアップする方法は?

  2. シェルスクリプトで、閉じたファイル記述子の使用によって引き起こされるSigpipeを回避するにはどうすればよいですか?

  3. ファイル記述子が開かれ、一度だけ読み取られるのはなぜですか?