52

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 :-)

strugee
  • 14,951
invert
  • 1,763
  • 9
    dd is particularly good at destroying data if you aren't careful. "Data Destroyer" is not really a misnomer. – LawrenceC Aug 14 '12 at 03:25
  • Cross reference: http://askubuntu.com/a/645765/25036 (2015-07-08) under What does the command name “dd” stand for? – Graham Perrin Apr 02 '17 at 11:39

5 Answers5

48

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

Rob
  • 1,780
  • 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). – Justin Ethier Feb 03 '11 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 03 '11 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 05 '11 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.. – Braden Best Dec 24 '15 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. – Stéphane Chazelas Aug 08 '22 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.

Daniele Santi
  • 4,137
  • 2
  • 30
  • 30
  • And Wikipedia is not really a reliable reference, as this goes to show. – Jürgen A. Erhard Feb 02 '11 at 19:50
  • 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 02 '11 at 20:49
  • 2
    I always thought it was data duplicate too. – Mikel Feb 02 '11 at 21:07
  • Oh, Wikipedia doesn't even assert anything, it just says (which is probably violating WP:NOR) "is most likely inspired from[sic] DD". – Jürgen A. Erhard Feb 02 '11 at 21:25
  • I've heard that it came from JCL from some sysadmin old-timers. See the documentation for DD to compare: http://publib.boulder.ibm.com/infocenter/zos/basics/topic/com.ibm.zos.zjcl/zjclc_jclDDstmt.htm – jsbillings Feb 03 '11 at 03:20
  • good call @jsbillings, I guess 'Description' and 'Definition' was synonymous then. Totally valid considering the terms I've come across in legacy systems. – invert Feb 03 '11 at 21:05
  • 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. – Michael Dillon Feb 04 '11 at 02:44
  • 1
    //SYSUT1#3 DD DISP=(SHR,KEEP),DSN=DDAG.D1006Y00.SHT.APPLTN.NAMES ...(some real JCL, with a real 'IBM' DD :) ..There is no way it is relatd to the nix 'dd' ..BTW, the '//' is not a comment indicator – Peter.O Feb 05 '11 at 11:32
  • 2
    Can you add a reference? – mikemaccana Apr 05 '15 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) – mr.spuratic Oct 25 '15 at 19:39
14

"dump data". JCL is irrelevant.

  • Yes this does make sense, functionally, even if the origins say something else. – invert Feb 02 '11 at 20:48
  • 4
    Probaby a backronym. https://secure.wikimedia.org/wikipedia/en/wiki/Backronym – jsbillings Feb 03 '11 at 03: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. – Michael Dillon Feb 04 '11 at 02: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 09 '12 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 '14 at 02: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 '19 at 18:36
  • "data dump" on Perl, e.g. https://metacpan.org/pod/Data::Dump and related. – jubilatious1 Sep 23 '21 at 05:21
  • I've always been told it meant Dump Data, being a unix command to dump disk files to magnetic tape (long ago pre in pre-Linux days when sending data by tape was still common). That's what I was told back at uni (or at least my memory of it), and I see no connection at all with the IBM JCL DD .. as its descriptive in MVS JCL only, and doesn't at all relate to COPY etc; as how its used [in JCL] will be defined elsewhere in the JCL, with the DD being descriptive only (links JCL references to an actual DSN; in IBM/MVS terms) – guiverc Sep 08 '23 at 07:46
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.

  • this is not true according to Dennis Ritchie: https://unix.stackexchange.com/questions/6804/what-does-dd-stand-for/670220#comment408440_6805 – strugee Sep 23 '21 at 00:13
  • What is a JCL dd card? - The JCL documentation shows dd as a completely different command: https://www.ibm.com/docs/en/zos-basic-skills?topic=concepts-jcl-statements-what-does-dd-statement-do – Bruno Schroeder Sep 23 '21 at 00: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 '21 at 00: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 Sep 23 '21 at 00:37