`ls -isw 40 /usr` 中有多少个参数?

Taa*_*ous 0 shell arguments

此命令行中有多少个参数?

[me@localhost]$ ls -isw 40 /usr
Run Code Online (Sandbox Code Playgroud)

有人说只有一个,/usr因为40wswitch的参数而不是命令,有人说是两个,因为除了命令和开关之外的所有东西都被认为是一个参数,询问“命令的参数”或“开关的参数”。

哪一个是正确的?

Kus*_*nda 9

有三个参数:-isw40/usr

当解析命令行参数,GNUls工具会看到三个选项-i-s,和-w

40是一个选项参数-w选项。

所述/usr在端部是一个操作数(均未一种选择,也不是一个选项参数)。

一个论点是

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

这就是告诉我们ls -isv 40 /usr是一个带有三个参数的命令。如果ls是我们自己编写的 shell 脚本,那么该$#脚本中特殊变量的值将3是以特定方式调用脚本时的值。

一个选项是

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

不带选项参数选项可以与以下选项一起编写为单个参数,即-i -s -w 40可以写为-isw 40. 该命令ls -i -s -w 40 /usr将有五个参数。

一个选项参数是

遵循某些选项的参数。在某些情况下,选项参数包含在与选项相同的参数字符串中 - 在大多数情况下,它是下一个参数。

所以,-w 40可以写成-w40,在这种情况下,命令ls -isw40 /usr只有两个单独的参数。

一个操作数是

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

这里的定义来自POSIX

还要注意以下可能是真的,如果ls公用事业有完全不同的语义: sw本来是一个选项参数的-i选项(或者w可能是一个选项参数-s),并都40/usr本来的操作数。