皆さん、日ごろパイプ使ってますか?
いや、タバコ吸わないし。
という人、それはパイポですね。
パイプって何よ?
そう思われても仕方がないと思います。
マイナーでい続けてしまう、パイプ側にも非はあると思いますので。
パイプとは、「|」ですね。
たいてい、キーボードの、「¥」と同居していますね。
つまり、「Shift」キーを押しながら「¥」を打つと出てくるやつですね。
私のキーボードは、なぜか、「ろ」と同居していて、キーに印字はされているものの、一向に表示しようとしてくれない、おちゃめな奴です。
こいつ、このパイプですがめっちゃ便利なのに、知られていない、かつ似ている奴がいすぎる
「|」、「I」、「l」、「1」 ※パイプ、大文字アイ、小文字エル、数字のいち
なので、視認性が下がり、普通にいたら邪魔者扱いされてしまうこと間違いなしです。
普通に邪魔者じゃね?
確かに、言われたら邪魔者のような気がしてきました。
違うんです、誤解されやすいんですが、エンジニアからしたら、めちゃくちゃ助かっているんです。
例えば、普段、PCでテキストなどのメモを開いて、なんて書いてあったっけなーって状況あると思います。
Linuxでも同じ状況になります。
ただ、Linuxの場合だと、WIndowsと異なり、CUIとなり、文字のみでのやり取りとなります。
ただ、ファイルを表示するだけであれば問題ないのですが、特定の文字だけを表示したいとなると、行数が多くて大変となります。
そんな時、パイプ君が、パイプ役となり、最大限にコネクションを活用して、良きに計らってくれます。
パイプ君の働き
CUIだと読みにくいよねーと言いながら、文字をバンバン書いてしまっていたので、反省の意味を込めて、実際にパイプ君の働き方を見てみましょう。
以下が、実際のLinuxの画面です。
動きとしては、rootという強いユーザが、サーバ上で(@以降から:までがサーバ名です)の「/tmp」というフォルダにある、test.txtというファイルを、catというコマンドを使用して、表示している内容となります。
※Windowsで言うと、「tmp」フォルダの中の、「test.txt」を開いている状態ですね。
メモ帳でと書こうとしましたが、catとメモ帳は若干編集できる点で違ったので、言うのやめました。
この中から、「a」だけ含まれる行だけ表示してと言われたとしましょう。
だけ表示するは、grepというコマンドを使います。
こんな感じで、grepというコマンドで、aが含まれる行だけ表示することができます。
ということで、「|」が登場することなく、処理できましたとさ。
パイプはやっぱり邪魔者だということが証明されてしまいましたね。
パイプ君の働き
そうじゃなく、パイプの働きに関して、称賛しようという記事だったのに、終わるところでした。
ドラえもん のび太の魔界大冒険のように、話が途中で終了してしまうところでしたね。。
では、改めて、先ほど、catというコマンドとgrepというコマンドを実行しました。
ここにパイプを登場させてあげることで、結果は同じですが、パイプの威力を最大限発揮するポイントがあります。
この実行結果は、一見すると、先ほどのgrepの結果と同じですが、処理としては、異なる動きをしています。
解説すると、catというコマンドで、test.txtを表示します。
その結果を、パイプがgrepに渡して、もう一度処理をさせています。
つまり、catとgrepのパイプ役をしてくれたということです。
内容が簡単なので、あまり例題としてはいまいちでしたが、実行した結果を次のコマンドに渡して、もう一度実行してもらうという処理は、処理の内容を1行で書けたりするので、見やすさが上がったり、メリットがあります。
sed、awkなど、文字列の処理の際に大活躍してくれます。
まとめ
普段はなかなかお目にかかる機会がないパイプですが、見えないところで頑張っているパイプ君がいることで、処理がしやすくなったり、wikiの表が見やすかったりしています。
インフラエンジニアの仕事も、なかなか人の目にはつきにくいですが、そういった下支えをしている人がいるおかげで、世の中のシステムが回っているんだということに、少しでも目が向いていただければ幸いです。