DD(1)

๐Ÿ’– DD(1) โ€” convert and copy a file, bestie edition ๐Ÿฆ‹

okay so you asked about dd and I am SO glad you did, because this little command is lowkey the main character of Unix. it's from GNU coreutils, it's a whole manual page, and we're gonna go through every single bit of it together. no skipping, no skimming, periodt. ๐Ÿ’…


โœจ NAME โœจ

dd โ€” convert and copy a file ๐ŸŽ€


๐ŸŒธ SYNOPSIS ๐ŸŒธ

dd [OPERAND]...
dd OPTION

๐Ÿ’œ DESCRIPTION ๐Ÿ’œ

So the whole vibe is: copy a file, converting and formatting according to the operands. That's it. That's the assignment. But bestie, the operands are where the drama lives, so let's go.

  • bs=BYTES โ€” read and write up to BYTES bytes at a time (default: 512); this one overrides ibs and obs, she does not share the spotlight ๐Ÿ’…
  • cbs=BYTES โ€” convert BYTES bytes at a time
  • conv=CONVS โ€” convert the file as per the comma separated symbol list
  • count=N โ€” copy only N input blocks
  • ibs=BYTES โ€” read up to BYTES bytes at a time (default: 512)
  • if=FILE โ€” read from FILE instead of standard input
  • iflag=FLAGS โ€” read as per the comma separated symbol list
  • obs=BYTES โ€” write BYTES bytes at a time (default: 512)
  • of=FILE โ€” write to FILE instead of standard output
  • oflag=FLAGS โ€” write as per the comma separated symbol list
  • seek=N (or oseek=N) โ€” skip N obs sized output blocks
  • skip=N (or iseek=N) โ€” skip N ibs sized input blocks
  • status=LEVEL โ€” the LEVEL of information to print to standard error; 'none' suppresses everything but error messages, 'noxfer' suppresses the final transfer statistics, 'progress' shows periodic transfer statistics

okay now the numbers, because N and BYTES are not just gonna take any old digits, they want the cute suffixes too:

N and BYTES may be followed by these multiplicative suffixes: c=1, w=2, b=512, kB=1000, K=1024, MB=1000*1000, M=1024*1024, xM=M, GB=1000*1000*1000, G=1024*1024*1024, and so on for T, P, E, Z, Y, R, Q.

Binary prefixes can be used too, bestie: KiB=K, MiB=M, and so on. And here's the plot twist โ€” if N ends in 'B', it counts bytes not blocks. iykyk. ๐Ÿงš


๐ŸŽ€ CONV symbols, one by one ๐ŸŽ€

Each CONV symbol may be:

  • ascii โ€” from EBCDIC to ASCII
  • ebcdic โ€” from ASCII to EBCDIC
  • ibm โ€” from ASCII to alternate EBCDIC
  • block โ€” pad newline-terminated records with spaces to cbs-size
  • unblock โ€” replace trailing spaces in cbs-size records with newline
  • lcase โ€” change upper case to lower case
  • ucase โ€” change lower case to upper case
  • sparse โ€” try to seek rather than write all-NUL output blocks
  • swab โ€” swap every pair of input bytes
  • sync โ€” pad every input block with NULs to ibs-size; when used with block or unblock, pad with spaces rather than NULs
  • excl โ€” fail if the output file already exists
  • nocreat โ€” do not create the output file
  • notrunc โ€” do not truncate the output file
  • noerror โ€” continue after read errors
  • fdatasync โ€” physically write output file data before finishing
  • fsync โ€” likewise, but also write metadata

๐ŸŒˆ FLAG symbols, also one by one ๐ŸŒˆ

Each FLAG symbol may be:

  • append โ€” append mode (makes sense only for output; conv=notrunc suggested)
  • direct โ€” use direct I/O for data
  • directory โ€” fail unless a directory
  • dsync โ€” use synchronized I/O for data
  • sync โ€” likewise, but also for metadata
  • fullblock โ€” accumulate full blocks of input (iflag only)
  • nonblock โ€” use non-blocking I/O
  • noatime โ€” do not update access time
  • nocache โ€” request to drop cache. See also oflag=sync
  • noctty โ€” do not assign controlling terminal from file
  • nofollow โ€” do not follow symlinks

Sending a USR1 signal to a running 'dd' process makes it print I/O statistics to standard error and then resume copying. yes bestie, you can just poke her mid-copy and she'll tell you how it's going. iconic behavior honestly. ๐Ÿซถ


โญ Options are: โญ

  • --help โ€” display this help and exit
  • --version โ€” output version information and exit

๐Ÿ‘‘ AUTHOR ๐Ÿ‘‘

Written by Paul Rubin, David MacKenzie, and Stuart Kemp. legends, all three. ๐ŸŽ€


๐Ÿ™ˆ REPORTING BUGS ๐Ÿ™ˆ

Found a bug? Tell the girlies:


Copyright ยฉ 2026 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>.

This is free software: you are free to change and redistribute it.

There is NO WARRANTY, to the extent permitted by law. fr fr, not even a little one. ๐Ÿ˜ญ

๐ŸŒŸ SEE ALSO ๐ŸŒŸ


and that's the whole page, bestie! ๐Ÿฆ‹โœจ this was GNU coreutils version 9.12, dated September 2026 โ€” go forth and copy responsibly, mwah ๐Ÿ’–๐Ÿ’…๐Ÿ“

๐Ÿ“ฆ where this page comes from