📅  最后修改于: 2023-12-03 14:39:27.874000             🧑  作者: Mango
在Shell编程中,当我们运行脚本时,通常会出现一些错误,这些错误信息通常会通过标准错误输出(stderr)来传递。同时,脚本的运行结果通常会通过标准输出(stdout)输出到终端上。
如果我们想要将这些输出信息保存到文件中,可以使用Linux中的 tee
命令。
tee
命令的基本语法如下:
command | tee [ -a ] file
参数说明:
command
:需要执行的命令,可以是任意的Shell命令。-a
:表示在文件中追加输出内容。file
:需要保存输出信息的文件名。#!/bin/bash
echo "This is stdout" # 标准输出
echo "This is stderr" >&2 # 标准错误输出
# 将标准输出和标准错误输出保存到文件中
{ echo "Begin:" && ./command 2>&1 ; } | tee output.log
在上面的示例中,我们将标准输出和标准错误输出同时保存到了output.log文件中。其中2>&1
表示将标准错误输出转移到标准输出上,即输出到同一个管道中。
如果我们希望每次运行脚本时向日志文件追加输出,我们可以使用-a
选项。例如:
#!/bin/bash
echo "This is stdout" # 标准输出
echo "This is stderr" >&2 # 标准错误输出
# 每次运行时向日志文件output.log追加输出
{ echo "Begin:" && ./command 2>&1 ; } | tee -a output.log
这时,每次运行脚本时,输出信息都会追加到output.log文件的末尾。
注意,如果你使用了-a
选项,输出内容将不会覆盖文件中的旧内容。
在使用tee
命令时,还可以同时输出到多个文件中:
#!/bin/bash
echo "This is stdout" # 标准输出
echo "This is stderr" >&2 # 标准错误输出
# 将标准输出和标准错误输出同时保存到多个文件中
{ echo "Begin:" && ./command 2>&1 ; } | tee output1.log output2.log output3.log
这时,标准输出和标准错误输出都会同时保存到output1.log、output2.log、output3.log三个文件中。
通过使用tee
命令,可以将标准输出和标准错误输出同时输出到终端和文件中,方便我们进行日志记录和排错。同时,tee
命令还可以很方便地实现多个输出文件的方式。
以上便是在Bash中使用tee命令将标准输出和标准错误输出到文件和屏幕上的实现方式。