開始当初は基本的なコマンドを説明していた本連載だが、米Microsoftが「Windows Subsystem for Linux」を導入してUbuntuをWindows 10で動作させる機能を提供するようになったことがきっかけで「Bash on Windows」を取り上げた。
その流れで、しばらく主要ディストリビューションにおけるパッケージ管理の方法や興味深いディストリビューションを紹介してきたのだが、この辺りでディストリビューションの紹介からはいったん離れ、基本となるコマンドの説明に戻ろうと思う。
基本のページャ「cat(1)」「more(1)」「less(1)」
Linux/UNIX系サーバの管理は、基本的にログを読んだり、設定ファイルを読んだりする機会が多く、とにかくテキストファイルを扱う。こうしたテキストファイルの閲覧に使われるコマンドは、「ページャ」と呼ばれている。
最もシンプルでよく使われるページャは「cat(1)」だ。cat(1)でログファイルや設定ファイルの中身を標準出力(ターミナル)に出力し、ターミナルのスクロール機能を使って上下に移動しながら内容をチェックできる。
スクロールや検索にターミナルの機能を使用せず、コマンドの機能を使う場合は「more(1)」や「less(1)」といったページャを使うことになる。おそらく、最近は「less(1)」が使われることが多いのではないかと思う。more(1)もless(1)もよく似た機能を提供しており、テキストファイルの中身を表示し、スクロール・検索などが可能になっている。
more(1)とless(1)は、ディストリビューションにデフォルトでインストールされていることが多い。歴史的に言えば、より早いタイミングでスクロール機能を備えたページャとして登場したのはmore(1)だ。BSDに導入されたページャで、1画面を超えるテキストファイルの中身を逐次チェックしながら閲覧するために開発された。
less(1)はmore(1)にさらに機能を追加したページャとして登場し、いったん表示したページを巻き戻して表示する機能などが実装された。しかしながら、現在ではmore(1)とless(1)に同じ実装が採用されており、その違いは曖昧になっていることが多い。
ただし、more(1)とless(1)の実装を変えているディストリビューションもあり、more(1)のほうが提供する機能を減らしているものもある。現状では、less(1)コマンドが存在しているなら、less(1)を使っておけば、ほぼ間違いない。
覚えておくと便利な操作
more(1)やless(1)では、引数にテキストファイルを与える、またはパイプ経由でテキストデータを流し込むと、ターミナルの1画面ごとに中身を表示するようになる。1画面いっぱいにテキストデータを表示すると表示が一時停止し、「Space」を押すと次のページが表示される。「q」を押すとページャが終了する。これらについては知っている方も多いと思うが、ほかにもいくつか操作方法を知っておくと便利なものがある。
例えば、次の操作は覚えておくと良いだろう。
操作 |
内容 |
Space |
次のページを表示 |
b |
前のページを表示 |
/key |
keyを下方検索 |
?key |
keyを上方検索 |
↓ |
次の行を表示 |
↑ |
前の行を表示 |
q |
ページャを終了 |
上記の中でも、「?」で上方検索ができるということは、あまり知られていないようだ。「?」と入力すると、キーワードを入力するプロンプトがターミナルの下方に表示される。ここで何らかのキーワードを入力すると、現在見ている部分から上方向に対してそのキーワードを検索し、そこまで表示が移動する。「/」はこの逆で、下方向に向かって検索を実行してくれる。簡単な正規表現パターンが指定できるものもあり、比較的柔軟な検索が可能だ。
こうしたことを知らないと、ターミナルに表示されるテキストを目で追って内容をチェックしなければならない。「/」と「?」を使えば、1つ作業が楽になるはずだ。また、「/」と「?」によるキーワード検索は、「vim(1)」のコマンドモードでも使えることを併せて覚えておくと良いだろう。
「Space」「b」「/」「?」「q」を知っていれば、大体やりたい操作はできると思う。なお、ディストリビューションによってはmore(1)で提供されている機能が少なく、「?」が検索ではなくヘルプ表示になっているものなどもあるので、その場合にはless(1)を使ってみてほしい。