こんにちは!はづきです
文系から一部上場IT企業に就職し、エンジニアをやっています
この記事はLinuxのcatコマンドについての備忘録です
catは「concatenate」の略称で、ファイルを閲覧・連結するためのコマンドです
一般的には標準出力やviコマンドで編集したファイルの中身を閲覧するときに使われます
標準入出力リダイレクトを使用することで指定したファイルの中身を別ファイルに追記することも可能です。このあたりの応用操作も解説します
基本操作と頻繁に使用するオプションの実行例を紹介します。ぜひご参考ください
※この記事は初心者向けに平易に解説しています。正確な理解をしたい人は専門書・専門家をあたっていただければと思います。また、この記事の情報におけるCPの動作結果については自己責任でお願いします。
※本サイトにはプロモーション・広告が含まれています(はづきのブログより)
catコマンドの基本操作を解説
catコマンドは「concatenate」の略称で、ファイルの閲覧と連結機能を持ったコマンドです
「標準入力された内容を標準出力する」というのが根幹の機能です。そのため出力先を画面でなくファイルに指定することも可能です
catを使ってファイルを閲覧・連結する
cat {閲覧したいファイル名}
cat {連結したいファイル名①} {連結したいファイル名②}
まずは基本的な2つの使い方から解説します
- ファイルの中身を閲覧する
- ファイルの中身を連結する
これらはあくまでファイルの中身を表示しているだけです。新規でファイルが作成されたり、連結した内容がどこかに保存されることはありません
事前にファイルの中身はviコマンドで記入しておきました。以下でcatの実行例を見てみましょう
#viコマンドで編集画面を開きファイルを編集しておきました
hazukiblog@hazukiBlog:~/work$ vi fruitsFile
hazukiblog@hazukiBlog:~/work$ vi colorFile
#①catでファイルの中身を閲覧する
#「fruitsFile」というファイルの中身を見てみましょう
hazukiblog@hazukiBlog:~/work$ cat fruitsFile
raspberry
orange
strawberry
apple
#「colorFile」というファイルの中身を見てみましょう
hazukiblog@hazukiBlog:~/work$ cat colorFile
white
yellow
red
blue
#②catでファイルの中身を連結する
#連結したいファイルを2つ指定することでファイルの中身が連結されて表示される
hazukiblog@hazukiBlog:~/work$ cat fruitsFile colorFile
raspberry
orange
strawberry
apple
white
yellow
red
blue
ちなみに、catコマンドの文字列を反対したtacコマンドというものがあります
tacコマンドはファイルの中身を反転して表示するコマンドです
#catでファイルの中身を閲覧した場合
hazukiblog@hazukiBlog:~/work$ cat fruitsFile
raspberry
orange
strawberry
apple
#tacでファイルの中身を閲覧した場合
#表示内容がcatのときと反対になっている
hazukiblog@hazukiBlog:~/work$ tac fruitsFile
apple
strawberry
orange
raspberry
標準入出力リダイレクトを用いた操作
次にcatコマンドと標準入出力リダイレクトを組み合わせた操作を確認します
▼catコマンドと入力リダイレクト
入力リダイレクト(<)でファイルを指定すると、「cat {閲覧したいファイル名}」のときと同じ処理結果になります
ただし、内部的な処理フローは多少異なります
入力リダイレクトを使用しない場合、catコマンドで用意されている「コマンド引数を受け取る処理」が裏で動いています。一方で、入力リダイレクトを使用した場合、コマンドが直接的にファイルを受け取るため処理がわずかに早いです
また、コマンド引数にファイル名を指定しない場合はキーボードからの入力を待つようになります
このとき「Ctrl + d」を押さないと処理が終了しないので注意しましょう
#入力リダイレクトを使用してもしなくても実行結果は変わらない
#入力リダイレクトを使用しない場合のファイルの閲覧結果
hazukiblog@hazukiBlog:~/work$ cat fruitsFile
raspberry
orange
strawberry
apple
#入力リダイレクトを使用した場合のファイルの閲覧結果
hazukiblog@hazukiBlog:~/work$ cat < fruitsFile
raspberry
orange
strawberry
apple
#ファイル名を指定しないとキーボードからの入力を待つ
hazukiblog@hazukiBlog:~/work$ cat
hazuki #←「hazuki」と入力してEnterを押すと1行下に「hazuki」と出力される
hazuki
blog #←「blog」と入力してEnterを押すと1行下に「blog」と出力される
blog
hazukiblog@hazukiBlog:~/work$ #「「Ctrl + d」」を押すと処理が完了する
▼catコマンドと出力/追記リダイレクト
出力リダイレクト(>)を使用することで指定したファイルの内容を別ファイルに上書きすることができます
いままで画面に出力していた実行結果を、出力リダイレクトで指定したファイル内に出力しているイメージです
上書きでなく追記したい場合は、追記リダイレクト(>>)を使用すると既存のファイル内容の最終行から追記されます
#①catと出力リダイレクト用いた上書きの例
#fileの中身は空であることを確認
hazukiblog@hazukiBlog:~/work$ cat file
#colorFileの内容をfileに上書きする
hazukiblog@hazukiBlog:~/work$ cat colorFile > file
#fileを閲覧するとcolorFileの内容が上書きされている
hazukiblog@hazukiBlog:~/work$ cat file
white
yellow
red
blue
#次にfruitsFileの内容をfileに上書きする
hazukiblog@hazukiBlog:~/work$ cat fruitsFile > file
#fileを閲覧するとfruitsFileの内容が上書きされている
hazukiblog@hazukiBlog:~/work$ cat file
raspberry
orange
strawberry
apple
#②catと追記リダイレクト用いた追記の例
#①の続きとしてfileにcolorFileの内容を追記してみる
hazukiblog@hazukiBlog:~/work$ cat colorFile >> file
#fileにcolorFileの内容が追記されている
hazukiblog@hazukiBlog:~/work$ cat file
raspberry
orange
strawberry
apple
white
yellow
red
blue
catコマンドのオプションを紹介
catコマンドにはいくつかのオプションが用意されています
以下では実行例を交えて各オプションについて解説します
-n:行番号を付ける
-nオプションを付けると行番号が付けられた状態でファイルの中身が出力されます
空行にも行番号が付けられています
#-nオプションを付けていない場合の実行例
hazukiblog@hazukiBlog:~/work$ cat blankFile
foo
foobar
foobarbaz
#←空白行
foobarbazqux
#←空白行
#←空白行
#←空白行
foobarbazquxquux
tab
#-nオプションを付けている場合の実行例
hazukiblog@hazukiBlog:~/work$ cat -n blankFile
1 foo
2 foobar
3 foobarbaz
4
5 foobarbazqux
6
7
8
9 foobarbazquxquux
10 tab
-b:空白行を無視して行番号を付ける
-bオプションを付けると空白行以外の行に行番号が付けられます
#-bオプションを付けていない場合の実行例
hazukiblog@hazukiBlog:~/work$ cat blankFile
foo
foobar
foobarbaz
#←空白行
foobarbazqux
#←空白行
#←空白行
#←空白行
foobarbazquxquux
tab
#-bオプションを付けている場合の実行例
hazukiblog@hazukiBlog:~/work$ cat -b blankFile
1 foo
2 foobar
3 foobarbaz
4 foobarbazqux
5 foobarbazquxquux
6 tab
-s:連続した空白行を1行の空白行にする
-sオプションを付けると2行以上の空白行が1行にまとめられて表示されます
#-sオプションを付けていない場合の実行例
hazukiblog@hazukiBlog:~/work$ cat blankFile
hazukiblog@hazukiBlog:~/work$ cat blankFile
foo
foobar
foobarbaz
#←空白行
foobarbazqux
#←空白行
#←空白行
#←空白行
foobarbazquxquux
tab
#-sオプションを付けている場合の実行例
hazukiblog@hazukiBlog:~/work$ cat -s blankFile
foo
foobar
foobarbaz
foobarbazqux
foobarbazquxquux
tab
-A:非表示文字を表示する(タブや改行文字)
-Aオプションを付けると非表示文字が表示されます
ここではタブ文字が「^I」、改行文字が「$」として表示されています
#-Aオプションを付けていない場合の実行例
hazukiblog@hazukiBlog:~/work$ cat blankFile
foo
foobar
foobarbaz
foobarbazqux
foobarbazquxquux
tab
#-Aオプションを付けている場合の実行例
hazukiblog@hazukiBlog:~/work$ cat -A blankFile
foo$
foobar$
foobarbaz$
$
foobarbazqux$
$
$
$
foobarbazquxquux$
tab^I$
-E:改行文字を「$」として表示する
-Eオプションを付けると非表示文字のうち改行文字だけが「$」として表示されます
#-Eオプションを付けていない場合の実行例
hazukiblog@hazukiBlog:~/work$ cat blankFile
foo
foobar
foobarbaz
foobarbazqux
foobarbazquxquux
tab
#-Eオプションを付けている場合の実行例
hazukiblog@hazukiBlog:~/work$ cat -E blankFile
foo$
foobar$
foobarbaz$
$
foobarbazqux$
$
$
$
foobarbazquxquux$
tab $
-T:タブを「^I」として表示する
-Tオプションを付けると非表示文字のうちタブ文字だけが「^I」として表示されます
hazukiblog@hazukiBlog:~/work$ cat blankFile
foo
foobar
foobarbaz
foobarbazqux
foobarbazquxquux
tab
hazukiblog@hazukiBlog:~/work$ cat -T blankFile
foo
foobar
foobarbaz
foobarbazqux
foobarbazquxquux
tab^I
今回はLinuxのcatコマンドについて紹介しました
みなさんのお役に立てば幸いです。最後まで読んでいただきありがとうございました
おしまい
コメント