当sudo -Eualice之间没有空格时,“ sudo -Eualice”如何接受用户参数?

问题描述 投票:0回答:1

如果我运行以下命令:sudo -Eualice whoami

当标志和自变量之间没有空格时,命令如何接受用户自变量?我希望-Eualice被解释为-E -u -a -l -i -c -e

arguments command-line-interface sudo flags
1个回答
1
投票

sudo -Eualice仅遵循Unix命令行的常规约定。如果选项采用选项参数(例如-u选项采用username选项参数),则选项参数可以用空格与选项字母分隔(如-u alice中所示),或者它可以立即跟在选项字母后面,不带空格(例如-ualice中的内容。)>

对于不带参数的选项也有类似的约定。不带参数的选项(在这种情况下,例如-E)可以紧跟空格,或者紧随其后的是另一个选项,并且非空格序列可以继续多个选项。这就是让您执行ls -lsatr之类的事情的方法,而不必键入ls -l -s -a -t -r

在您的示例中,您同时使用了这两个空白跳过变体。 -E后面紧跟着u选项,紧接着是ualice选项参数。

没有其他选项,没有空格也不能跟随选项参数,因为那样会造成歧义,因此,如果要添加-P选项,则必须编写:

sudo -Eualice -P whoami

或者您可以将-P写在-u之前的位置:

sudo -EPualice whoami

比必须写起来更方便:

sudo -E -P -u alice whoami

但是,如果您是在其他人可能必须阅读该命令的环境中编写该命令(例如,在其他人将使用和维护的shell脚本中),那么您可能会决定使用较长的全空格分隔版本,因为它更易于阅读。

© www.soinside.com 2019 - 2024. All rights reserved.