检测/重定向所有终端命令的输出

时间:2013-06-23 00:44:48

标签: bash unix

如何使用Unix shell执行此操作?

$ startRedirecting.sh
$ ls
abc.txt def.txt
$ pwd
/home/bob/demo
$ stopRedirecting.sh
$ cat /someDir/someOutput.txt
abc.txt def.txt
/home/bob/demo

如何编写startRedirecting.sh以确保将以下每个命令的输出重定向到/someDir/someOutput.txt

Ruby / python脚本也可以。

3 个答案:

答案 0 :(得分:2)

@ Celada的答案是最好的。拥有输出的日志文件而不记录产生输出的命令似乎很奇怪。

但是,您可以达到您的具体要求:

$ exec 3>&1
$ exec > >(tee output.log)
$ pwd
/home/jackman
$ whoami
jackman
$ exec >&3
$ cat output.log 
/home/jackman
jackman

答案 1 :(得分:1)

听起来您不希望输出重定向,而是发送到终端和日志文件。您是否尝试过使用script

答案 2 :(得分:1)

如果您只是想将一系列命令的输出重定向到文件,那么之后“关闭”重定向,您可以试试这个

$ exec >file
$ ls
$ pwd
$ exec >/dev/stdout

注意:

  • exec >file:将STDOUT重定向到文件以获取后面的所有命令
  • exec >/dev/stdout:将STDOUT重定向回STDOUT以执行后面的所有命令