打开带有多个选项卡的终端并执行应用程序


16

我是linux shell脚本的新手。我想编写一个shell脚本,它将打开带有多个选项卡的终端;它应该在每个标签中运行rtsp客户端应用。

为此,我在这个论坛上经历了一个问题,并尝试像下面这样编写代码,

tab="--tab-with-profile=Default -e "
cmd="java RunRTSPClient"
for i in 1 2 3 4 5
   do
#   
   foo="$foo $tab $cmd"         
   done
gnome-terminal $foo
exit 0

它正在运行,并打开带有选项卡的终端窗口,但突然它将关闭。我没有任何错误。

Answers:


13

使用脚本的此变体来执行所需的操作:

#!/bin/bash

tab="--tab-with-profile=Default"
cmd="bash -c 'java RunRTSPClient';bash"
foo=""

for i in 1 2 3 4 5; do
      foo+=($tab -e "$cmd")         
done

gnome-terminal "${foo[@]}"

exit 0

通常,如下所示的脚本:

#!/bin/bash

tab="--tab"
cmd="bash -c '<command-line_or_script>';bash"
foo=""

for i in 1 2 ... n; do
      foo+=($tab -e "$cmd")         
done

gnome-terminal "${foo[@]}"

exit 0

将打开一个新的终端,其中<command-line_or_script>每个标签中都有n个标签。例如,当您想打开一个带有某些选项卡的终端时,该解释器位于特定路径(cd /path在以上脚本中使用),这可能非常有用。

另外,请阅读man bash这篇文章这篇文章以了解更改。

我已经测试了这些脚本,它们可以工作。


就像我告诉过的一样,它只是显示和关闭,也没有错误。如何解决此问题?
user172001 2013年

好的,现在它显示带有选项卡的窗口,但没有在任何选项卡中运行该应用程序。并向我解释一下这是如何解决窗口显示问题的。
user172001 2013年

@ user172001现在可以使用了,检查新的编辑!
RaduRădeanu13年

这很酷。+1
Nishant

1
我尝试添加cmd1 && cmd2到命令字符串中以运行多个命令。它似乎只运行第一个。我在做些公然的错吗?
byxor

7

我想出了自己的答案。我认为这是一种更好的方法,因为:

  1. 我能理解 我不是一个bash专家,没有解释在什么是目前比较流行的答案给出...${}-e,或者@
  2. 它使您可以轻松自定义每个选项卡的标题和命令
  3. 我说这容易理解吗?

请注意,; $SHELL在每个gnome-terminal命令的末尾,是使终端窗口保持打开状态的内容。否则它将立即关闭。

title1="tab 1"
title2="tab 2"
title3="tab 3"

cmd1="cd /etc"
cmd2="cd ~/Documents"
cmd3="cd /usr/local"

gnome-terminal --tab --title="$title1" --command="bash -c '$cmd1; $SHELL'" \
               --tab --title="$title2" --command="bash -c '$cmd2; $SHELL'" \
               --tab --title="$title3" --command="bash -c '$cmd3; $SHELL'" 
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.