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

Cod*_*lue 4 terminal shell-script

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

gnome-terminal
Run Code Online (Sandbox Code Playgroud)

打开一个新终端。

另外,如果我这样做

gnome-terminal -e myprogram1
Run Code Online (Sandbox Code Playgroud)

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

gnome-terminal -e myprogram2
Run Code Online (Sandbox Code Playgroud)

因为它会打开一个新的终端。

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

gnome-terminal -e scriptToExecuteMyPrograms1And2
Run Code Online (Sandbox Code Playgroud)

slm*_*slm 8

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

$ gnome-terminal -e "bash -c '<cmd1>;<cmd2>;exec $SHELL'"
Run Code Online (Sandbox Code Playgroud)

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

例如:

$ gnome-terminal -e "bash -c 'vim;vim;exec $SHELL'"
Run Code Online (Sandbox Code Playgroud)

运行vim,如果我关闭第一个vimvim则启动第二个。当第二个关闭时,我被留在终端提示处。

  • @CodeBlue - `exec $SHELL` 在不创建新进程的情况下替换 shell。鉴于没有提示显示,在每个命令开始之前查看命令提示符在这里是不可行的。Bash 通过 `-e` 运行,它通常会显示一个提示,但在这种情况下,我们告诉 Bash 运行命令,`-c`,所以 `cmd#1` 运行,当它完成时,`cmd# 2` 由 Bash 运行。当 `cmd#2` 运行时,我们告诉 Bash 将自身(`exec ...`)替换为 `$SHELL`,即 `/bin/bash`。`exec $SHELL` 是第一次实际显示提示。 (2认同)