如何在 Linux 中使用 "tee" 和 "source" 命令?
How to use "tee" with "source" command in Linux?
在 Linux 我正在使用“tee”来捕获“source”命令的输出并打印它输出日志文件,但失败了。我使用的命令是这样的:
source ./my_run.sh 2>&1 | tee -i my_run_log
my_run.sh 的目的是“制作”一些编译工作,以及一些例行工作,如 cd、rm 和 svn update。 my_run.sh的内容如下:
make clean
cd ..
rm ./xxx
svn up -r 166
cd ./aaa/
sed -i -e ......
make compile
make run
但是,当我 运行 它时,“tee” 根本不起作用,并且根本不给我日志文件。为了验证整个环境是否良好,我做了一个更简单的测试:
ll 2>&1 | tee -i log
并且在这个更简单的场景中,“tee” 工作得非常好,并按我的预期打印出 "log"。
谁能帮我找出我的问题出在哪里?
顺便提一句,
我正在开发 Red Hat Linux(5.9 版),使用 bash shell。
提前致谢!
更多评论:
我做了一些更多的测试,发现只要 my_run.sh 脚本里面有“make xxx”的东西,那么“ tee" 将失败。 似乎 tee 不喜欢 make。任何解决方案?
问题已解决;非常感谢@thatotherguy 带领我找到了解决方案。日志输出实际上被make clean过程删除了。修复 makefile 中的 clean 内容后,一切都很好。
在 Linux 我正在使用“tee”来捕获“source”命令的输出并打印它输出日志文件,但失败了。我使用的命令是这样的:
source ./my_run.sh 2>&1 | tee -i my_run_log
my_run.sh 的目的是“制作”一些编译工作,以及一些例行工作,如 cd、rm 和 svn update。 my_run.sh的内容如下:
make clean
cd ..
rm ./xxx
svn up -r 166
cd ./aaa/
sed -i -e ......
make compile
make run
但是,当我 运行 它时,“tee” 根本不起作用,并且根本不给我日志文件。为了验证整个环境是否良好,我做了一个更简单的测试:
ll 2>&1 | tee -i log
并且在这个更简单的场景中,“tee” 工作得非常好,并按我的预期打印出 "log"。 谁能帮我找出我的问题出在哪里? 顺便提一句, 我正在开发 Red Hat Linux(5.9 版),使用 bash shell。 提前致谢!
更多评论: 我做了一些更多的测试,发现只要 my_run.sh 脚本里面有“make xxx”的东西,那么“ tee" 将失败。 似乎 tee 不喜欢 make。任何解决方案?
问题已解决;非常感谢@thatotherguy 带领我找到了解决方案。日志输出实际上被make clean过程删除了。修复 makefile 中的 clean 内容后,一切都很好。