Linuxコマンドラインであるターミナルでコマンドを実行すると、コマンドが実行され、ターミナル自体に結果が出力されることは誰もが知っています。特に後で使用するために出力を保存する場合は、この出力の即時表示では不十分な場合があります。幸い、Linux bashとすべてのオペレーティングシステムbashには、コマンドの出力を指定されたファイルに出力する機能が備わっています。この記事では、次の2つのタスクを扱います。
- コマンド出力をファイルに保存する
- 端末に出力を印刷してファイルに保存する
この記事に記載されているコマンドは、Ubuntu18.04LTSシステムで実行されています。
コマンド出力をファイルに保存する
コマンドの出力が指定したファイル名で保存されるいくつかの例を実行します。
新しいファイルの作成/既存のファイルの置換
コマンドの出力を新しいファイルに保存する場合、または既存のファイルの内容をコマンドの出力に置き換える場合は、次の構文を使用してください。
$ [command] > [/filelocation/filename]
たとえば、lscpuコマンド(システム情報を表示する)を使用して、その内容をsysteminformation.txtという名前のファイルに出力します。このファイルは私のシステムにはまだ存在していません。
ファイルマネージャからこのファイルにアクセスすると、次のようになります。
既存のファイルに出力を追加
Linuxコマンドの出力を、既存のコンテンツをいじることなくファイルに保存する場合は、次の構文を使用できます。
$ [command] >> [/filelocation/filename]
たとえば、次のコマンドは、既存のファイルsysteminformation.txtの最後にlsコマンドの結果を追加します。
以前はシステム情報のみが含まれていた次のファイルには、lsコマンドの出力も含まれるようになりました。
端末に出力を印刷してファイルに保存する
上記のコマンドは、ターミナル自体に出力せずに、出力をファイルに保存するだけであることに気付いたかもしれません。ターミナルでコマンドの出力も表示する場合は、次の構文を使用します。
$ [command] | tee [/filelocation/filename]
たとえば、次の画像でエコーしたいテキストは、ターミナルにエコーされ、ファイルmyfile.txtにも出力されます。
これらは、コマンドによって生成されたファイルの内容です:
コマンドの出力を既存のファイルに追加する場合。次の構文に従ってください:
$ [command] | tee -a [/filelocation/filename]
たとえば、次の画像は、テキストがエコーされて、既存のファイルに追加される方法を示しています。
ファイルは次のようになります:
この記事で生成したこれらの出力指向のテキストファイルは、通常の端末での出力の印刷よりもはるかに便利な場合があります。これがUbuntubashの強力さです!