为什么dd
使用带有=
( if=/dev/zero
) 的参数而不是类似的更常见的方法-i /dev/zero
?
我只是好奇是否有人知道这种风格的历史原因或优缺点。
故事时间:当我开始开发软件时,我不知道自己在做什么,并使用了这种dd
风格,因为它对我来说在 C# 库中实现更容易。(像大多数开发人员一样,我仍然什么都不知道。只是如何使用 Google、StackOverlow 和复制粘贴。)
Ste*_*itt 25
POSIX在其基本原理部分提到了以下内容dd
:
\n\n当然,许多操作数可以设计为使用实用程序语法指南,这将导致经典的连字符选项字母。在 POSIX.1-2017 卷的这个版本中,由于大量应用程序依赖于历史实现,dd保留了其奇怪的类似 JCL 的语法。
\n
对 JCL 的引用与行话文件中的描述相呼应(条目将 \xe2\x80\x9cdd\xe2\x80\x9d 描述为动词,但此引用是针对dd
实用程序的):
\n\nUnix dd(1) 的设计采用了一种奇怪的、明显非 Unixy 的关键字选项语法,让人想起 IBM System/360 JCL(它有一个精心设计的 DD \xe2\x80\x98Dataset Definition\xe2\x80\x99 I/O 规范)设备)
\n
已故的丹尼斯·里奇写道
\n\n\ndd 始终以 JCL dd 卡命名。
\n
该线程包含JCL 数据定义的示例:
\n//JOB SMILEY\n//EXEC CCLG\n//SYSPARM DD DSN=USR.LOCAL.INCLUDE.STDIO,DISP=SHR\n//SYSIN DD *\nMAIN()\n{\nPRINTF("HELLO, WORLD\\N");\n}\n/*\n//\n
Run Code Online (Sandbox Code Playgroud)\n另请参阅有关破折号选项的 TUHS 线程,其中Andrew Warkentin引用了 JCL 样式key=value
选项。
就优缺点而言,dd
样式选项比典型的破折号样式有一大优势:所有程序参数都是明确的。\xe2\x80\x9c传统\xe2\x80\x9d命令,例如rm
混合破折号前缀的选项和文件名;由于在 Unix 风格的系统上文件名也可以以破折号开头,这意味着 \xe2\x80\x99 并不总是可以决定给定的参数是选项还是文件。这是可以解决的,但dd
样式选项完全避免了这个问题。(为了增加乐趣,GNUdd
支持非dd
样式选项,--help
并且--version
。)
归档时间: |
|
查看次数: |
2230 次 |
最近记录: |