この記事を読むのに必要な時間:およそ 1 分
コンピュータは便利ですが,それでも手間のかかる作業は多々あります。とくにGUI(グラフィカルユーザーインターフェース)のソフトウェアで次のような作業をやらないといけないとしたら,面倒そうだと思いませんか?
- 複数のファイルのファイル名を一括で変更する
- 大量の画像ファイルの中から全く同じ画像のファイルを探す
- 複数のファイルに記録されている数ヵ月にわたるログから特定の期間の情報だけを抽出する
これらの作業をするには,ファイラー(Windowsのエクスプローラーなど)やエディタだけでは限界があります。専用ソフトをいくつか使ったり,単純な手作業を繰り返したりして作業することになります。
その点,シェルやスクリプト言語を使えば細かな条件をプログラミングすればどんな作業でも片付けられます。また,ターミナルのCLI(コマンドラインインターフェース)上では,コードを書いてそのまま実行できるため,たいへんお手軽です。このようなターミナルで書くその場限りの一行プログラムをワンライナーと呼びます。
LinuxやMacを使っているITエンジニアや研究者なら,パソコンにはいつもターミナルが立ち上がっているでしょうから,ワンライナーを書けるようになると気持ちよく仕事ができるかもしれません。多くの作業をターミナルだけでこなせれば,わざわざ画面やソフトウェアを切り替えなくて済むのでストレスも少なく,作業が捗るでしょう。
シェルをお勧めする理由① 入出力が簡単
ワンライナーを書くのは,シェルでも,PythonやRubyなどのスクリプト言語でもかまいません。よく「シェルではさまざまなコマンドが使える」と言われます。でも,スクリプト言語もライブラリが充実しており,基本的な機能はあらかた用意されています。その点では差はないと言えそうです。
シェルに強みがあるとすれば,すごく簡潔に書けるところでしょうか。とくに入出力の簡潔さはシェル特有のものです。ファイルからの読み込みは「< ファイル名
」,書き出しは「> ファイル名
」と書くだけで実現できます。じつに簡単です。
シェルをお勧めする理由② Linuxに精通できる
シェルはOSを扱うためのインターフェースなので,ファイルやディレクトリの操作,ファイルのアクセス権管理,アカウント管理,テキスト処理などについては簡便なコマンドがそろっています。こういった用途ならば,スクリプト言語でやるよりも適材適所でコマンドを使うほうが手っ取り早くワンライナーを書けるでしょう。
ちなみに,前項で紹介した「>
」の記号ですが,「> /dev/tcp/IPアドレス/ポート番号
」と指定すれば,ネットワーク経由で別のコンピュータにデータを送信できます。暗号化されずに送信されるので疎通確認くらいにしか使えません。でも,ファイルを扱うのと同じ方法で通信を行えるように機能が抽象化されているのは,Linuxのおもしろいところです。今のはほんの一例ですが,シェルで多くの仕事をこなし,いろんなコマンドやファイルに触れていると,おのずとLinuxのしくみに詳しくなっていきます。それが,シェルでワンライナーを書く一番の醍醐味かもしれません。
『1日1問、半年以内に習得 シェル・ワンライナー160本ノック』では,数多くの例題を通してシェル,コマンド,Linuxに触れることができます。この記事で興味を持ったら,ぜひ手に取ってみてください。