私はbashで私が実行するコマンドを作成し、そのコマンドの出力をインタラクティブプロンプトのファイルに書き込むためのエレガントな方法を探しています。次のコマンドを実行します。
$ls -alh > list_dir
次のような内容が list_dir に書き込まれます。
$ls -alh > list_dir
total 12K
drwxr-xr-x 2 root root 4.0K Dec 21 13:30 .
drwx------ 5 root root 4.0K Dec 21 13:30 ..
-rw-r--r-- 1 root root 842 Dec 21 13:09 file
-rw-r--r-- 1 root root 0 Dec 21 13:29 file1
-rw-r--r-- 1 root root 0 Dec 21 13:29 file2
私はスクリプトで動作すると主張するソリューションを含む記事をたくさん見つけましたが、インタラクティブシェルで動作する記事はありません。たとえば、多くの人はスクリプトの上部に以下を追加することをお勧めします。
set -x
シェルにこのコマンドを入力すると、コマンドは標準出力として印刷されますが(うまく印刷されませんが)、出力リダイレクトにそのコマンドを含める方法が見つかりませんでした。
私はまた、これを行うためにスクリプトを使用することを提案する多くの人々を見ました。これは私が探しているものを見つけるのに最も近いものですが、常にすべてを文書化したくはありません。どのコマンドがファイルにリダイレクトされるかを制御したいと思います。
この問題に対する良い解決策を知っている人はいますか?私は日常的な使用にあまりかさばらない限り、より奇妙なアイデアに開いています。
ベストアンサー1
set -x オプションはスクリプトをデバッグモードに切り替えます。実際のコマンドはstderrに反映されます。したがって、stdoutとstderrをいくつかのファイルにリダイレクトする必要があります。この試み
your_script.sh &> outputfile.txt