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これは、詳細出力がstderrでもstdoutでもないかのようです。どうすればいいの?

誰かが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 -v 2>&1 | を使用できます。ティー file.txt または bash -v 2>&1 | grep search_string

于 2013-02-15T15:39:24.143 に答える
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 ファイルにもかかわらず、(興味深い/詳細な) 出力が少なくなりました。

于 2012-06-23T06:09:43.513 に答える
0

子の bash をサブシェルでラップしようとしましたか?

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