记录gnome终端输出到文件

4

我有一个bash脚本,在其中我使用

gnome-terminal -e /folder/script1 &
gnome-terminal -e /folder/script2 &

我希望打开两个新终端并同时执行两项任务。

我想知道是否有可能通过类似的方式记录这些脚本的输出:

gnome-terminal -e /folder/script1 2>&1 | tee script1.log

谢谢你。

你试过那个吗?另外,2>&1是旧的语法。我更喜欢&> - Blender
1
@Blender 2>&1 是可移植的语法,而 &> 则是 Bash 的扩展。 - Kevin
是的,我尝试过了,但是它没有起作用。 - Kynikos
2个回答

7

尝试:

gnome-terminal -e 'bash -c "/folder/script1 2>&1 | tee /tmp/script1.log"'

说明:

gnome-terminal -e /folder/script1 2>&1

打开gnome终端,执行/folder/script1,并将gnome终端命令的stderr重定向到stdout。要将script1的stderr重定向到stdout,我们需要一个shell。同样适用于| tee /tmp/script1.log


不错!+1 但是我可以知道为什么需要显式指定bash -c吗?脚本内的shebang不足以说明吗? - Jasonw
1
@Jasonw:我在我的答案中添加了一份说明。希望它有所帮助。 - unutbu
@unutbu:当涉及到变量时,这个命令有用吗?例如, $variable = YES gnome-terminal -e 'bash -c "/folder/script1 $variable 2>&1 | tee /tmp/script1.log"' - Kynikos
1
尝试: variable=YES gnome-terminal -e "bash -c '/folder/script1 $variable 2>&1 | tee /tmp/script1.log'"。(反转单引号和双引号的顺序。) - unutbu

1

你也可以尝试在调用脚本的顶部附近添加类似这样的内容。这样,你就不必使用 | tee 命令了。

exec >> ${LOGNAME} 2>&1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接