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)より小さいことは明らかです。つまり、dd
32KiBの書き込みを要求すると、/dev/vv/<vv_id>
ファイルの内容全体をコピーすることはできず、32KiBの最後のビットは記録されていません。
y.file
2 番目の操作は、dd
エディタでファイルを開くと表示される初期化されていないデータをコピーします。
これが^@
エディタがヌルバイトを表示する方法です。dd
これが最初にデバイスに記録されるのかdd
、それとも最初の通話前にすでにデバイスにあったジャンクデータなのかは、マニュアルを読んでも明確ではありませんdd
。