界面打印和重定向同时实现
在 Shell 中,若要让程序运行时既在界面打印输出内容,又将其重定向到文件,可使用tee
命令达成此目的。tee
命令的作用是从标准输入读取数据,然后将这些数据同时输出到标准输出(也就是屏幕)和指定的文件中。
基本语法
command | tee [选项] 文件名
command
:代表你要运行的程序或命令。|
:是管道符号,它的功能是把前一个命令的输出作为后一个命令的输入。tee
:该命令会把接收到的输入同时输出到屏幕和指定文件。[选项]
:tee
命令有一些可选参数,例如-a
,其作用是追加内容到文件而非覆盖文件原有内容。文件名
:指定输出内容要被保存到的文件名称。
示例
示例 1:将ls
命令的输出同时显示在屏幕并保存到文件
ls | tee files_list.txt
此命令会把当前目录下的文件和文件夹列表显示在屏幕上,同时将这些信息保存到files_list.txt
文件里。
示例 2:运行一个脚本并把输出同时显示和保存,同时使用追加模式
假设你有一个名为test.sh
的脚本,你可以用以下命令来运行它,并把输出同时显示在屏幕和保存到output.log
文件,若文件已存在,会追加内容而不是覆盖:
./test.sh | tee -a output.log
处理标准错误输出
如果你想要同时处理标准输出和标准错误输出,可以先把标准错误输出重定向到标准输出,再使用tee
命令。例如:
your_command 2>&1 | tee output.log
这里的your_command
是你实际要运行的命令,2>&1
的作用是把标准错误输出重定向到标准输出,这样标准输出和标准错误输出都会被tee
命令捕获,然后同时显示在屏幕和保存到output.log
文件中