为初学者解释的 Linux dd 命令(8 个示例)
在此页
- Linux dd 命令
- Q1。如何使用dd命令更改输入文本的大小写?
- Q2。如何改为读取和写入文件?
- Q3。如何在阅读输入时跳过文本?
- Q4。如何交换输出中的每对输入字节?
- Q5。如何使 dd 仅在输出文件不存在时才工作?
- Q6。如何确保输出文件在附加模式下更新?
- Q7。如何使dd不创建输出文件?
- Q8。如何控制stderr打印的信息级别?
- 结论
有时,在 Linux 中使用命令行时,您可能需要执行复制操作,以便在将数据/文本写入目标之前对其进行格式化。一个简单的示例可能是从文件复制文本并将大小写更改后的版本(从低到高,或从高到低)写入目标文件。
如果您一直在寻找一种方法来执行此操作,您会很高兴知道存在一个命令行实用程序 - 称为 dd - 专为此目的而构建。在本教程中,我们将使用一些易于理解的示例来讨论该工具的工作原理。但在此之前,值得一提的是,此处提到的所有示例都已在 Ubuntu 18.04LTS 上进行了测试。
Linux dd命令
简而言之,dd 命令可让您复制和转换文件。该工具提供了一些操作数,您可以使用它们来指定所需的格式类型。下面是其手册页中描述的命令的通用语法:
dd [OPERAND]...
dd OPTION
下面的问答式示例应该让您对 dd 命令的工作原理有一个很好的了解。
Q1。如何使用dd命令更改输入文本的大小写?
假设你有几行文字是小写的,需求是快速将它们转换成大写。您可以使用 conv 命令行选项(以 ucase 作为其值)来执行此操作。
这是一个例子:

上面的屏幕截图显示了命令以及输入文本。组合键 Ctrl+d 用于告诉 dd 已完成输入,一旦完成,该命令就会产生以下输出:

因此您可以看到输入文本已从小写转换为大写。最后三行只是一些操作相关的统计信息。
注意:同样,您可以使用值 lcase 将大写文本转换为小写文本。
Q2。如何读取和写入文件呢?
在上面的第一个例子中,我们通过 stdin(标准输入)输入文本。但是,您始终可以使用输入和输出文件。要指定输入和输出文件的名称,请使用 if 和 of 命令行选项。
例如,如果你想将file1中的文本转换成大小写,然后写入file2,那么你可以通过以下方式进行:
dd if=file1 of=file2 conv=ucase

Q3.如何在阅读输入时跳过文本?
如果需要,您可以要求 dd 在读取输入文本时跳过一些初始字节。这可以使用需要数值的 skip 选项来完成。例如,如果此值为 N,则 dd 将在输入开始时跳过 N 个 ibs 大小的块。这将我们带到 ibs,它也是另一个命令行 dd 选项,其值指定工具一次读取的字节数(默认为 512)。
所以假设,你想跳过输入文件的前 4 个字节,那么你应该首先将 ibs 设置为 4,然后使用 1 作为 skip 的值。这将确保该工具在读取输入文件时将跳过 1 个 4 字节的块。

所以您可以看到文本 hey, 在读取 file1 时被跳过了——这就是它没有出现在 file2 中的原因。
Q4.如何交换输出中的每对输入字节?
如果有这样的要求,您还可以使用 dd 来交换每对输入字节。这可以通过使用 swab 作为 conv 命令行选项的值来实现。下面的截图会让事情更清楚:

Q5.如何使 dd 仅在输出文件不存在时才工作?
如果要求 dd 命令在输出文件已经存在时不应执行任何操作,则可以使用 conv 选项的 excl 值强制执行此条件。
以下屏幕截图显示了实际用例:

Q6.如何确保输出文件在附加模式下更新?
默认情况下,dd 只是覆盖输出文件(如果存在)。但是,如果您希望它改为附加文本,请将值 append 用于 oflag FLAG,将 notrunc 用于 conv 选项。
例如:
dd if=file1 of=file3 oflag=append conv=notrunc
这是上面的命令:

Q7.如何使dd不创建输出文件?
如果需要,如果命令中给定的文件不存在,您还可以强制 dd 命令不创建输出文件。这可以通过使用 conv 命令行选项的 nocreat 值来完成。
例如:

Q8.如何控制stderr打印的信息级别?
如果需要,您还可以限制命令在 stderr 上打印的信息量。这可以使用 status 命令行选项来完成。例如,如果您想抑制除错误消息以外的所有内容,您可以将值 none 传递给此命令行选项:
dd if=file1 of=file3 status=none
其他可用值是 noxfer 和 progress。这是手册页关于状态选项的内容:
status=LEVEL
The LEVEL of information to print to stderr; 'none' suppresses
everything but error messages, 'noxfer' suppresses the final
transfer statistics, 'progress' shows periodic transfer statis?
tics
结论
在探索所有 dd 命令的功能时,本教程中讨论的示例只是皮毛。仅供参考,您可以使用该工具创建虚拟文件系统以及硬盘驱动器或系统分区的备份。有关 dd 的更多信息,请访问其手册页。