I am trying to copy the x.file data into virtual volume of size 32 KB and trying to read again 32 KB from the same volume to y.file. It shows expected output when using cat y.file but whenever I am using vim/vi to see the content it shows appended character "^@".

Command to write data in virtual volume.

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

Command to read the data from virtual volume.

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

x.file contains series of pattern and size of 24 KB.
For eg:


then y.file PATTERN PATTERN PATTERN^@^@^@^@


Now, I know what was the reason of showing "^@" character. My input file size was less than 32 KB. But still have doubt why "^@" gets filled as it could be any other value ? Any specific reason ?

  • 2
    Does cat -A show anything strange? – Hauke Laging Apr 2 '18 at 12:04
  • @HaukeLaging Yes using cat -A shows the same output what I see using vim. – Rocoder Apr 2 '18 at 12:19
  • 2
    Does you x.file file contain exactly 32768 bytes (not less)? – Kusalananda Apr 2 '18 at 13:51
  • 1
    What is the output of cmp x.file y.file ? – Mark Plotnick Apr 2 '18 at 16:19
  • @Kusalananda it was mistake from my side. Size of the x.file is less than 32K. I had many files all were greater size than 32K except x.file. – Rocoder Apr 3 '18 at 4:50

From comments, it is clear that the file x.file is less than 32768 bytes (32 KiB). This means that when dd is asked to write 32 KiB to /dev/vv/<vv_id>, it won't be able to copy it all from the file and the last bit of the 32 KiB will remain unwritten.

This uninitialized data will then be copied to y.file with the second dd operation, and this is what you see when you open that file in an editor.

The ^@ is the editor's way of showing a nul byte. From reading the dd manual, it's unclear to me whether this is what's written to the device by the first dd, or if it's junk data that were already present on the device before the first dd invocation.

  • "it's unclear to me whether this is what's written to the device by the first dd" -- The first dd should show you 32768 bytes (33 kB) copied – Patrick Apr 5 '18 at 11:14

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.