【初心者向け】Linuxパイプラインの使い方を詳しく!

pipeline
  • このエントリーをはてなブックマークに追加
  • Pocket

Linuxのパイプラインとは、複数のコマンドを組み合わせて使うための手段だ。

パイプとは「|」のことを指していて、パイプによっていくつものコマンドを組み合わせて複雑な処理ができるようになる。

このページではLinuxのパイプラインについてご紹介しよう。

パイプラインとは?

パイプライン

「パイプライン」とは少々難しく言うと、「コマンドの入出力をコマンドへ引き渡す処理」のことを指す。

LinuxなどのUnix Like Systemのコマンド、特にコマンドラインで使われる。「パイプ」とは直訳すると「配管」だ。このパイプを通して、入出力の情報がやりとりされる。

小さなコマンドをパイプで連結することによって、複数のコマンドがまるで一つのプログラムのように動作する。その出力結果を自由に操ることができるわけだ。

コマンドをつなぐ

後ほど詳しく説明するが、例えば「ls -1 | sort -r」  などだ。

ぜひLinuxを立ち上げて、叩いてみてほしい。

lsの結果をsortコマンドで逆順ソートした結果がかえってくる。簡単な例だがもっと複雑にコマンドを、複数連結することも可能だ。

パイプとコマンドは幾つでも連結可能だが、大体多くても3つぐらいで大概の用はすむことが多い。

Unix Like Systemのコマンドが単機能的なのにはパイプ機能が背景にある。Unix哲学では「小さいことは美しい」「プログラムはフィルタとして動作するようにすべき」という、教示があるのだ。

パイプラインは、コマンドを繋げていくだけなので、複雑なアルゴリズムなどはぬきにして使える。「プログラミングは苦手」という人でも何度か触れば感覚がつかめるだろう。ぜひチャレンジしてほしい。

ちなみに、「|」は「Shift+\(¥)」で入力できる。

実際にパイプを使って見る

基本的な使い方

では実際にやってみよう。どのように記述するのかというと、いたってシンプルだ。

$ <command> | <command> |...

となる。コマンドとコマンドの間にパイプを挟んでいく。

例えば、次のように打ってみてほしい。<hoge>の部分はあなたのユーザ名でいいだろう。

$ ps aux| grep <hoge> | sort -r

pipe ps auxコマンド

 ps auxの結果をgrep <hoge>でhogeの含まれる行を抽出、それをsortで並びかえた結果がえられる。

grepコマンドではパイプがよく使われる。

上の例では、三つのコマンドがパイプによって接続され動作したのだ。これを「>」などのリダイレクトを利用するとファイルへ保存可能だ。

いくつかの例

いくつか実際に叩いてみてテストをしてみよう。

$ dmesg | less

dmesgは起動時のシステムのメッセージを表示するコマンド、lessコマンドは1画面ずつ表示するコマンドだ。

これを実行すると起動時のメッセージが1画面ずつ表示される。dmesgの出力結果がlessコマンドに引き継がれている形だ。

$ ls | wc -l

wcコマンドは文字数をカウントするコマンドだ。-lオプションで行数をカウントする。

lsコマンドによってファイルやディレクトリ名が出力され、その行数をカウントするコマンドになる。つまりは、今いるディレクトリのファイルとディレクトリ数をカウントすることになるわけだ。

パイプラインで使えるコマンド

2つご紹介しておこう。

teeコマンド

teeコマンドは処理を2つ同時に行いたいときに使える。標準入力から読み込み、それをファイルと標準出力に分岐させる。言葉で言うと難しいかもしれないが、コマンドを見ると単純だ。

$ ls -l | tee ls_log | wc -l

lsコマンドの実行結果をls_logファイルに書き込むと共に、「wc -l」で行数をカウントしている。

このようにファイルへの保存とコンソール上の出力に分岐させることができるのが、teeコマンドだ。

xargsコマンド

もうひとつ便利なもので、「xargs」というコマンドがある。

tarやrmといったコマンドは引数をパラメータとして受け取る必要があるため、パイプでものをひきわたすと、怒られてしまう。

そこで標準入力をコマンドの引数として変換してくれるxargsを使うことになる。

今回はtarコマンドを例にあげてみる。hoge.tar.gz huge.tar.gzなどの複数のtarファイルが存在しているとき「tar -xvf *」 のようにしても解凍できない、tarは複数のtarファイルを一度に解凍できない。そこで

$ ls -1 *.tar.* | xargs -n1 tar -xf

としてみる。

pipe xargs

現在3つのtarアーカイブがある。

pipe xargs

無事解凍できるはずだ。「-n<N>」はいちどにひきわたすパラメータを指定するオプションだ。今回は一ずつわたすので「-n1」となっている。このように、パラメータをうけとらないと動作しないプログラムもしっかりと対策措置がある。

のちに他のページで紹介するが、これらはスクリプトを書くための基礎知識につながっているので是非色々なコマンドと組み合わせてコマンドラインをエンジョイしてほしい。

まとめ

このページではLinuxのパイプラインについて詳しくご説明した。

基本をまずは押さえて、teeやxargsも使える機会があれば積極的に利用していこう。

  • このエントリーをはてなブックマークに追加
  • Pocket

このページの続きや関連ページは下記から一覧で確認できます。

IT講師に興味はありませんか?

・「今までIT講師をやってきたが、更に多くの講義を行いたい」

・「エンジニアとしてやってきたが講師業に魅力を感じている」

・「講師として活躍するためにベースとなる知識を知りたい」

・「様々な分野や言語の講師にチャレンジしてみたい」


という方はぜひIT講師募集のページをご覧ください。


リスキルテクノロジーでは「受講している方々にITを好きになってもらう」ことを目標に、同じ目標に向かって歩んで行ける講師の方を常に探しています。


システム開発やインフラ構築などのエンジニアリング経験を活かし、新入社員などの未経験者や経験の浅い初学者の方々に対してITトレーニングを行っていただくことになります。


テキストやカリキュラムは事前に用意されており、それらを元に講義を進めていくため、IT講師をはじめて実施する方でも安心してトレーニングを実施できます。


IT講師募集のページを見る

SNSでもご購読できます。

コメント

コメントを残す

*

未経験からの育成制度も充実
IT講師に興味はありませんか?

リスキルテクノロジーでIT講師の積極募集を開始! 経験・未経験問わずご応募可能。育成制度で講師スキル向上も目指せます

IT講師に応募する