8

使用 -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无法在文件中捕获终端屏幕上的信息。就好像详细输出既不是标准错误也不是标准输出。怎么会这样?

谁能建议一种捕获 bash -v 输出的方法?

4

6 回答 6

7
 bash -v 2>&1 > out_bash.txt

不是你想要的,应该是

 bash -v  >out_bash.txt 2>&1
于 2012-06-22T08:48:38.613 回答
4

我四处寻找,发现了这个http://www.commandlinefu.com/commands/view/3310/run-a-bash-script-in-debug-mode-show-output-and-save-it-on-a-文件

在他们使用的网站上 bash -x test.sh 2>&1 | tee out.test,但我对其进行了测试 bash -v test.sh 2>&1 | tee out.test并且效果很好。

于 2012-06-22T05:50:26.610 回答
3

您还可以在脚本中使用 exec 命令重定向所有输出:

#!/bin/bash
exec >> out.txt 2>> out.txt
set -x
set -v
echo "testing debug of shell scripts"
ls
于 2013-02-22T17:41:29.287 回答
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.)

尽管有类似的 .bashrc 文件,但我尝试的另一台 10.6.8 mac 的输出较少(有趣/冗长)。

于 2012-06-23T06:09:43.513 回答
1

您可以使用 bash -v 2>&1 | tee file.txt 或 bash -v 2>&1 | grep 搜索字符串

于 2013-02-15T15:39:24.143 回答
0

您是否尝试过将您的子 bash 包装在子外壳中?

( bash -v ) 2>&1 > out_bash.txt
于 2012-06-22T05:44:31.467 回答