Linux
 Computer >> コンピューター >  >> スマートフォン >> Linux

Linuxコマンドの出力をファイルに保存する方法|リダイレクトとlogsaveの使い方

はじめに

この記事では、Linuxで実行したコマンドの出力結果を、あとから閲覧できるファイルとして保存する方法を詳しく解説します。

Linuxサーバーの管理業務に携わっていると、コマンドを実行するたびに大量のメッセージが画面上を流れていくのを目にすることが多いでしょう。その中には些細な情報もあれば、システムの動作に関わる重要なメッセージも含まれています。LinuxやUNIXにはsyslogdという優れたロギング機構が標準で備わっており、システムのメッセージの大部分は/var/logディレクトリ以下の各ログファイルに適切な形式で記録されます。とはいえ、自分が実行したコマンドやスクリプトの出力を、独自にファイルへ記録しておきたい場面も少なくありません。Linuxには、コマンドの出力をログとして保存するための方法がいくつか用意されています。

最も基本的な方法:リダイレクト(>)を使う

最もシンプルで、おそらく最も広く使われているのが、コマンドの後に「大なり記号(>)」を付け、続けて出力先のファイルパスを指定する方法です。

# ls /var/log > /tmp/varlog.log

上記のコマンドは、「ls /var/log」の出力を「/tmp/varlog.log」というファイルに書き込んでいます。ただし、ここで一つ注意点があります。「>」(大なり記号1つ)を使って出力を保存した場合、指定したファイルが存在しなければ新規作成され、すでに存在する場合は中身がすべて消去されたうえで上書きされるということです。

そのため、既存のファイルに出力を追記したい場合は、「>」を2つ並べた「>>」を使用します。先ほどのコマンドは次のように書き換えます。

# ls /var/log >> /tmp/varlog.log

リダイレクト使用時のポイント

  • 「>」… 新規作成、または既存ファイルの完全な上書き
  • 「>>」… 既存ファイルの末尾への追記

logsaveコマンドを使う方法

Linuxには「logsave」という、リダイレクトと同様の処理を行える専用ツールが用意されています。最初の例と同じ結果は、以下のコマンドで得られます。

# logsave /tmp/varlog.log ls /var/log

このコマンドは、「ls /var/log」の出力をもとに新しいファイルを作成するか、既存のファイルを上書きします。上書きではなくファイルへの追記を行いたい場合は、「-a」オプションを付けて実行してください。

# logsave -a /tmp/varlog.log ls /var/log

リダイレクトとlogsaveの違い

どちらの方法でも得られる結果に大きな違いはありません。ただし実際に使ってみると、logsaveの方が出力がより整形されて読みやすく、さらにログファイルに日時情報が自動的に追加されるという特徴があります。いつ実行したコマンドなのかを記録として残したい場合には、logsaveの方が便利と言えるでしょう。

  1. Linuxの「echo」コマンドとは?基本構文から実用的な活用例まで徹底解説

    Linuxを始めたばかりの方でも、長年Linuxデスクトップを使い続けている方でも、一見すると意味が分かりにくいコマンドがいくつか存在します。特にコマンドラインに触れる機会が少なかった方にとってはなおさらでしょう。しかし、Linuxやその他Unix系OSの真の力は、まさにそのコマンドラインの中にこそ秘められています。 その代表格とも言えるのが、古くから親しまれてきたechoコマンドです。一見すると何の役に立つのか分かりませんが、仕組みを理解してみると、意外なほど便利なコマンドであることが分かります。 echoコマンドは何をするもの? echoのマニュアルページを見ても、詳細な説明はほとんどあ

  2. Linuxのteeコマンド使い方ガイド|画面表示とファイル保存を同時に実現

    Linuxシェルでパイプやリダイレクトを使っているなら、teeコマンドの出番もきっとあるはずです。teeは「標準出力に表示しながら、同時にファイルにも書き込む」ことができる便利なユーティリティです。この記事では、teeコマンドの基本操作から、sudoとの組み合わせ、追記モード、エラー出力の扱い方まで、実例を交えながら詳しく解説します。 teeコマンドとは何をするもの? まず、次のようなコマンドを見てみましょう。 ls このコマンドは、現在のディレクトリの内容を表示します。つまり、標準出力(stdout)へ出力するわけです。標準出力とは通常、画面、正確には仮想端末のディスプレイのことです