可以重定向bas​​h -v输出吗?

时间:2012-06-22 05:32:45

标签: bash

使用-v选项启动bash会产生一个长输出到控制台

$ bash -v

source ~/Dropbox/bin/tim_functions.sh

\#!/bin/bash
...several hundred more lines

我想将输出捕获到文件中以便于浏览,但我尝试了bash -v 2>&1 > out_bash.txtbash -v | tee out_bash.txt并且无法捕获文件中终端屏幕上的信息。好像详细输出既不是stderr也不是stdout。怎么会这样?

有人能建议一种方法来捕获bash -v的输出吗?

6 个答案:

答案 0 :(得分:7)

 bash -v 2>&1 > out_bash.txt

不是你想要的,它应该是

 bash -v  >out_bash.txt 2>&1

答案 1 :(得分:4)

我戳了一下,发现了这个http://www.commandlinefu.com/commands/view/3310/run-a-bash-script-in-debug-mode-show-output-and-save-it-on-a-file

在他们使用的网站上 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