我的目标是将脚本的所有输出记录到脚本要创建的目录中。
例如,我有:
~/.abc.sh:
#! /bin/bash
rails new myapp
Run Code Online (Sandbox Code Playgroud)
当我跑...
cd ~/code
. ~/.abc.sh
Run Code Online (Sandbox Code Playgroud)
...这将在目录中创建一个新的 Rails 应用程序~/code/myapp。
当 Rails 创建应用程序时,它会输出大量文本,我想捕获这些文本并将其存储在与rails新创建的命令相同的目录中的日志文件中。我也想在终端中显示该文本。
我该怎么做?
Lek*_*eyn 31
您可以使用该tee命令:
command | tee /path/to/logfile
Run Code Online (Sandbox Code Playgroud)
不写入外壳的等效项是:
command > /path/to/logfile
Run Code Online (Sandbox Code Playgroud)
如果要附加 ( >>) 并在 shell 中显示输出,请使用以下-a选项:
command | tee -a /path/to/logfile
Run Code Online (Sandbox Code Playgroud)
请注意,管道将仅捕获 stdout,带有tee. 如果要记录错误(来自 stderr),请使用:
command 2>&1 | tee /path/to/logfile
Run Code Online (Sandbox Code Playgroud)
这意味着:运行command并将 stderr 流 (2) 重定向到 stdout (1)。这将与tee应用程序一起传递到管道。
| 归档时间: |
|
| 查看次数: |
65699 次 |
| 最近记录: |