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

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

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

[me@localhost]$ ls -isw 40 /usr

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

哪一个是正确的?

答案1

共有三个参数:-isw40/usr

当解析命令行参数时,GNUls实用程序将看到三个选项-i-s, 和-w

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

最后/usr是一个操作数(既不是选项也不是选项参数)。

一个论点是

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

这告诉我们这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可以是 option 的选项参数-i(或者w可以是 的选项参数-s),并且40和都/usr可以是操作数。

相关内容