Bash - 在当前终端分离的另一个终端中启动命令的新实例

时间:2017-07-28 19:16:43

标签: linux bash shell watch

我有一个简单的bash脚本(test.sh)设置如下:

#!/bin/bash
args=("$@")
if [[ ( ${args[0]} = "check_capture" ) ]]; then
  watch -n 1 'ls -lag /home/user/capture0'
  watch -n 1 'ls -lag /home/user/capture1'
  watch -n 1 'ls -lag /home/user/capture2' 
  exit
fi

文件不断被写入这些目标位置捕获0,捕获1和捕获3.我希望能够在3个单独的终端上连续使用ls命令观察这些目录,并且一旦我运行此脚本(test.sh) )从当前的终端,我希望它退出。

现在它被每个等待阻塞,我知道这是一个阻塞bash命令,等待用户输入control-c。有没有办法可以让3个监视命令在单独的终端中执行然后到达退出语句?

1 个答案:

答案 0 :(得分:3)

您可以在后台启动终端的多个实例,每个实例都运行一个命令,如下所示:

if [[ ... ]]; then
    xterm -e 'watch -n 1 "ls -lag /home/user/capture0"' &
    xterm -e 'watch -n 1 "ls -lag /home/user/capture1"' &
    ...
    exit
fi

检查man xterm

  

<强> -e program [ arguments ... ]

     

此选项指定要在xterm窗口中运行的程序(及其命令行参数)。如果既没有-T也没有-n,它还将窗口标题和图标名称设置为正在执行的程序的基本名称   命令行。这必须是命令行上的最后一个选项。

同样的选项也适用于xfce-terminalgnome-terminal

此外,xterm(和其他人)还支持设置窗口,位置,大小(称为几何体),颜色,字体以及许多其他功能的标题。