回答:
はい、可能です。出力をファイルにリダイレクトするだけです。
SomeCommand > SomeFile.txt
または、データを追加する場合:
SomeCommand >> SomeFile.txt
あなたがしたい場合stderrにも、これを使用します。
SomeCommand &> SomeFile.txt
またはこれを追加する:
SomeCommand &>> SomeFile.txt
コンソールとファイルに両方stderrと出力を表示したい場合は、これを使用します:
SomeCommand 2>&1 | tee SomeFile.txt
(出力のみが必要な場合は、2上記をドロップします)
makeコマンドの出力をファイルに取得するには、代わりに次の構文が必要です:(make > someFile.txt 2>&1ソース:linuxquestions.org/questions/linux-newbie-8/…)
コマンドの出力をファイルに書き込むには、基本的に10の一般的な方法があります。
n.e.構文列の「存在しない」ことを意味することに注意してください。
方法はありますが、列に収まらないほど複雑です。それに関するリストセクションで役立つリンクを見つけることができます。
|| visible in terminal || visible in file || existing
Syntax || StdOut | StdErr || StdOut | StdErr || file
==========++==========+==========++==========+==========++===========
> || no | yes || yes | no || overwrite
>> || no | yes || yes | no || append
|| | || | ||
2> || yes | no || no | yes || overwrite
2>> || yes | no || no | yes || append
|| | || | ||
&> || no | no || yes | yes || overwrite
&>> || no | no || yes | yes || append
|| | || | ||
| tee || yes | yes || yes | no || overwrite
| tee -a || yes | yes || yes | no || append
|| | || | ||
n.e. (*) || yes | yes || no | yes || overwrite
n.e. (*) || yes | yes || no | yes || append
|| | || | ||
|& tee || yes | yes || yes | yes || overwrite
|& tee -a || yes | yes || yes | yes || append
command > output.txt
標準出力ストリームはファイルのみにリダイレクトされ、端末には表示されません。ファイルが既に存在する場合、上書きされます。
command >> output.txt
標準出力ストリームはファイルのみにリダイレクトされ、端末には表示されません。ファイルがすでに存在する場合、新しいデータはファイルの最後に追加されます。
command 2> output.txt
標準エラーストリームはファイルにのみリダイレクトされ、ターミナルでは表示されません。ファイルが既に存在する場合、上書きされます。
command 2>> output.txt
標準エラーストリームはファイルにのみリダイレクトされ、ターミナルでは表示されません。ファイルがすでに存在する場合、新しいデータはファイルの最後に追加されます。
command &> output.txt
標準出力と標準エラーストリームの両方がファイルのみにリダイレクトされ、端末には何も表示されません。ファイルが既に存在する場合、上書きされます。
command &>> output.txt
標準出力と標準エラーストリームの両方がファイルのみにリダイレクトされ、端末には何も表示されません。ファイルが既に存在する場合、新しいデータはファイルの最後に追加されます。
command | tee output.txt
標準出力ストリームはファイルにコピーされますが、端末では引き続き表示されます。ファイルが既に存在する場合、上書きされます。
command | tee -a output.txt
標準出力ストリームはファイルにコピーされますが、端末では引き続き表示されます。ファイルがすでに存在する場合、新しいデータはファイルの最後に追加されます。
(*)
Bashには、StdErrのみを2番目のコマンドにパイプすることを許可する短縮構文がありません。これはtee、テーブルを完成させるためにここで再度組み合わせる必要があります。そのようなものが本当に必要な場合は、「stdoutではなくstderrをパイプする方法」を参照してください。スタックオーバーフローでは、ストリームのスワップやプロセス置換の使用など、これを行う方法についていくつかの方法があります。
command |& tee output.txt
端末に表示されたまま、標準出力と標準エラーストリームの両方がファイルにコピーされます。ファイルが既に存在する場合、上書きされます。
command |& tee -a output.txt
端末に表示されたまま、標準出力と標準エラーストリームの両方がファイルにコピーされます。ファイルがすでに存在する場合、新しいデータはファイルの最後に追加されます。
2>&1STDERRをSTDOUTに1>&2リダイレクトし、STDOUTをSTDERRに3>&1リダイレクトし、ストリーム3をSTDERRにリダイレクトします。
sh: 1: Syntax error: "&" unexpected使用すると|& tee。別のシェルが使用されているようです。バージョン4.3.11(1)-releaseをecho $SHELL示し/bin/bashてい$SHELL --versionます。私#!/bin/bashは自分のPythonスクリプトで試しましたが、まだ取得しsh: 1: Syntax errorます。私はので、私は間のすごみをソートするにあきらめてる必要なものだshとbash私のサーバー上で。ありがとう。
shないbash(または多分bash中sh...モード)。信頼性が低く、ログインシェルが表示されるps -p $$ -o cmd=ため、現在のシェルプロセスが使用しているものを正確に確認echo $SHELLできます。別のサブシェルを開始したかどうかは無視されます。
またtee、出力をファイルに送信するために使用できます。
command | tee ~/outputfile.txt
わずかな変更でもstderrがキャッチされます。
command 2>&1 | tee ~/outputfile.txt
またはわずかに短く複雑ではありません:
command |& tee ~/outputfile.txt
teeコマンド出力をキャプチャしながらライブで見たい場合に便利です。
2>&1ますか?
コマンド出力をファイルにリダイレクトできます:
your_command >/path/to/file
コマンド出力を上書きする代わりにファイルに追加するには、次を使用します。
your_command >>/path/to/file
考慮すべき機能強化-
さまざまなスクリプトがカラーコードを出力に挿入しますが、ログファイルが乱雑になることは望ましくありません。
これを修正するには、sedプログラムを使用してこれらのコードを取り除きます。例:
command 2>&1 | sed -r 's/'$(echo -e "\033")'\[[0-9]{1,2}(;([0-9]{1,2})?)?[mK]//g' | tee ~/outputfile.txt
lsとgrep、支持--color=auto標準出力が端末である場合にのみカラーコードを出力します。
some_command | tee command.logまたsome_command > command.log、コマンド出力をcommand.logファイルにリアルタイムで保存しないという問題があります。
この問題を回避し、コマンド出力をリアルタイムで保存unbufferするには、expectパッケージに付属のを追加します。
例:
sudo apt-get install expect
unbuffer some_command | tee command.log
unbuffer some_command > command.log
log.py含まれるものと仮定:
import time
print('testing')
time.sleep(100) # sleeping for 100 seconds
あなたが実行するunbuffer python log.py | tee command.logか、unbuffer python log.py > command.log
someCommand 2> someFile.txtとsomeCommand 2>> someFile.txtもリダイレクトstterrsomeFile.txtに