catコマンドは、主にファイルを表示するコマンドとして使われます。
他にも、ファイルを連結させて表示をすることができます。また、オプションをつけることで、空行をまとめたり、行番号を表示することができます。
目次
catコマンドとは
ファイルを連結して、標準出力に書き出すことができるコマンドです。このコマンドについて、英語版Gnu Coreutilsでは「Concatenate and write files」と表現されています。
catの機能は、それぞれのファイルや標準入力を標準出力にコピーします。また、ファイルを単純に表示することにも使われます。
catコマンドの構文
1 |
cat オプション ファイル |
オプション:0個以上のオプションをつけることができます。
入力ファイル:0個以上の入力ファイルを指定できます。入力ファイルがない、または「-」ならば、標準入力が指定されます。
コマンド例の想定
catコマンドで表示させるファイルとして以下のファイルを想定します。
test.txt
1 2 3 |
テキストファイルです テスト用です |
test2.txt
1 2 |
2つ目のテキストファイルです コマンド例用です |
test_tabfile.txt
1 2 3 4 |
タブが含まれているファイルです。 tabが1つ tabが2つ ファイルの終わりです。 |
test_emptyline.txt
1 2 3 4 5 |
空行が3つあります。 ファイルの終わりです。 |
catコマンドの利用例
ファイルの内容を標準出力に表示
catコマンドはファイルの内容を確認することができます。
コマンド例
1 |
cat test.txt |
実行結果
1 2 3 |
テキストファイルです テスト用です |
ファイルの内容を逆に表示させるコマンドとしてtacコマンドもあります。
コマンド例
1 |
tac test.txt |
実行結果
1 2 3 |
テスト用です テキストファイルです |
ファイルの内容を連結
catコマンドは、ファイルを2つ以上指定することでファイルの内容を連結させることができます。
コマンド例
1 |
cat test.txt test2.txt |
実行結果
1 2 3 4 5 |
テキストファイルです テスト用です 2つ目のテキストファイルです コマンド例用です |
リダイレクトを行うことで、連結させたファイルの内容を別のファイルに書き出すことができます。
コマンド例
1 |
cat test.txt test2.txt > output.txt |
output.txt
1 2 3 4 5 |
テキストファイルです テスト用です 2つ目のテキストファイルです コマンド例用です |
「>」はリダイレクトを行うための記号で、コマンドで標準出力に表示する内容を別のファイルに書き出すことができます。test.txtとtest2.txtの連結した内容をリダイレクトすることでoutput.txtに書き出すことができます。
標準入力の内容を表示
catコマンドでファイルを指定しない場合は、標準入力の内容を表示することができます。
コマンド例
1 |
echo "入力です" | cat |
実行結果
1 |
入力です |
また、ファイルを標準入力として渡す方法としては「<」のリダイレクトで渡す方法もあります。
コマンド例
1 |
cat < test.txt |
実行結果
1 2 3 |
テキストファイルです テスト用です |
標準入力をファイルとして任意の場所で連結させたい場合は「-」を用いる事ができます。
コマンド例
1 |
echo "入力です" | cat test.txt - test2.txt |
実行結果
1 2 3 4 5 6 |
テキストファイルです テスト用です 入力です 2つ目のテキストファイルです コマンド例用です |
コマンド例
1 |
echo "入力です" | cat test.txt test2.txt - |
実行結果
1 2 3 4 5 6 |
テキストファイルです テスト用です 2つ目のテキストファイルです コマンド例用です 入力です |
行番号を表示
(-nオプション)
-nオプションは、表示する内容に行番号を表示することができます。また、空行を除いた行番号表示の-bオプションがある場合は無効になります。
コマンド例
1 |
cat -n test.txt test2.txt |
実行結果
1 2 3 4 5 |
1 テキストファイルです 2 3 テスト用です 4 2つ目のテキストファイルです 5 コマンド例用です |
空行を1つにまとめる
(-sオプション)
-sオプションは、連続した空行を一つの空行にまとめることができます。
コマンド例
1 |
cat -s test_emptyline.txt |
実行結果
1 2 3 |
空行が3つあります。 ファイルの終わりです。 |
空行を除いた行番号を表示
(-bオプション)
-bオプションは、空行以外に対して行番号を表示することができます。
コマンド例
1 |
cat -b test.txt test2.txt |
実行結果
1 2 3 4 5 |
1 テキストファイルです 2 テスト用です 3 2つ目のテキストファイルです 4 コマンド例用です |
行の終端に$を追加して表示
(-Eオプション)
-Eオプションは、行の終端に「$」を追加して表示します。
コマンド例
1 |
cat -E test.txt test2.txt |
実行結果
1 2 3 4 5 |
テキストファイルです$ $ テスト用です$ 2つ目のテキストファイルです$ コマンド例用です$ |
タブを「^I」で表示
(-Tオプション)
-Tオプションはtabを「^I」で表現して表示します。
コマンド例
1 |
cat -T test_tabfile.txt |
実行結果
1 2 3 4 |
タブが含まれているファイルです。 ^Itabが1つ ^I^Itabが2つ ファイルの終わりです。 |
制御文字を表示する
(-vオプション)
LFDとTAB以外の制御文字をキャレット(^)記法で表示します。また、上位ビットを持つ文字は、「M-」を前につけます。
コマンド例
1 |
cat -v test_emptyline.txt |
実行結果
1 2 3 4 5 |
M-gM-)M-:M-hM-!M-^LM-cM-^AM-^LM-oM-<M-^SM-cM-^AM-$M-cM-^AM-^BM-cM-^BM-^JM-cM-^AM->M-cM-^AM-^YM-cM-^@M-^B M-cM-^CM-^UM-cM-^BM-!M-cM-^BM-$M-cM-^CM-+M-cM-^AM-.M-gM-5M-^BM-cM-^BM-^OM-cM-^BM-^JM-cM-^AM-'M-cM-^AM-^YM-cM-^@M-^B |
また、\tはタブ、\rは復帰、\aはベル、\nは改行になります。
コマンド例
1 |
echo $'\tabc \r\a\n' | cat -v |
実行結果
1 2 |
abc ^M^G |
他のオプション(-eオプション、-tオプション、-Aオプション)
制御文字表示と行の終端に「$」を追加して表示
(-eオプション)
-eオプションは、-vEオプションと同じです。
コマンド例
1 |
echo $'\tabc \r\a\n' | cat -e |
実行結果
1 2 |
abc ^M^G$ $ |
制御文字表示とタブを「^T」で表示
(-tオプション)
-tオプションは、-vTオプションと同じです。
コマンド例
1 |
echo $'\tabc \r\a\n' | cat -t |
実行結果
1 2 |
^Iabc ^M^G |
制御文字表示とタブを「^T」で表示と行の終端に「$」を追加して表示
(-Aオプション)
-Aオプションは、-vETオプションと同じです。
コマンド例
1 |
echo $'\tabc \r\a\n' | cat -A |
実行結果
1 2 |
^Iabc ^M^G$ $ |
参考
外部リンクGnu Coreutils
外部リンクGnu Coreutils日本語版