在 gnu/Linux 中,我想将所有命令输出记录到一个特定文件中。在终端说,我正在输入
echo "Hi this is a dude"
它应该以前面指定的文件名打印,而不在每个命令中使用重定向。
在 gnu/Linux 中,我想将所有命令输出记录到一个特定文件中。在终端说,我正在输入
echo "Hi this is a dude"
它应该以前面指定的文件名打印,而不在每个命令中使用重定向。
$ script x1
Script started, file is x1
$ echo "Hi this is a dude"
Hi this is a dude
$ echo "done"
done
$ exit
exit
Script done, file is x1
那么,文件 x1 的内容为:
Script started on Thu Jun 13 14:51:29 2013
$ echo "Hi this is a dude"
Hi this is a dude
$ echo "done"
done
$ exit
exit
Script done on Thu Jun 13 14:51:52 2013
您可以使用基本的 shell 脚本轻松编辑自己的命令和开始/结束行(grep -v
特别是如果您的 Unix 提示符具有独特的子字符串模式)
从 shell 启动的命令继承文件描述符以用于 shell 的标准输出。在典型的交互式 shell 中,标准输出是终端。您可以使用以下exec
命令更改它:
exec > output.txt
在该命令之后,shell 本身会将其标准输出写入一个名为 output.txt 的文件,并且它生成的任何命令都将执行同样的操作,除非另有重定向。您始终可以使用“恢复”输出到终端
exec > /dev/tty
请注意,您的 shell 提示符和您在提示符下键入的文本继续显示在屏幕上(因为 shell 将这两者都写入标准错误,而不是标准输出)。
如果您想查看输出并将其写入文件(例如供以后分析),则可以使用该tee
命令。
$ echo "hi this is a dude" | tee hello
hi this is a dude
$ ls
hello
$ cat hello
hi this is a dude
tee 是一个有用的命令,因为它允许您存储进入其中的所有内容并将其显示在屏幕上。对于记录脚本的输出特别有用。
{ command1 ; command2 ; command3 ; } > outfile.txt
输出重定向可以在 bash 中实现>
:有关 bash 重定向的更多信息,请参见此链接。
您可以运行任何带有移植输出的程序,其所有输出都将保存到一个文件中,例如:
$ ls > out
$ cat out
Desktop
Documents
Downloads
eclipse
Firefox_wallpaper.png
...
所以,如果你想用移植的输出打开一个新的 shell 会话,就这样做吧!:
$ bash > outfile
将启动一个新的 bash 会话,将所有标准输出移植到该文件。
$ bash &> outfile
将所有 stdout 和 stderr 移植到该文件(这意味着您将不再在终端中看到提示)
例如:
$ bash > outfile
$ echo "hello"
$ echo "this is an outfile"
$ cd asdsd
bash: cd: asdsd: No such file or directory
$ exit
exit
$ cat outfile
hello
this is an outfile
$
$ bash &> outfile
echo "hi"
echo "this saves everythingggg"
cd asdfasdfasdf
exit
$ cat outfile
hi
this saves everythingggg
bash: line 3: cd: asdfasdfasdf: No such file or directory
$