パソコン悪戦苦闘記録

Linuxパイプ機能のおかげで基本コマンドで複雑高度な処理を実現

 UbuntuなどのLinuxのシェルには、複数のコマンドを連携させる便利な仕組みがあります。
 「パイプライン」、あるいは単に「パイプ」と呼ばれる機能です。

 その機能のことを少しだけ正確に、素人のくせに専門家ぶって説明すると
  「あるコマンドの標準出力を別のコマンドの標準入力につなぐ機能
です。

 簡単に言っちゃうとだ・・・、
    コマンドの実行結果を次のコマンドに手渡して、
    複数のコマンドで次々と処理していくことです。
 使い方は簡単で、コマンドとコマンドの間に、パイプという記号「|」を入れるだけです。
  <コマンド1> | <コマンド2> | ・・・
といった要領です。

 一つの使用例
  ls ~/ドキュメント | grep 'hoge'

 上記では、ドキュメントディレクトリ内のファイル名やサブディレクトリ名の一覧をlsコマンドで取り出し、その中から、さらに「hoge」という文字を含むものだけをgrepコマンドで絞り込んで、抽出しています。





 いつも使っているWindows PCは、基本的にGUI環境だから、コマンドライン操作はしません。だから、パイプライン処理のようなものは今まで見たことがなく、Linuxで初めてお目にかかりました。
 Windows PCでExcel等のVBAコードを記述するとき、変数などを使って複数のプログラムを連携させることは確かにあります。けれども、コマンドとコマンドを直接パイプでつなぐ仕組みではありません。
 このパイプライン処理を初めて見たとき、なかなかおもしろいなと感じました。
 Linuxを扱うことによって初めて触れることができた、新鮮な体験です。

 Linuxでは、一つ一つのコマンドは、単一の機能をしっかり果たしてもらうようにと設計されており、一つのコマンドにたくさんの機能を盛り込むようなことはしていません。Linuxの基本思想みたいなもんでしょうか。
 そのように複雑な機能を果たすコマンドがない代わりに、上記のようにパイプライン処理で、複数の基本コマンドを連携させる仕組みがとられているわけです。このことによって、複雑高度な処理だって、基本コマンドの知識だけで実現可能となります。

 もし、多数の高機能コマンドが用意されているとすると、そのことを覚えるだけでも大変になります。けど、その必要はありません。パイプ機能のおかげで、基本的なコマンドの知識さえ身に付ければ、それだけで複雑な処理も実行できるってぇことになります。
 おぉ、さすがぁLinux




 それでは、また次の記事で
goosyun

コメント一覧

goosyun
narkejp さん

 博学のnarkejpさんの情報提供は勉強になります。
 私の知らない時代のことまで、参考になります。
 いつも、ありがとうございます。
narkejp
Linux というよりも、お手本にした UNIX の流儀ですね。昔、MS-DOS でもこっそり中間ファイルを作ることで擬似的にパイプを実現していました。例えば購入一覧を作る buy-list.awk というスクリプトがあったとすると、1991年の備忘メモ memo1991.txt から「購入」という語を含む行を cgrep で探し出し、この中から日付とタイトルを整形してファイルにするとき、
>cgrep "購入" memo1991.txt | jgawk -f buy-list.awk > buy-list-1991.txt
というような格好で購入一覧を作ることができる、などですね。
ちなみに、cgrep や jgawk は MS-DOS 用に移植されていた日本語版 grep, awk です。
名前:
コメント:

※文字化け等の原因になりますので顔文字の投稿はお控えください。

コメント利用規約に同意の上コメント投稿を行ってください。

 

  • Xでシェアする
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

最近の「Ubuntu」カテゴリーもっと見る

最近の記事
バックナンバー
人気記事