Linuxでは、パイプによってあるコマンドの標準出力を別のコマンドの標準入力に接続することができます。
前に説明したlsコマンドを思い出してください。lsでは数多くのオプションを利用することができますが、表示する内容がたくさんある場合、次から次へと画面に表示されてしまい、読み切れないことがあります。
例として、/etcディレクトリの内容を表示してみましょう。
ls -al /etc |
どうすれば、出力が画面から走り去って行く前に、確実に見ることができるのでしょうか。
1つの方法は、lsの出力をlessと呼ばれるユーティリティを使って表示することです。lessは、ページャの一種で、1度に1ページ(または1画面)ずつ、情報をスクロールして表示することができます。
コマンドをパイプするには、垂直バー(|)を使います(図10-12を参照)。
ls -al /etc | less |
これで、1画面ずつ内容を確認することができます。次の画面に進むにはスペースキー、戻るにはbキー、終了するにはqキーを押します。
![]() | 起動メッセージの読み方 |
|---|---|
起動メッセージをしっかりと読みたい場合は、シェルプロンプトでdmesg | lessと入力します。これで、1画面ずつ起動メッセージの内容を読むことができます。次に進むにはスペースキーを押し、終了するにはqキーを押してください。 |
実は、パイプはすでにこの解説書の中で紹介されています。前にmanページについて触れたときに、次のコマンドを使用してmanページを印刷しました。
man ls | col -b | lpr |
ここで、man lsの出力は、colと呼ばれるフィルタに送られ、-bオプションによってプリンタ向けにテキストがフォーマットされます。そして、lprコマンドによってプリンタに送られます。
別の例も示しておきましょう。次のように入力してください。
grep コーヒー haiku.txt | lpr |
こうすると、haiku.txtファイル内の、「コーヒー」という語を含むすべての行が印刷されます(grepについての詳しい説明は、grepコマンド項を参照してください)。
moreとlessのおもな違いは、lessではファイル内で先に進むことも後戻りすることもできるのに対し、moreでは先に進むことしかできないということです。
ここで、moreのmanページを見てみますが、今度はmoreを使って開いてみましょう。これは、manの出力をmoreにパイプすることによって行います。
man more | more |