質問

2009年07月08日 10時39分
  • シェルスクリプトの勉強方法

情シスのオープンナレッジ『Syszo』サービス終了のお知らせ

質問

お世話になっております。

シェルスクリプトの勉強方法についてお聞きします。

開発経験が全くないのですが、インフラ担当であっても
Unix・Linuxサーバの運用管理上、シェルスクリプトができないと
この先やっていけないなと常々感じております。

シェルスクリプトを習得するための最初の入り方として、
どういう形で勉強されていたかをご参考までにお聞かせ願います。

現状、どうしてもシェルスクリプトが必要な時は
ググッてそれを加工したものを検証して実装するという状態です。

またお勧めの書籍やサイトがあれば、是非教えて頂ければと思います。
よろしくお願いいたします。

4件の回答があります

回答

シェルスクリプトは私も苦手なんですが、perlはいかがでしょうか?
初めてのPerl
http://www.amazon.co.jp/%E5%88%9D%E3%82%81%E3%81%A6%E3%81%AEPerl-%E3%83%A9%E3%83%B3%E3%83%80%E3%83%AB%E3%83%BBL-%E3%82%B7%E3%83%A5%E3%83%AF%E3%83%AB%E3%83%84/dp/4873111269/ref=pd_cp_b_1

昔買った本ですが、非常に読みやすいです。第一章のチュートリアルだけでも読んで、書いて、実行する価値があるかと思います。

また、SoftwareDesignの2009年4月号に「システム運用/管理に役立つ『開発力』」という特集があります。ちょっと微妙だなーと思いますが、お近くに持っている人がいたら見せてもらってもいいかもしれません。

2009年07月08日 11時19分

回答

現状、どうしてもシェルスクリプトが必要な時は
ググッてそれを加工したものを検証して実装するという状態です。

シェルといえども言語の一つで、言語であるからには「習うより慣れろ」が当てはまると思いますので、まずそこから始めてみる、というのは決して間違いではないと思います。後は、疑問が出てきたとき、ちゃんと理解できるようになるまで徹底して調べるか、「動くからいいや」でそのままほったらかしにしてしまうかで、「伸び」が違ってくるのではないか、と思います。

…自戒の意味も込めて。;-)

参考書籍、サイトについて。

もちろん、O’Reilly のシリーズなどは手元に置いておいた方がいいとは思いますが、暇な時に眺めてみるのならなるべく実例サンプルが沢山紹介されている方が「飽き」が来ないのではないかと思います。以下のサイト、英語の情報になりますが、そのまま使えそうなもの、お遊び含めていろいろな実例が紹介されていますので、「息抜きに」眺めてみるのはいかがでしょうか。
http://www.tldp.org/LDP/abs/html/index.html

英語の情報ではありますが、この先何か問題にぶち当たったときはきっと

英語の情報をあさらなければならないことが出てくると思いますので

英語のドキュメントを読めるようになっておいて損はないと思います。

2009年07月08日 11時26分

回答

UNIX/Linuxのshellは大好きです。
部品(コマンド)を組み合わせることで新しい部品を作れるのは、面白いですよね。
ShellだけでなくAWKも組み合わせれば、こんな便利な運用ツールはないと(勝手に)思ってます。

csh使いなので、ちょっと違うかも知れませんが・・・。

個人的な愛蔵参考書なのですが
・UNIX C SHELLフィールドガイド
http://www.personal-media.co.jp/book/lang/029.html
・プログラミング言語AWK
http://w3.shinkigensha.co.jp/books/4-7753-0249-3.html
・UNIXという考え方 −その設計思想と哲学
http://www.bk1.jp/product/01993881

特に3番目「UNIXという考え方 −その設計思想と哲学」はオススメです!なにも身につきませんが「Shell(UNIX)って素晴らしい」と感動します。

私の場合は、新人だった頃にシェルマスターの先輩に練習問題を出されているうちに慣れてしまいました。
「運用ツール作って。ディレクトリAからBへ、ファイルを移すこと。ただし、ファイル名にCがあったらDに変換しながら。あ、タイムスタンプはそのままね。あとA〜Dは引数(標準入力)で指定出来るようにしてね。引数はフルパスの時と相対パスの時があるかもよ。あと引数が足りなかったり引数が間違ってたら、ちゃんとエラー内容を吐いてね。引数が何も指定されずに実行されたら、使い方のヘルプを表示(標準出力)すること。引数に[-t]があったら、テスト実行として実処理はしないようにしてね。うーん、慣れてれば15分でいけるかな。今回は1時間でどうぞ。はいスタート!」
みたいな感じでした。

大変かも知れませんが、是非素晴らしきShellの世界へどっぷりつかって下さい。

回答

管理者たるべき者、シェルスクリプトをマスターすることは必
須でしょう。常々感じられていることは正しいと思います。

さてシェルスクリプトに限らず、どんな言語でもプログラミン
グは実際にたくさん書かないと上達しないと思います。興味を
持っていろいろ書いてみることをお勧めします。

学び方はググってでてきた誰かのスクリプトを参考にするのも
よし、/etc/init.d/ 以下にあるスタートアップスクリプトを見
て学ぶもよいかと思います。Bourne shell 系のスクリプトであ
れば、スタートアップスクリプトはとても参考になります。

あとシェルスクリプトをマスターする上で欠かせないのは、awk
や sed をうまく使いこなすことです。私は O’Reilly の
  『sed & awk プログラミング』
を参考にしています。

sed/awk/tr などの UNIX コマンドを駆使してシェルスクリプト
を書いていると、「perl や ruby で書けばいいじゃん」と言わ
れるかもしれません。確かに一つの言語で全てがまかなえるの
でその意見も然りです。ですが、いきなり perl や ruby など
の高級言語にいく前に、シェルスクリプトである程度のことが
できるようになって、それから「処理が遅いな」とか「機能的
に不可能だな」と思ってからでも遅くないかなと個人的には思っ
ています。また最近ではどうだかわかりませんが、以前 UNIX
では perl や ruby が標準コマンドではなかったので、どうし
ても管理者をやる人はシェルスクリプト+UNIX標準コマンドで
なんとかやったものでした。ですので、どんな環境にいっても
通用する管理者になるためには、まずシェルスクリプトをマス
ターするのがよいと思います。

あなたもコメントしましょう!