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