如何阅读Unix用法


16

我进行了一些搜索,但是找不到关于Unix用法工作方式的文档。我知道一些(主要是通过反复试验),但是,例如,我怎么知道

/usr/bin/ls  [-aAbcCdeEfFghHilLmnopqrRstuvVx1@] [file]...

意味着您可以包括多个选项?那是,

ls -la

什么是用法语法的文档在哪里?


POSIX确实对如何格式化用法/帮助显示有发言权,但是除了核心实用程序(GNU)之外,很少有人坚持使用它。
Tim Post

@Tim,我那里没什么用。
sixtyfootersdude

(请不要将其视为RTFM帖子,它是更有趣的评论),您实际上可以运行“ man man”并向下滚动以查找语法准则。
ThinkBonobo 2014年

Answers:


34

确实没有RFC或其他任何东西,但是如果您遵循以下准则,则不会太过离谱:

  1. 尖括号中的任何内容均< >表示需要该选项:
    <foo>

  2. 方括号中的任何内容[ ]表示该选项是可选的:
    [bar]

  3. 用管道分隔的选项|表示有效值:
    --baz=one|two|three

  4. 单字母选项以一个破折号开头:
    -a

  5. 多字母选项以两个破折号开头:
    --foo-bar

  6. (基于#4)带有多个字母的单破折号通常表示那些单独的单字母选项而不是多字母选项的并集。并非所有命令都支持这种联合。示例:
    -aAbBcC-a -A -b -B -c -C


1
男人男人还是男人5男人
mpez0 2010年

1
没有RFC,但是有POSIX规范,其中包括Utility Conventions
Wildcard

6

手册页没有严格的结构,但以下内容涵盖了大多数命令。

BSD文件格式手册MANUAL PAGES(5)的 “ MANUAL PAGE SYNTAX”部分中:

在手动页面语法中,任何普通文本字体都是必需的文本。粗体字表示的是标志或子命令。带下划线的是用户指定的参数,例如文件名。

用方括号括起来的任何参数都被认为是可选的。例如,[filename]表示可选的filename参数。

由垂直分隔符(|)分隔的标志,参数或子命令是互斥的。例如,如果-a打开一个选项,而-b关闭该选项,则此命令的语法可能是-a | -b。

在某些情况下,您甚至可能会看到用括号括起来并由垂直分隔符分隔的整个参数组。这是一种显示命令具有多个有效语法的方式。在其他手册页中,这通过在摘要中包含多行来表示,每行以命令名称开头。分隔的格式更常见(且更具可读性),但对于语法特别复杂的命令并不总是可能的。

最后,最重要的符号约定是省略号(...)的使用。这表明此时可以添加其他参数。


5

使用线没有遵循任何一致的规定。

您应该使用man lsinfo ls以获得更一致的信息水平。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.