#file #convert-file #unix #copy #file-copy #coreutil

app dd

Unix coreutil dd 的克隆

6 个版本 (3 个破坏性更新)

使用旧的 Rust 2015

0.4.0 2018 年 11 月 15 日
0.3.1 2018 年 11 月 11 日
0.2.0 2018 年 10 月 31 日
0.1.1 2018 年 10 月 30 日

#7 in #convert-file

MIT 许可证

9KB

dd: 转换并复制文件

概要

dd [操作数]... dd 选项

描述

根据操作数复制文件,并转换和格式化。

bs=BYTES

每次读取和写入最多 BYTES 字节(默认:512);覆盖 ibs 和 obs

cbs=BYTES

每次转换 BYTES 字节

conv=CONVS

按照逗号分隔的符号列表转换文件

count=N

只复制 N 个输入块

ibs=BYTES

每次读取最多 BYTES 字节(默认:512)

if=FILE

从 FILE 读取而不是 stdin

iflag=FLAGS

按照逗号分隔的符号列表读取

obs=BYTES

每次写入 BYTES 字节(默认:512)

of=FILE

写入 FILE 而不是 stdout

oflag=FLAGS

按照逗号分隔的符号列表写入

seek=N

在输出开始处跳过 N 个 obs 大小的块

skip=N

在输入开始处跳过 N 个 ibs 大小的块

status=LEVEL

将信息打印到 stderr 的 LEVEL;'none' 抑制所有信息,除了错误消息,'noxfer' 抑制最终的传输统计信息,'progress' 显示周期性传输统计信息

N 和 BYTES 可以后跟以下乘法后缀: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,以此类推 T, P, E, Z, Y。

CONV

每个 conv 符号可以是

ascii

从 EBCDIC 到 ASCII

ebcdic

从 ASCII 到 EBCDIC

ibm

从 ASCII 到备用 EBCDIC

block

用空格填充以 cbs-size 结尾的记录

unblock

将 cbs-size 记录中的尾随空格替换为换行符

lcase

将大写转换为小写

ucase

将小写转换为大写

sparse

对于 NUL 输入块,尝试寻求而不是写入输出

swab

交换每个输入字节的每一对

sync

用 NULs 填充每个输入块以 ibs-size;当与 block 或 unblock 一起使用时,用空格而不是 NULs 填充

excl

如果输出文件已存在,则失败

nocreat

不要创建输出文件

notrunc

不要截断输出文件

noerror

在读取错误后继续

fdatasync

在完成之前物理写入输出文件数据

fsync

同样,但还写入元数据

FLAG

每个 FLAG 符号可以是:-append 追加模式(仅适用于输出;建议 conv=notrunc)

direct

使用直接 I/O 数据

directory

除非是目录,否则失败

dsync

使用同步 I/O 数据

sync

同样,但还用于元数据

fullblock

累积完整的输入块(仅 iflag)

非阻塞

使用非阻塞I/O

noatime

不更新访问时间

nocache

请求丢弃缓存。另请参阅 oflag=sync

noctty

不要从文件分配控制终端

nofollow

不要跟随符号链接

count_bytes

将 'count=N' 视为字节计数(仅iflag有效)

skip_bytes

将 'skip=N' 视为字节计数(仅iflag有效)

seek_bytes

将 'seek=N' 视为字节计数(仅oflag有效)

信号

向正在运行的 'dd' 进程发送USR1信号会使它将I/O统计信息打印到标准错误,然后继续复制。

选项

--help 显示此帮助并退出 --version 输出版本信息并退出

作者

最初由Paul Rubin、David MacKenzie和Stuart Kemp编写。克隆版本仅通过查看Efron Licht的man页面编写 // 输入、输出和编码

依赖项

~2–10MB
~110K SLoC