![gnome-terminal 的 -e 和 -x 选项有什么区别?](https://linux22.com/image/904248/gnome-terminal%20%E7%9A%84%20-e%20%E5%92%8C%20-x%20%E9%80%89%E9%A1%B9%E6%9C%89%E4%BB%80%E4%B9%88%E5%8C%BA%E5%88%AB%EF%BC%9F.png)
手册页指出:
-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
考虑:
gnome-terminal -x sleep 10m --version
gnome-terminal -e 'sleep 10m' --version
在第一个示例中,后面的所有内容-x
都用于执行命令。因此 GNOME 终端将sleep 10m --version
作为命令运行。--version
在这种情况下,成为 GNOME 终端要运行的命令的一部分。
在第二种情况下,只使用单个字符串参数-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}'\''"'
'
在命令字符串内部使用会涉及烦人的引号处理。