今日の人気記事

  1. ssh - リモートマシンにSSHでログイン - Linuxコマンド
  2. tar - アーカイブの作成・展開 - Linuxコマンド
  3. gzip - ファイルを圧縮・展開 - Linuxコマンド
  4. ファイルの解凍・圧縮 - Linuxコマンド一覧(.zip .gz .Z .bz2 tar.gz .tgz tar.Z .taz .tar.bz2 .tbz2)
  5. rsync - 高速なファイル同期(バックアップ) - Linuxコマンド

パイプ「|」を使って 複数のコマンドを組み合わせる

スポンサーリンク

パイプ「|」を使って 複数のコマンドを組み合わせる方法を紹介します。

パイプとは

パイプとは、コマンドの標準出力を次のコマンドに渡す処理のことをいいます。

パイプ(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」が適切に動いていることを確認することができます。

「パイプを制する者はコマンドラインを制する」

というような格言はありませんが、パイプは大変便利なので、いろいろ使い倒してみましょう。

スポンサーリンク