如何将输出重定向到屏幕以及文件?
我的目标是将脚本中的所有输出记录到脚本要创建的目录中。
例如,我有:
~/.abc.sh
:
#! /bin/bash rails new myapp
当我跑…
cd ~/code . ~/.abc.sh
…将在目录~/code/myapp
创建一个新的Rails应用程序。
当Rails创建一个应用程序时,它会输出我想要捕获的大量文本,并将其存储在rails
命令新创建的同一目录中的日志文件中。 我也想在终端中显示该文本。
我该怎么做呢?
您可以使用tee
命令:
command | tee /path/to/logfile
没有写入shell的equivelent将是:
command > /path/to/logfile
如果要追加( >>
)并在shell中显示输出,请使用-a
选项:
command | tee -a /path/to/logfile
请注意,管道仅捕获stdout,stderr的管道不会处理错误。 如果要记录错误(来自stderr),请使用:
command 2>&1 | tee /path/to/logfile
这意味着:运行command
并将stderr流(2)重定向到stdout(1)。 这将通过tee
应用程序传递给管道。