如何在新打开的终端中执行多个命令?

如何在新打开的终端中执行多个命令?

我有一个脚本,我想用它来打开新终端并在其中键入命令。像这样的命令

gnome-terminal

打开一个新终端。

另外,如果我这样做

gnome-terminal -e myprogram1

它将在新打开的终端中执行 myprogram1。但是,如果 myprogram1 完成后我想执行 myprogram2 该怎么办?我不能做类似的事情

gnome-terminal -e myprogram2

因为它将打开一个新终端。

有没有办法在脚本中指定我想要在同一个新终端中执行这myprogram1两者?myprogram 2或者我是否必须创建一个新脚本并执行类似的操作

gnome-terminal -e scriptToExecuteMyPrograms1And2

答案1

你可以像这样完成你想要的事情:

$ gnome-terminal -e "bash -c '<cmd1>;<cmd2>;exec $SHELL'"

这将打开<cmd1>,完成后,它将打开<cmd2>,最后它会让您进入命令提示符exec $SHELL

例如:

$ gnome-terminal -e "bash -c 'vim;vim;exec $SHELL'"

运行vim,如果我关闭第一个,则启动vim第二个。vim当第二个关闭时,我会看到终端提示符。

答案2

尝试gnome-terminal -e "myprogram1; myprogram2"。您也可以尝试用 a&&代替;.

答案3

如果您想在启动终端后执行许多命令,那么更好的方法是编写一个函数,导出该函数并调用该函数。创建一个类似于下面给出的 shell 脚本来适合您的应用程序:

my_function(){
    command1
    command2
    .
    .
    .
    commandn
}

export -f my_function

$(x-terminal-emulator -e "bash -c 'my_function'")

您还可以拥有多个功能。但是,那么您将不得不编写另一个函数,其行为类似于 main ,即调用所有其他函数。因此,您将终端设置为执行此主函数,它将处理其余的事情。

答案4

您可以将程序放入~/.bashrc文件中

这适用于巴什shell(如果您正在使用它)。每当您通过 tty 或 gnome-terminal 打开终端时,它都会执行。

基本上,您只需在文件末尾添加要执行的程序即可。

相关内容