gnome-terminal的-e和-x选项之间有什么区别?


11

手册页状态:

-e, --command=STRING
Execute the argument to this option inside the terminal.
-x, --execute
Execute the remainder of the command line inside the terminal.

第二个示例中的“命令行”指的是什么?它的“剩余”是什么?您能否举例说明这两个选项是否不同?还是它们基本相同?


1
不准确,但发现这个superuser.com/questions/198015/...
rɑːdʒɑ

伟大的第一个问题。
贾里德·史密斯

Answers:


16

考虑:

gnome-terminal -x sleep 10m --version
gnome-terminal -e 'sleep 10m' --version

在第一个示例中,之后的所有内容-x均用于要执行的命令。因此,GNOME Terminal将sleep 10m --version作为命令运行。--version在这种情况下,它将成为GNOME Terminal运行的命令的一部分。

在第二个中,仅将to的单个字符串参数-e用作命令,其他都没有。因此,--version这实际上是GNOME终端的一个选项。

如果要运行一系列命令,第一个可能会更有用:

gnome-terminal -x bash -c 'command 1; command 2; ...'

这很难做到-e,因为整个命令必须是单个字符串,因此您必须引用整个内容。反过来,这意味着您需要更加小心引号和变量扩展,例如:

gnome-terminal -e "bash -c 'command 1 $foo; command 2; ...'"

在这里,$foo将被当前的shell扩展。

gnome-terminal -e 'bash -c "command 1 | awk '\''{print $NF}'\''"' 

'在命令字符串内部使用会涉及到烦人的报价处理。


5
我现在明白了。看来-x选项可能是为避免引号问题而设计的一种便捷方法。
stackzebra
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.