我有一个简单的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个监视命令在单独的终端中执行然后到达退出语句?
答案 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-terminal
和gnome-terminal
。
此外,xterm
(和其他人)还支持设置窗口,位置,大小(称为几何体),颜色,字体以及许多其他功能的标题。