シェルで遊ぼう

こんにちは。

いくつか考えているテーマのうち、最初の話題は、「シェルで遊ぼう」です。
よければ、シェルビギナーの方々に、ご興味を持っていただけるとうれしいです。シェル上級者の方にはつまらないかもしれません。

シェルということで、linuxを話題にします。

私自身、元SIerで、かつてはWindowsSolarisを仕事で扱っていたことがあります。
linux歴は長いものの、自宅での趣味の範囲内です。つまり、linuxに関しては、アマチュアです。(^^)

家ではなにを使っているかというと、DebianSlackware を使ってます。
Debian は、家庭内用ディスクサーバ用で、Slackwareが普段使い用です。

Slackwareで、FirefoxThunderbirdVirtualBoxLibreOffice などの、多くの人が定番で使っているであろうアプリを私も使ってます。
Slackwarenoで特徴のひとつとして、他のディストリビューションと比べて、パッケージマネージャが弱いです。
扱えるパッケージもlinuxの標準的なものに少々の+α程度だし、整合性チェックなんてできません。
上記のパッケージはインストールできません。
厳密には、Firefoxなど、ものによっては英語版をパッケージマネージャで管理・アップグレードできるみたいですが、私は日本語版が使いたいです。
なので、日本語版をmozillaのサイトからダウンロードして、使ってます。

Firefoxはよく使うアプリなので、PCが動いて入れほぼ、Firefoxも起動してるので、ヘルプから更新確認できます。
でも、やはり、止まっていることもあります。わざわざ、アップグレードの確認のために、Firefoxを起動するのは面倒です。
それに確認したいアプリが、一つならまだいいですが、私はいろんなのを一度で確認したいです。

なので、ターミナルで、シェルで確認したいなと思い、ちょっとしたおもちゃをシェルで作りました。

[写真]
ここに写真を貼りたかったのですが、トリミングして横長な画像なんだけど、横長にならなくてトリミング部分に空白できてしまったので、残念。

まぁ、やっていることは、インストールしているバージョンとサイト上のバージョンを比較して、違うか同じかを出すだけです。
さすがに、シェルの全文を掲載するのは、なんらかの問題があるかもしれないので、写真とポイントの部分だけご紹介します。

シェルのポイントの抜粋を以下に示します。

PKG_VER_INSTALLED=`firefox -v | cut -d ' ' -f 3`
wget -q -O firefox.html http://archive.mozilla.org/pub/firefox/releases/

PKG_VER_NEWEST=`cat firefox.html | grep href | sed 's/^.*\">//' | grep '^[[0-9]' | grep -v b | grep -v rc | cut -d / -f 1 | sort -n | tail -1`

ポイント1:サイトのページ内容のhtmlデータを取得する。
      重要なのは、テキストで読めるバージョンが書いてあるページであること。
      サイトのページによっては、クリックしてDLページへ飛ぶため、
      画像で貼ってあるようなものもあるので。
ポイント2:htmlデータから、各種のコマンドによって、欲しいバージョン情報だけに絞り込む。

やってることは、インストール済みとサイトの最新のバージョンを確認して変数にセットしてます。
後は、この2つの変数を比較して、メッセージを表示するだけです。煮るなり焼くなり自由です。
写真では、ターミナルにechoで色を付けて表示してますが、実際の私のシェルでは、echoとnotify-sendの両方を使ってます。
notify-sendでも色を付けたりしてるのですが、うまくハードコピーが撮れなかったので写真は無しです。
firefox以外も、上記の例文の部分を変えて、他のパッケージ用シェルを作って、写真のように一辺に起動して確認してます。

上の例文だけでも、シェルのビギナーの方には、ちょうどいいおもちゃになるのではないでしょうか。
私がテキストから欲しい部分の切り出しに使うコマンドのほとんどが登場してます。登場していないのは、head、rev でしょうか。

シェルのビギナーの方が、これからいろいろシェルを書いていく上で、欲しい部分の切り出しは、頻繁にやることになるでしょう。
おもちゃですが、こういうのを使って切り出すんだなという、参考にでもなれば幸いです。


私自身は、昔のことですが、Solarisを使う仕事でシステム管理用の小道具として作っていたシェルをいくつか作っていましたが、その頃、sed正規表現が苦手で苦労しました。
なんだか、Solarisを使う仕事から離れて、言うなればシェル使いとしてはアマになってから、sed正規表現の腕が上がりました。
あの頃に使えていれば、もっと良いシェルを書けたところもあっただろうにと思います。(^^)


といことで、今日は、ここまで。

ブログビギナーなので、見づらいのは、ごめんなさい。
シェルの抜粋のところも四角い枠に入れたかったのですが、文字の色が変わっただけになってしまった。(TT)


2011/11/25 02:01(JST)記 (最終更新:2011/11/26 12:52(JST))