51

I know very well what the command does, but man dd, info dd tell me: 'Convert and copy a file', as does GNU Coreutils.

Google says its an abbreviation of everything between medicine and bad webchat slang; except someone saying it means 'data destroyer', something used in PC forensics - I'd be horrified if my dd destroyed my data!

Any insight? :-)


Update: Of course I had to check the jargon file:

The Unix dd(1) was designed with a weird, distinctly non-Unixy keyword option syntax reminiscent of IBM System/360 JCL (which had an elaborate DD ‘Dataset Definition’ specification for I/O devices)

Still sounds pretty ambiguous, but then it says:

though the command filled a need, the interface design was clearly a prank.

Heh :-)

2
  • 9
    dd is particularly good at destroying data if you aren't careful. "Data Destroyer" is not really a misnomer.
    – LawrenceC
    Aug 14, 2012 at 3:25
  • Cross reference: askubuntu.com/a/645765/25036 (2015-07-08) under What does the command name “dd” stand for? Apr 2, 2017 at 11:39

5 Answers 5

47

Though the “best answer” was given, this site states otherwise:

Actually, it stands for ‘Copy and Convert’ and was renamed to dd only because cc was reserved for the C compiler! This is the authentic information I got from the man pages of our Unix-V7 on our university PDP 11.

Original mail at comp.unix.misc(usenet): The Unix Acronym List

5
  • 4
    But the postings go on to say: He's not sure if it was ever actually called cc in UNIX, but he is _certain_ that the name dd comes from the jcl dd command (so does the wreched syntax). Feb 3, 2011 at 15:41
  • 2
    This is proving quite an investigation. 'Copy and Convert' describe's dd's function nicely! Some systems did have cc as the 'C-Compiler', and light-bulb moment: does gcc stand for 'GNU C Compiler'? :-) Interesting.
    – invert
    Feb 3, 2011 at 21:12
  • 3
    There is a very simple issue involved here. 'DD' is from IBM's JCL and 'dd' is from UNIX .. one is Upper-case, the other Lower-case where case ma.ttered... IBM didn't really have much to do with UNIX and vice-versa... and DD/dd did different things... So, to me, anything other than this is a possibility
    – Peter.O
    Feb 5, 2011 at 11:13
  • 3
    @invert gcc stands for GNU Compiler Collection, but knowing GNU and their weird obsession with acronyms, it probably stands for both.. Dec 24, 2015 at 22:17
  • I see no such claim in the V7 nor PWB Unix man pages, both of which can be found on TUHS for instance, that sounds a bit like Urban myth. Aug 8, 2022 at 12:40
35

Wikipedia (dd) asserts it was named after IBM JCL command DD which stands for Data Definition. I always thought it would mean data duplicate, though.

10
  • 13
    It also says It is jokingly said to stand for "disk destroyer", "data destroyer", or "delete data" - cross referencing this with the Jargon file clicks a switch, I believe this is the answer we're looking for!
    – invert
    Feb 2, 2011 at 20:49
  • 2
    I always thought it was data duplicate too.
    – Mikel
    Feb 2, 2011 at 21:07
  • 4
    It was definitely Dataset Definition. Dataset was the IBM term for File. In JCL you needed to write a DD record to define the file that you wanted to use and give a 2 character unit number code to reference in your Open statements. Feb 4, 2011 at 2:44
  • 2
    Can you add a reference? Apr 5, 2015 at 16:49
  • 6
    On the topic of the cc/dd name: Spurious. dd was always named after JCL dd cards. -- Dennis Ritchie (alt.folklore.computers, 2004) Oct 25, 2015 at 19:39
14

"dump data". JCL is irrelevant.

8
  • 4
    Probaby a backronym. secure.wikimedia.org/wikipedia/en/wiki/Backronym
    – jsbillings
    Feb 3, 2011 at 3:22
  • 3
    Disk Dump is correct. Back then it was normal to use DD to backup a hard drive partition to tape. Most of the other options were related to things that people wanted to do with tapes, such as convert EBCDIC to ASCII. Feb 4, 2011 at 2:43
  • 3
    JCL is irrelevant -- that depends on the question being asked. One question is the historical origin, in which case JCL is probably relevant. Another question is the most clever and fitting backronym one can imagine for modern dd usage, in which case this answer might be more appropriate. I'm not actually sure which the OP is asking.
    – jw013
    Oct 9, 2012 at 16:58
  • 6
    It makes a great deal of sense, and is therefore almost certainly wrong. Lexicography is no task for amateurs.
    – TRiG
    Nov 15, 2014 at 2:17
  • 1
    @Rob : I believe Jürgen A. Erhard is incorrect, based on the evidence of mr.spuratic's cited source. We aren't likely to get a more authoritative source than that of one of the key creators of Unix.
    – TOOGAM
    Mar 17, 2019 at 18:36
2

Someone was questioning whether the UNIX (and Linux) dd command actually had any relationship to the IBM JCL dd command. I would argue that it DID and that it had a direct bearing on the choice of the name, and here is the reason.

"Way back" in the eighties and before, AT&T had operational support systems, particularly billing systems, that ran on equipment other than their own research systems. In particular, things like long distance billing reports and other artifacts that needed to be transferred between mainframe computer systems and other systems had to have a mechanism.

In the UNIX way of doing things, transferring files - or any "objects" could be done a bit or a byte at a time, without regard to content or anything else. The dd command had provisions for transferring those bits and bytes, and doing things like code set conversion between EBCDIC and ASCII, copying tape backups between diverse media types, and so forth.

Today, we can do things with this fairly ancient command and perform tasks such as creating bootable media on CD, DVD, small form factor USB sticks, and who knows what next, because the tool can simply transfer information, regardless of content. The dd command, in this respect, is one of the most useful commands in the UNIX and Linux arsenal.

2

Definitely dd is "copy and convert", as we have the "command line flag" conv (convert flags) with noerror, notrunc, sync, etc...

"Conv" has to mean "convert"!

dd if=<flag> of=<flag> conv=<flags> bs=<flag>

History told makes sense, the name “cc” was taken (by c compiler) therefore "copy and convert" was named dd, and later people remembered as "disk/data dump".

It's not POSIX, its JCL and this explains the syntax and the use of "command line flags" instead of parameters/arguments.

4
  • this is not true according to Dennis Ritchie: unix.stackexchange.com/questions/6804/what-does-dd-stand-for/…
    – strugee
    Sep 23, 2021 at 0:13
  • What is a JCL dd card? - The JCL documentation shows dd as a completely different command: ibm.com/docs/en/… Sep 23, 2021 at 0:17
  • I was referring specifically to the assertion that "cc was taken by the C compiler, so it became dd". maybe I just misread and you were trying to say that that's not true? I'm having a little trouble reading your answer.
    – strugee
    Sep 23, 2021 at 0:23
  • 2
    Your answer could be improved with additional supporting information. Please edit to add further details, such as citations or documentation, so that others can confirm that your answer is correct. You can find more information on how to write good answers in the help center.
    – Community Bot
    Sep 23, 2021 at 0:37

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .