在 bash 终端窗口中执行多个命令

在 bash 终端窗口中执行多个命令

我想要从 bash 脚本打开一个LXTerminal窗口并执行几个命令,例如:

lxterminal -e "echo 'Hello' && sleep 5"

它甚至不读取第一个命令(因为我尝试反转顺序),并且无法使用简单的链command1 ; command2。显然,它可以使用单个命令。

有什么想法吗?提前谢谢您。

答案1

这是一个记录错误使用 lxterminal。您有其他可用的终端程序吗?xterm、gnome-terminal 等?lxterm(不同于 lxterminal)完全支持您要执行的操作,该操作已在该错误报告中讨论。我无法从我的环境中轻松访问该软件包,因此没有查看它。

一个功能齐全的解决方法是生成一个包含命令序列的 shell 脚本,并将传递给 lxterminal 的命令简单地作为该脚本。

例如,在脚本中进行此 lxterminal 调用的部分中,执行以下操作:

tmpScript=$(mktemp -u) || { echo "tmp file generation error!"; exit 1; }
echo '#!/bin/bash' > $tmpScript
echo "echo 'Hello' && sleep 5" >> $tmpScript
chmod +x $tmpScript
lxterminal -e "$tmpScript"

至少在我的环境中,这是可行的(fed 24;x86_64;lxterminal 版本 0.2.0,内核 4.6.5)。

除非 lxterminal 是你唯一的选择,否则它不是完成这项工作的合适工具。考虑到这个 bug 的年限,它可能永远都不会是合适的。xterm 通常是这类事情最受欢迎的选择,因为它具有可移植性和易用性,尽管我偏爱 konsole。

答案2

您可以使用任何其他可以运行此功能的终端。例如,在xterm以下终端中运行:

xterm -e "echo 'Hello' && sleep 5"

作为xtermX 的默认终端仿真器,这也应该是您的解决方案。

答案3

解决方案是使用 --command 修饰符来实现,如下所示; lxterminal --command cd ~/some/catalog && echo 'Hello'

相关内容