logo

Bash ファイルへの書き込み

bash シェルでコマンドを実行すると、通常、そのコマンドの出力がターミナルに出力され、すぐに読めるようになります。ただし、bash には、bash コマンドの出力をログ ファイルに「リダイレクト」するオプションもあります。出力をテキスト ファイルに保存できるので、後で必要になったときにいつでも確認できます。

方法 1: 出力をファイルのみに書き込む

Bash コマンドの出力をファイルに書き込むには、右山括弧記号 (>) または二重直角記号 (>>) を使用します。

直角括弧記号 (>)

これは、bash コマンドの出力をディスク ファイルに書き込むために使用されます。指定された名前のファイルがない場合は、同じ名前の新しいファイルが作成されます。指定した名前のファイルが存在する場合、ファイルの内容は上書きされます。

ダブル直角サイン (>>)

これは、bash コマンドの出力をファイルに書き込み、ファイルの既存の内容に出力を追加するために使用されます。ファイルが存在しない場合は、指定された名前で新しいファイルが作成されます。

技術的には、これらの演算子はどちらも「stdout (標準出力)」をファイルにリダイレクトします。

簡単に言うと、初めてファイルを作成するときに、以前のデータをファイル内に残したくない場合は、右山括弧記号 (>) を使用する必要があります。コンテンツがファイル内にすでに存在する場合、コンテンツは上書きされます。さらに続くスクリプトでは、2 つの直角記号 (>>) を使用してデータをファイルに追加できます。

「ls」コマンドは、現在のディレクトリに存在するすべてのファイルとフォルダーを印刷するために使用されます。ただし、右山かっこ記号 (>) を使用して 'ls' コマンドを実行すると、ファイルとフォルダーのリストが画面に表示されません。出力は、次に示すように、指定したファイルに保存されます。

Bash スクリプト

 #!/bin/bash #Script to write the output into a file #Create output file, override if already present output=output_file.txt #Write data to a file ls > $output #Checking the content of the file gedit output_file.txt 

出力

Bash書き込みファイル

ここに示すように、「ls」コマンドの出力はファイルにリダイレクトされます。ファイルの内容を端末に出力するには、次の形式で「cat」コマンドを使用します。

Bash スクリプト

 #!/bin/bash #Script to write the output into a file #Create output file, override if already present output=output_file.txt #Write data to a file ls > $output #Printing the content of the file cat $output 

出力

Bash書き込みファイル

利用可能なデータを削除せずに、複数のコマンドの出力を 1 つのファイルにリダイレクトしたい場合は、>> 演算子を使用できます。指定したファイルにシステム情報を追加したいとします。次の方法で追加できます。

Bash スクリプト

 #!/bin/bash #Script to write the output into a file #Create output file, override if already present output=output_file.txt #Write data to a file ls > $output #Appending the system information uname -a >> $output #Checking the content of the file gedit output_file.txt 

出力

Bash書き込みファイル

ここでは、2 番目のコマンドの結果がファイルの末尾に追加されます。

Cの配列内の文字列

このプロセスを数回繰り返して、出力をファイルの末尾に追加し続けることができます。

方法 2: 出力を通常どおり印刷し、ファイルに書き込む

ターミナルにコマンドの出力がないため、> または >> 演算子を使用して出力をファイルに書き込むことを好まない人もいるかもしれません。このため、「tee」コマンドが使用されます。 「tee」コマンドは、受け取った入力を画面に出力するために使用されます。出力を同時にファイルに保存できます。

Bash スクリプト

 #!/bin/bash #Script to write the output into a file #Create output file, override if already present output=output_file.txt #Write data to a file ls | tee $output 

出力

Bash書き込みファイル

これは、> 演算子と同様にファイルの内容をオーバーライドしますが、出力を画面に表示します。

tee コマンドを使用してファイルの内容を削除せずに出力をファイルに書き込みたい場合は、出力を端末に出力する次の形式を使用できます。

Bash スクリプト

 #!/bin/bash #Script to write the output into a file #Create output file, override if already present output=output_file.txt echo '<<>>' | tee -a $output #Write data to a file ls | tee $output echo | tee -a $output #Append System Information to the file echo '<<>>' | tee -a $output uname | tee -a $output 

出力

Bash書き込みファイル

これにより、出力がファイルの末尾に追加されるだけでなく、出力が画面に印刷されます。