vim ではゴミ文字「^@」が表示されますが、cat では正しいデータが表示されます。

vim ではゴミ文字「^@」が表示されますが、cat では正しいデータが表示されます。

x.fileデータを32 KBサイズの仮想ボリュームにコピーし、同じボリュームから32 KBを再度y.fileに読み込もうとしています。 cat y.fileを使用すると予想される出力が表示されますが、vim / viを使用してコンテンツを表示するたびに追加の文字「^ @」が表示されます。

仮想ボリュームにデータを書き込むコマンドです。

dd if=/tmp/x.file of=/dev/vv/<vv_id> seek=0 bs=16K count=2

仮想ボリュームからデータを読み取るコマンドです。

dd of=/tmp/y.file if=/dev/vv/<vv_id> seek=0 bs=16K count=2

x.fileは一連のパターンを含み、サイズは24KBです。
たとえば、

x.ファイルの場合 PATTERN PATTERN PATTERN

その後、y.filePATTERN PATTERN PATTERN^@^@^@^@

編集する:

「^@」文字を表示する理由がわかりました。入力ファイルサイズが32KB未満です。しかし、「^ @」は異なる値になる可能性がありますが、なぜいっぱいになっているのか疑問に思っていますか?特別な理由がありますか?

答え1

コメントからx.file、ファイルが32768バイト(32KiB)より小さいことは明らかです。つまり、dd32KiBの書き込みを要求すると、/dev/vv/<vv_id>ファイルの内容全体をコピーすることはできず、32KiBの最後のビットは記録されていません。

y.file2 番目の操作は、ddエディタでファイルを開くと表示される初期化されていないデータをコピーします。

これが^@エディタがヌルバイトを表示する方法です。ddこれが最初にデバイスに記録されるのかdd、それとも最初の通話前にすでにデバイスにあったジャンクデータなのかは、マニュアルを読んでも明確ではありませんdd

関連情報