
目次
ファイルの中身を表示(cat・less・more)
次はファイルの内容を確認するコマンドを利用してみます。ファイルの中身は「cat(Concatenate And prinT)」コマンドを利用することで実現できます。
書式:
cat [オプション] ファイル名 |
主オプション:
-n | 行数を表示します。空白行も行としてカウントします。 |
-b | 行数を表示します。空白行を除いてカウントします。 |
ファイル名には、複数指定することも可能です。この場合は、スペースで区切って羅列します。複数のファイルを指定した場合も、指定した順番に一括で表示されます。
<実習: catコマンドの実行と行番号の表示>
.bashrcファイルの中身を見てみます。
$ cat .bashrc
# .bashrc
# Source global definitions
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi
# Uncomment the following line if you don't like systemctl's auto-paging feature:
# export SYSTEMD_PAGER=
# User specific aliases and functions
行番号をつけてみます。
$ cat -n .bashrc
1 # .bashrc
2
3 # Source global definitions
4 if [ -f /etc/bashrc ]; then
5 . /etc/bashrc
6 fi
7
8 # Uncomment the following line if you don't like systemctl's auto-paging feature:
9 # export SYSTEMD_PAGER=
10
11 # User specific aliases and functions
cat コマンドを使ってファイルの内容を表示するとき、行数がたくさんあると表示が流れてしまいます。通常、画面は25行程度ですので、それ以上の行は流れてしまい確認できません。ターミナルなら画面をスクロールすることである程度の行は確認できますが、コンソールの場合は確認できなくなります。
数十行に及ぶ内容が書かれているファイルと予め分かっている場合は、catコマンドで表示する事を避け、他のコマンドを使います。たくさんの行があっても画面制御を行ってスクロールを途中で止めてくれる機能のことをページングといい、それを実現するコマンドをページャといいます。ページャには2種類あり、moreコマンドlessコマンドです。
入力方法はcatコマンドと同じです。
書式:
less ファイル名 more ファイル名 |
ページャでは、コマンドを入力して操作します。コマンドは次の通りです。
コマンド | 動作内容 |
---|---|
[j] or [↓] | 1行下に移動します。 |
[k] or [↑] | 1行上に移動します。 |
[スペース] or [PageUp] | 1画面下に移動します。 |
[b] or [PageDown] | 1画面上に移動します。 |
/単語 | 単語を検索します。nキーで検索結果をジャンプします。 |
[q] | ページャコマンドを終了(quit)します。 |
<実習: ページャを使ったファイル閲覧>
ページャを使って、長いファイルを確認してみます。
$ more /var/log/dmesg
$ less /var/log/dmesg
moreとless
もともとページャコマンドとしてmoreが開発されましたが、最初はスクロールを止める機能しかありませんでした。もちろん[b]の「1ページ戻る」という機能もありませんでした。しかし、これでは不便なので様々な機能を加えたページャが開発されました。これがlessです。lessはmoreの機能拡張版ともいえます。
ファイルの一部を閲覧(head・tail)
ファイルの先頭部分を表示する(head)
書式:
head [オプション] ファイル名 head -行数 ファイル名 |
コマンド | 動作内容 |
---|---|
[j] or [↓] | 1行下に移動します。 |
[k] or [↑] | 1行上に移動します。 |
[スペース] or [PageUp] | 1画面下に移動します。 |
[b] or [PageDown] | 1画面上に移動します。 |
/単語 | 単語を検索します。nキーで検索結果をジャンプします。 |
[q] | ページャコマンドを終了(quit)します。 |
<実習: headコマンドの実行>
$ head FILE
$ head -n 10 FILE
$ head -10 FILE
1行目のように引数として指定したファイルの先頭部分を表示します。デフォルトは10行です。
2行目のように「-n」オプションを用いると指定した行数分を表示することができます。
3行目のように、オプションを使わずに直接行数を入力しても行数を指定することができます。
ファイルの末尾部分を表示する(tail)
書式:
tail [オプション] ファイル名 tail -行数 ファイル名 |
-n 行数 | 出力する行数を指定します。デフォルトは10行。 |
-c 文字数 | 出力する文字数を指定する。 |
tailはファイルの末尾から指定した行数表示します。使用方法はheadコマンドと同じです。
ただし、tail独自のオプションとして「-f」があります。
$ ls -l /usr/bin > ls-usr-bin
$ tail ls-user-bin
-rwxr-xr-x. 1 root root 215840 11月 6 2016 zip
-rwxr-xr-x. 1 root root 100456 11月 6 2016 zipcloak
-rwxr-xr-x. 1 root root 2953 10月 11 2008 zipgrep
-rwxr-xr-x. 2 root root 185512 4月 1 13:49 zipinfo
-rwxr-xr-x. 1 root root 95984 11月 6 2016 zipnote
-rwxr-xr-x. 1 root root 100096 11月 6 2016 zipsplit
-rwxr-xr-x. 1 root root 2041 4月 11 2018 zless
-rwxr-xr-x. 1 root root 2859 4月 11 2018 zmore
-rwxr-xr-x. 1 root root 5343 4月 11 2018 znew
lrwxrwxrwx. root root 6 5月 27 15:18 zsoelim -> soelim
$ tail –n 3 ls-usr-bin
-rwxr-xr-x. 1 root root 2859 4月 11 2018 zmore
-rwxr-xr-x. 1 root root 5343 4月 11 2018 znew
lrwxrwxrwx. root root 6 5月 27 15:18 zsoelim -> soelim
特別なオプション -f
Linuxシステムのファイルによってはその末尾部分が随時更新されるケースがあります。例えばログファイルです。
ログファイルはサービスの動作報告を出力するファイルで、システム変更やサービスが動作するとその内容をログに出力します。
tailコマンドは通常、コマンド実行時のファイルの末尾部分を表示するだけですが、「-f」というオプションつけて実行すると指定したファイルの末尾が表示された状態で保持されます。この時、対象ファイルの末尾にデータが追加されると、画面上に追加されたデータが表示されます。
リアルタイムでモニタしている状態になります。
それでは実際に、「-f」オプションの動きを見てみましょう。
$ tail -f ls-usr-bin
-rwxr-xr-x 1 root root 75308 1月 9 2007 zip
:
-rwxr-xr-x 1 root root 1933 5月 29 2008 zmore
-rwxr-xr-x 1 root root 3420 5月 29 2008 znew
lrwxrwxrwx 1 root root 6 1月 13 2000 zsoelim -> soelim
tailコマンドのみで表示させた時と同様に終わり部分が表示されますが、シェルに制御が戻りません。
ひとまずこの画面は置いておき、別のターミナルを起動、ログインした後に以下を入力してみて下さい。
$ echo 'Hello' >> ls-usr-bin
ls-usr-bin ファイルに対し、ファイルの末尾に「Hello」を入力するコマンドです。
上記実行後、最初から開いていたターミナルを確認してみます。
$ tail -f ls-usr-bin
-rwxr-xr-x 1 root root 75308 1月 9 2007 zip
:
-rwxr-xr-x 1 root root 1933 5月 29 2008 zmore
-rwxr-xr-x 1 root root 3420 5月 29 2008 znew
lrwxrwxrwx 1 root root 6 1月 13 2000 zsoelim -> soelim
Hello
最初に実行していたターミナルの末尾に、先ほど入力した’Hello’が出力されます。つまり、echoコマンドによってls-usr-bin ファイルにデータが追加されると同時に、ls-usr-bin の終わり部分が更新されたことがリアルタイムで確認できた事になります。
なお、「-f」で実行したtailコマンドは[Ctrl]-[c]で処理を中断すると、シェルに戻ることができます。