什么是“非选项参数”?

erc*_*rch 9 command-line options arguments

我试图理解info who但完全失败了“非选项参数”这个词。有人可以用简单的话或例子向我解释这个词吗?

更新:来自“信息谁”:

如果没有给定非选项参数,`who' 会为当前登录的每个用户打印以下信息:登录名、终端线路、登录时间和远程主机名或 X 显示。

如果给出一个非选项参数who' uses that instead of a default system-maintained file (often/var/run/utmp' 或/etc/utmp') as the name of the file containing the record of users logged on. /var/log/wtmp' 通常作为参数提供给 `who' 以查看谁以前登录过。

如果给出两个非选项参数who' prints only the entry for the user running it (determined from its standard input), preceded by the hostname. Traditionally, the two arguments given are我是我吗,就像“我是谁”一样。

我 [想] 知道参数和选项之间的区别,但这 [再次] 否定了很多。

Gil*_*il' 9

术语不是完全固定的,因此不同的文档使用不同的术语,或者更糟的是,相同的术语具有不同的含义。您正在阅读的手册页中的术语是常见的。它是POSIX标准中使用的一种。简而言之,命令后面的每个单词都是一个参数,以 开头的参数-是选项。

争论

在 shell 命令语言中,传递给实用程序的参数相当于由 exec 函数之一创建的 argv 数组中的单个字符串。参数是命令名称后面的选项、选项参数或操作数之一。

操作数

命令的参数,通常用作向实用程序提供完成其处理所需的信息的对象。操作数通常遵循命令行中的选项。

选项

命令的参数,通常用于指定实用程序默认行为的更改。

“Utility”就是通常所说的“command”(标准使用“ utility ”这个词来避免与“command”的含义产生歧义,包括参数甚至复合shell命令)。

大多数命令遵循标准实用程序参数语法,其中选项以 a -(破折号又名减号)开头。所以一个选项类似于-a(短选项,遵循 POSIX 指南)或--all(长选项,来自 GNU 的扩展)。非选项参数是不以 开头的参数-,或者仅包含-(将其who视为文字文件名,但许多命令将其视为标准输入或标准输出)。

此外,某些选项本身也有参数。这个参数可以通过几种方式传递:

  • 对于单字母选项,在实用程序的同一参数中:foo -obar:bar是单字母选项的参数-o
  • 在 GNU 长参数语法中,在同一个参数中,用等号分隔:foo --option=bar
  • 在单独的参数中:foo -o barfoo --option bar。如果选项-o(或--option)接受一个参数,则bar是选项-o(或--option)的参数。如果-o(或--option)不带参数,则bar是一个操作数。

这是一个更长的例子:

tail -n 3 myfile
Run Code Online (Sandbox Code Playgroud)

-n是一个选项,3是选项的参数-nmyfile是一个操作数。

术语不同,因此您可能会发现在 POSIX 使用操作数的意义上使用参数的文档。但是“非选项论证”比这两个术语更常见。


Jos*_* R. 5

问题是,选项(或开关或标志,无论你喜欢怎么称呼它们)也算作参数。实际上,您在命令名称之后提供的任何内容都构成了命令的参数(例如,shell 使用的结构如重定向除外)。

您的程序/脚本将所有内容作为参数一起接收,并且需要将选项参数(作为选项的参数)与其他参数分开……您猜对了!……非选项参数

所以信息页面所说的是,如果who收到一个不是选项的参数,它会认为它是它为登录信息查询的默认文件的替代方案。

  • 如果我没有目睹 `info who`,我永远不会相信有人会使用“无非选项参数”这个词。真是太蹩脚了。 (3认同)