Infra Engineer

Linuxのテキストフィルタ処理~catコマンド・headコマンド・tailコマンド~
2021.01.31
Lv1

Linuxのテキストフィルタ処理~catコマンド・headコマンド・tailコマンド~

今回の内容

今回は、catコマンド・headコマンド・tailコマンドについて解説します。

——————–

——————–

コマンドについて

LINUXのコンピュータでは、windowsやMacと同様にGUIでの操作が可能です。しかし、場合によっては、「文字で命令を出すコマンド」を使用した方が効率的な場合があります。例えば、ファイルの中身をメモ帳を開かずに表示したり、大量のデータの一括管理や処理の自動化といった部分においては、コマンドが得意としています。
コマンドは、「端末(ターミナル)」という、黒い背景に白字が表示された画面で操作をします。
端末(ターミナル)では、「シェル(貝殻を意味する)」というプログラムが動作しており、ユーザがコマンドを入力するとシェルがその命令を解釈してカーネルに渡すことで、画面上にコマンドを実行した出力結果が表示されます。

ひとまず「端末を使えば、文字でコンピュータに命令ができる」と考えてみてください。
端末の画面の左に「[root@localhost ~]# 」←こんな表示があります。
これは、シェルがコマンドの命令を待ち構えている状態です。

コマンドの実行は、次のような要素から成り立っています。
# コマンド [オプション] [引数]

コマンドは、実行可能なプログラムまたはスクリプト。
[オプション]は、コマンドに対して動作を指示するスイッチです。
[引数]はコマンドに渡す値です。
※引数の有無で動作が変わるコマンド、引数をとらないコマンド、複数の引数が必要とな
るコマンドなどがあります。
それでは、catコマンドから学習していきましょう。

catコマンド

catコマンド
意味 ファイルの内容を標準出力する。
複数のファイルを垂直方向に連結して、標準出力する。
書式 cat [オプション] [ファイル名]
オプション 説明
-n<行数> 全出力行に行番号(空白文字のみの行を含む)を付けて出力。

——————–

例1)
「/etc/passwd」ファイルを表示。(一部省略)
[root@localhost ~]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin


(中略)

postfix:x:89:89::/var/spool/postfix:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
student:x:1000:1000:student:/home/student:/bin/bash
apache:x:48:48:Apache:/usr/share/httpd:/sbin/nologin
test1:x:1001:1003::/home/test1:/bin/bash
test2:x:1002:1003::/home/test2:/bin/bash
[root@localhost ~]#
GUIと違って、コマンド操作ならわざわざメモ帳のエディタを開かなくていいわけですね

——————–

例2)-n
「/etc/inittab」ファイルの全出力行に行番号をつけて表示。(一部省略)
[root@localhost ~]# cat -n /etc/passwd
     1  root:x:0:0:root:/root:/bin/bash
     2  bin:x:1:1:bin:/bin:/sbin/nologin
     3  daemon:x:2:2:daemon:/sbin:/sbin/nologin
     4  adm:x:3:4:adm:/var/adm:/sbin/nologin
     5  lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
     6  sync:x:5:0:sync:/sbin:/bin/sync
     7  shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
     8  halt:x:7:0:halt:/sbin:/sbin/halt
     9  mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
    10  operator:x:11:0:operator:/root:/sbin/nologin

——————–

headコマンド

headコマンド
意味 ファイルの先頭部分を表示する。
(デフォルトでは、先頭から10行目までを表示)
書式 head [オプション] [ファイル名]
オプション 説明
-c <バイト数> 出力するバイト数を指定。
-n<行数> 先頭から指定された行数分だけ表示。
例1)
「/etc/passwd」ファイルの先頭を表示。(デフォルトは、10行)
[root@localhost ~]# head /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
[root@localhost ~]#

——————–

例2)-c <バイト数>
「/etc/passwd」ファイルの先頭から50バイトを表示。
[root@localhost ~]# head -c 50 /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin
[root@localhost ~]#

——————–

例3)-n<行数>
「/etc/passwd」ファイルの先頭から5行を表示。
[root@localhost ~]# head -n 5 /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
[root@localhost ~]#

——————–

tailコマンド

tailコマンド
意味 ファイルの末尾部分を表示する。
(デフォルトでは、最終行から10行目までを表示)
書式 tail [オプション] [ファイル名]
オプション 説明
-c <バイト数> 末尾から指定されたバイト数だけ指定。
-n<行数> 末尾から指定された行数分だけ表示。
-f ファイルの末尾に追加された行を常に表示。
例1)
「/etc/inittab」ファイルの末尾を表示。(デフォルトは、10行)
[root@localhost ~]# tail /etc/passwd
nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin
gnome-initial-setup:x:988:982::/run/gnome-initial-setup/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
avahi:x:70:70:Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
student:x:1000:1000:student:/home/student:/bin/bash
apache:x:48:48:Apache:/usr/share/httpd:/sbin/nologin
test1:x:1001:1003::/home/test1:/bin/bash
test2:x:1002:1003::/home/test2:/bin/bash
[root@localhost ~]#

——————–

例2)-c<バイト数>
「/etc/inittab」ファイルの末尾の50バイトを表示。
[root@localhost ~]# tail -c 50 /etc/passwd
bin/bash
test2:x:1002:1003::/home/test2:/bin/bash
[root@localhost ~]#

——————–

例3)-n<行数>
「/etc/inittab」ファイルの末尾の5行を表示。
[root@localhost ~]# tail -n 5 /etc/passwd
tcpdump:x:72:72::/:/sbin/nologin
student:x:1000:1000:student:/home/student:/bin/bash
apache:x:48:48:Apache:/usr/share/httpd:/sbin/nologin
test1:x:1001:1003::/home/test1:/bin/bash
test2:x:1002:1003::/home/test2:/bin/bash
[root@localhost ~]#

——————–

例4)-f
ファイルの末尾に追加された行を常に表示。
[root@localhost ~]# tail -f /etc/passwd
nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin
gnome-initial-setup:x:988:982::/run/gnome-initial-setup/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
avahi:x:70:70:Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
student:x:1000:1000:student:/home/student:/bin/bash
apache:x:48:48:Apache:/usr/share/httpd:/sbin/nologin
test1:x:1001:1003::/home/test1:/bin/bash
test2:x:1002:1003::/home/test2:/bin/bash

——————–

まとめ

cat/head/tailコマンドは、よく実務でも使用するコマンドです!
LINUX初心者の方は、特にcatコマンドとtailコマンドをしっかり覚えておきましょう!

それでは今回はこのあたりで。

確認問題

問題1

ファイルの内容を標準出力するコマンドで、正しい選択肢を1つ選びなさい。

A) head
B) tail
C) cat
D) cah

解答・解説
答え:C

A) ⇒ ファイルの先頭部分を表示するコマンドなので、誤りです。
B) ⇒ ファイルの末尾部分を表示するコマンドなので誤りです。
C) ⇒ ファイルの内容を標準出力するコマンドです。
D) ⇒ このようなコマンドはありません。

問題2

ファイルの末尾に追加された行を常に表示するコマンドで、正しい選択肢を1つ選びなさい。

A) -x
B) -f
C) -n
D) -c

解答・解説
答え:B

A) ⇒ このようなオプションはありません。
B) ⇒ ファイルの末尾に追加された行を常に表示します。
C) ⇒ 末尾から指定された行数分だけ表示するオプションなので誤りです。
D) ⇒ 末尾から指定されたバイト数だけ指定するオプションなので誤りです。

Linux資格 「LPIC Lv1」徹底解説 連載目次リンク

Linux資格 「LPIC Lv1」徹底解説 連載目次