1. ホーム
  2. スクリプト・コラム
  3. リナックスシェル

Linux端末でコマンド出力をファイルに保存する方法

2022-02-07 09:25:34

Linuxのターミナルでコマンドやスクリプトを実行すると、その出力がターミナルに表示され、すぐに確認することができます。

時には、将来参照するために出力をファイルに保存する必要があります。 もちろん、Linux端末からコピー&ペーストすることも可能です しかし、Linuxのコマンドラインからシェルスクリプトやコマンドの出力を保存する、より良い方法があります。

方法1:リダイレクトを使ってコマンド出力をファイルに保存する

あなたは Linuxでリダイレクトを使用して実現する . redirect演算子を使うと、出力を画面に表示するのではなく、ファイルに保存してくれます。

  • > は、コマンド出力をファイルにリダイレクトし、ファイル内のすべてを置き換えます。
  • >> は、コマンド出力をファイルの既存の内容の最後に追加します。

標準出力リダイレクト演算子を使用する > 出力をファイルにリダイレクトする。

コマンド > file.txt

もし file.txt が存在しない場合は、自動的に作成されます。もし > を使用して同じファイルに再度リダイレクトすると、 ファイルの内容が新しい出力に置き換えられます。

次の例は、それをよりよく示すものです。この例では、まず ls -l コマンドの出力を使用します。 ls *.c コマンドの出力でファイルの内容を置き換えます。

スクリプトやコマンドの出力を保存する際に、既存のファイルの内容を失いたくない場合には >> :

<ブロッククオート

コマンド >> file.txt

次の例は、よりよくそれを示しています。

ファイルが存在しない場合でも、自動的に作成されます。

ヒント:Linuxのコマンド出力とエラーをファイルに保存します。

Linux コマンドがエラーを返した場合、そのエラーはファイルには保存されません。そのため 2>&1 を使用すると、次のように、コマンドの出力とエラーを同じファイルに保存することができます。

<ブロッククオート

コマンド > file.txt 2>&1

一般的に 0 は標準入力を表し 1 は標準出力を表し 2 は標準誤差を表します。ここでは、標準エラー( 2 ) リダイレクト ( & ) を標準出力にする ( 1 ) を標準出力と同じアドレスにコピーします (

方法2:teeコマンドを使用して出力を表示し、ファイルに保存する

ところで、コマンドの出力をファイルに送ると、ターミナルでその出力を見ることができなくなることにお気づきでしょうか? Linux用teeコマンド はこの問題を解決してくれます。

ティーに双方向に水を送るのと同様に tee コマンドは、出力をターミナルに送ると同時に、ファイルにも送ります(または、他のコマンドの入力として送ります)。こんな風に使うことができます。

<ブロッククオート

コマンド | tee file.txt

ここでも、ファイルが存在しない場合は、自動的に作成されます。

また tee コマンド -a オプションで追加モードに入ります。

コマンド | tee -a file.txt

簡単な例で実演してみましょう。

私の例では、簡単なLinuxのコマンドを使いました。しかし、これらの方法を用いてbashスクリプトの出力を保存することもできますので、ご安心ください。

注意:コマンドの出力をファイルに保存する場合、パイプトラップは避けてください。

パイプリダイレクトはよく知られていて、Linuxのコマンドを組み合わせるのに使うことができますが、出力をファイルにパイプすることはできません。 output.txt コマンドを使用します。

これは、パイプがあるコマンドの出力を別のコマンドの入力にリダイレクトするためです。この場合、パイプにファイル名を渡すと、パイプはコマンドを期待します。

もしあなたがLinuxのコマンドラインに慣れていないなら、このクイックチュートリアルがあなたのLinuxの知識の助けになることを願っています。 I/Oリダイレクション は、基本的な考え方として覚えておいてください。

いつものように、ご質問やご提案をお待ちしております。

Linuxのターミナルコマンドの出力をファイルに保存する方法については、この記事がすべてです。Linuxのターミナルコマンドの出力をファイルに保存する方法については、スクリプトハウスの過去記事を検索するか、引き続き以下の関連記事をご覧ください。