使用-v选项启动bash会产生一个长输出到控制台
$ bash -v
source ~/Dropbox/bin/tim_functions.sh
\#!/bin/bash
...several hundred more lines
我想将输出捕获到文件中以便于浏览,但我尝试了bash -v 2>&1 > out_bash.txt
和bash -v | tee out_bash.txt
并且无法捕获文件中终端屏幕上的信息。好像详细输出既不是stderr也不是stdout。怎么会这样?
有人能建议一种方法来捕获bash -v的输出吗?
答案 0 :(得分:7)
bash -v 2>&1 > out_bash.txt
不是你想要的,它应该是
bash -v >out_bash.txt 2>&1
答案 1 :(得分:4)
在他们使用的网站上
bash -x test.sh 2>&1 | tee out.test
,但我测试了它
bash -v test.sh 2>&1 | tee out.test
它运行良好。
答案 2 :(得分:3)
您还可以使用脚本中的exec命令重定向所有输出:
#!/bin/bash
exec >> out.txt 2>> out.txt
set -x
set -v
echo "testing debug of shell scripts"
ls
答案 3 :(得分:1)
在阅读其他有用的答案后,我认为这个问题与bash如何将详细信息发送到tty有关 - 这与stderr或stdout有些不同。它可以通过以下方法来解决:
$ screen -L
$ bash -v
$ exit #from the bash session
$ exit #from the screen session
这会生成包含输出的screenlog.0文件。
感兴趣的bash -v输出是在运行10.7.3(Lion)和
的mac上$ bash --version
GNU bash, version 3.2.48(1)-release (x86_64-apple-darwin11)
Copyright (C) 2007 Free Software Foundation, Inc.)
我试过的另一个10.6.8 mac有一个较少(有趣/详细)的输出,尽管有类似的.bashrc文件。
答案 4 :(得分:0)
您是否尝试将子bash包装在子shell中?
( bash -v ) 2>&1 > out_bash.txt
答案 5 :(得分:0)
你可以用, bash -v 2>& 1 | tee file.txt 要么 bash -v 2>& 1 | grep search_string