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