パイプ「|」を使って 複数のコマンドを組み合わせる
当ページのリンクには広告が含まれています。
パイプ「|」を使って 複数のコマンドを組み合わせる方法を紹介します。
パイプとは
パイプとは、コマンドの標準出力を次のコマンドに渡す処理のことをいいます。
パイプ(pipe)を和訳すると「配管」という意味があるので、コマンドとコマンドを接続する配管のような機能をもっている!?ということでしょう。たぶん。処理と処理の間には縦線の記号「|」を使います。
ちなみにパイプを使った処理のことを「パイプライン処理」といいます。
※ 「|」記号は、 「Shift」キーを押しながら「¥」キーを押すと入力できます。
複数のコマンドを組み合わせる
Linuxにはさまざまな機能のコマンドが用意されていますが、パイプ「|」を使って複数のコマンドを組み合わせるとより快適にCUI(Command-line User Interface)環境を操作することができます。
それでは実際にコマンドを組み合わせてみましょう。
ファイルとディレクトリのリストを表示する「lsコマンド」の実行結果を 標準入力の内容を標準出力とファイルに出力する「teeコマンド」と組み合わせます。
$ ls | tee ls.txt file1 file2 ls.txt sys.log
lsコマンドの実行結果が標準出力に表示されるとともにファイル「ls.txt」に出力結果が保存されます。
$ cat ls.txt file1 file2 ls.txt sys.log
次は、現在実行されているプロセスを表示する「psコマンド」とパターンにマッチする行を表示する「grepコマンド」を組み合わせてみましょう。この組み合わせは大変便利で、よく使います。
$ ps aux | grep apache root 14398 0.0 0.3 71792 3132 ? Ss 16:02 0:00 /usr/sbin/apache2 -k start www-data 14401 0.0 0.2 71524 2200 ? S 16:02 0:00 /usr/sbin/apache2 -k start www-data 14403 0.0 0.2 295228 2628 ? Sl 16:02 0:00 /usr/sbin/apache2 -k start www-data 14404 0.0 0.2 295220 2624 ? Sl 16:02 0:00 /usr/sbin/apache2 -k start karuma 14642 0.0 0.0 7404 872 pts/0 S+ 16:04 0:00 grep apache
psコマンドをgrepコマンドを使わずに実行するとだらだらと現在実行中のプロセス一覧が表示され、目的のプロセスを探すのが大変です……。しかし!パイプ「|」とgrepコマンドを組み合わせると!このようにWebサーバー「apache」が適切に動いていることを確認することができます。
「パイプを制する者はコマンドラインを制する」
というような格言はありませんが、パイプは大変便利なので、いろいろ使い倒してみましょう。