tar 使用短格式选项与旧样式

An *_*rer 4 command-line tar

在 GNU 手册中tar,有以下示例表明选项的顺序很重要:

tar -cfv collection.tar blues folk jazz
Run Code Online (Sandbox Code Playgroud)

在这种情况下,因为v放在 之后f,那么 tar 存档将被命名为“v”,并且如果它存在于当前目录中,tar将尝试添加collection.tar到存档中。但是,如果我-从一开始就省略了,则该命令会按我们希望的那样工作,尽管v放在f. 为什么?

Tho*_*mas 5

因为这是不同选项样式的工作方式,它们的行为也不同。


手册页说明了UNIX 或 short-option style,即以单个破折号为前缀的样式

任何数量的不带参数的选项都可以在一个破折号后聚集在一起,例如 -vkp。带参数的选项(无论是强制性的还是可选的),可以出现在此类集群的末尾,例如 -vkpf a.tar。


传统的样式选项的风格,在一个没有破折号:

在传统风格中,第一个参数是一组选项字母,所有后续参数为需要它们的选项提供参数。参数的读取顺序与选项字母相同。处理完所有选项后剩余的任何命令行词都被视为非可选参数:文件或存档成员名称。


如您所见,UNIX 或短选项样式需要在选项之后直接提供选项的参数。
传统风格的选项风格需要一个选项块和合适的参数以正确的顺序作为选项。