ImH*_*ere 53 shell documentation options
有一些实用程序接受--(双破折号)作为“选项结束”的信号,当文件名以破折号开头时需要:
$ echo "Hello World!" >-file
$ cat -- -file
Hello World!
$ cat -file # cat - -file fails in the same way.
cat: invalid option -- 'f'
Try 'cat --help' for more information.
Run Code Online (Sandbox Code Playgroud)
但是其中一些实用程序在手册页中没有显示这样的选项。
该man页面cat没有一个文件的使用(或有效性)--的说法在任何OS'es的。这并不意味着是 Unix-Linux 的火焰战争,它是一个有效的,而且我相信,有用的关注。
无论是cat,mv,ed(我相信许多人)文件中的手册页这样的选择,我可以找到。
请注意,这./-file是使用--. 例如,source(dot) 命令(并写为.)(通常)不适用于--参数:
$ echo 'echo "Hello World!"' >-file
$ . ./-file
Hello World!
$ . -file
ksh: .: -f: unknown option
ksh: .: -i: unknown option
ksh: .: -l: unknown option
ksh: .: -e: unknown option
Usage: . [ options ] name [arg ...]
$ . -- -file # works in bash. Not in dash, ksh, zsh.
ksh: .: -file: cannot open [No such file or directory]
Run Code Online (Sandbox Code Playgroud)
sch*_*ily 74
这是所有实用程序的 POSIX 要求,有关更多信息,请参阅POSIX 第 12.02 章,指南 10:
第一个--不是选项参数的参数应该被接受为指示选项结束的分隔符。任何后续参数都应视为操作数,即使它们以
'-'字符开头。
POSIX 建议所有实用程序都遵循这些准则。
有一些例外,例如echo(阅读 OPTIONS)。而特别内建不遵循的准则(如break,dot,exec,等):
一些特殊的内置程序被描述为符合 XBD 实用程序语法指南。对于那些不是,实用程序描述默认值中将“--”识别为要丢弃的第一个参数的要求不适用,并且符合要求的应用程序不应使用该参数。
目的是记录所有不遵循 POSIX 手册页指南的命令,来自POSIX 章节 12.02第三段:
一些标准实用程序不符合所有这些准则;在这些情况下,选项部分描述了偏差。
由于该catPOSIX手册页文档的选项部分没有偏差,但预计它接受--作为一个有效的论据。
仍然可能有(错误的)实现没有遵循指南。
特别是,大多数GNU 核心实用程序都遵循此准则
对于具有 GNU 用户空间的 Linux 操作系统:Debian、RedHat、Ubuntu、Mint 等(不是某些 BSD),GNU 通用实践很重要:
您问题中的实用程序列表的共同点是它们都是 GNU,实际上它们都是 GNU coreutils。在完整的GNU的coreutils名单是更长的时间。
大多数来自 GNU 的实用程序共享一个通用的用户界面和一组通用的基本命令行选项,例如--help,--version以及--作为选项结束信号的使用。
info common和GNU 网页上的条目包含:
所有这些程序都提供某些选项。不是为每个程序编写相同的描述,而是在此处进行描述。(事实上,每个 GNU 程序都接受(或应该接受)这些选项。)
'--'
分隔选项列表。后面的参数(如果有)被视为操作数,即使它们以“-”开头。例如,'sort -- -r' 从名为 -r 的文件中读取。
一个更精确(但不太容易解释和记忆)的命令--是(请准确复制)info -- cat --。