• ベストアンサー

シェルスクリプトの考え方・良い規約・大切にすべき事

シェルスクリプトは長い歴史を積み重ねてきているように思います。 長い歴史の中で自ずと集まってきた、考え方みたいなもの・大切にすべきこと・良い規約など 勉強する事に価値がありそうな気がしてきました。 そういったことが良く書かれた本・サイトがあれば教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • jjon-com
  • ベストアンサー率61% (1599/2592)
回答No.4

DEC社のVAXミニコンでUNIXに出会ったオジサン世代としては, カーニハン&パイク「UNIXプログラミング環境」を推してみたいです。 内容についてはAmazonのカスタマーレビューをご覧ください。 http://www.amazon.co.jp/dp/4871483517/ 私は20代のころに読んでいますから,感動というか衝撃でしたね。 Amazonマーケットプレイスはなかなか良い状態の古本が安価で入手できるのでよく利用するのですが,この本も1000円ちょっとで購入できます。

mathfuru
質問者

お礼

これは興味を引かれます。お手頃だし、購入してみようと思います。 ありがとうございます。

その他の回答 (3)

noname#211629
noname#211629
回答No.3

質問がやや漠然としていて的確な回答ができるかどうか分かりませんが、個人的には、シェルスクリプトの神髄は 「既存の単純なコマンドを上手く組み合わせて、高度な処理を簡単にコマンド化、定型化できる」 というところにあると思っています。 そのような意味では、Windows のバッチスクリプトも考え方は変わりません。 プログラミングの実際という観点においては、古いですが以下の資料が参考になるでしょう。 http://www.speech-lab.org/~hiroki/csh-whynot.euc 「Cシェルではやりたいことが安全にできない」と言っているのですが、「やりたいこと」に着眼して読めば、多くの人がシェルスクリプトに求めるもの、あるいは求めていないものが大よそ理解できるかと思います。 (この点で Windows のバッチスクリプトは非常に劣る) あとは定番サイトのこことか。 http://www.atmarkit.co.jp/flinux/rensai/smart_shell/01/01.html 書籍で本格的に勉強するならこれがオススメ。 入門UNIXシェルプログラミング―シェルの基礎から学ぶUNIXの世界 シェルプログラミングの世界では定番の、Bourne 系のシェルは、"構文設計上の欠陥" とも呼べる弱点や穴があります。 (だから使うな、という意味ではありません。ほぼ全ての環境で使えるのは非常に魅力的です) 書籍やサイトによって、良いとされる回避方法が違います。そこだけ注意でしょうか。

mathfuru
質問者

お礼

> プログラミングの実際という観点においては、古いですが以下の資料が参考になるでしょう。 > http://www.speech-lab.org/~hiroki/csh-whynot.euc これは特に、発展の歴史がくみ取れそうで、参考になりそうです。 ありがとうございます!

  • vaidurya
  • ベストアンサー率45% (2714/5983)
回答No.2

8年間、常用環境はLinux系OSだけですが… 私自身は、シェルスクリプトも使いこなせないというか 自分が、何よりも、Windowsよりも信用できないと思っていますから 複雑なスクリプトは書きません。 最もバグがおきないスクリプトは 代入も分岐もしないスクリプトと思っていますから そのレベルのスクリプト以外は、ほとんど使いません。 (ファイル名もハードコーディングすれば、代入ミスでのファイル破壊はおきないし) でも、名著"UNIXという考え方"は読まなきゃなぁとは思っています。 この本の紹介記事を見るだけでも、考え方の根幹は垣間見れるのですが やっぱり、ちゃんと読まなきゃだよなぁ…と思ってはいます。 #そう思いつつ、もう8年か…

mathfuru
質問者

お礼

ご回答ありがとうございます。

  • dscripty
  • ベストアンサー率51% (166/325)
回答No.1

とりあえず、いま、思いだせたことだけね! できるだけ、自分はなにもしないで処理は個々のコマンドにまかせる。 複雑な処理を一つのコマンドにさせるのではなくて、 個々のコマンドに単純な操作をさせて、それをパイプでつないで、複雑な処理を実現する。 パイプで繋ぐので、コマンドが出力をブロックしないように気をつける。 繰り返し処理はプロセス生成を減らすように心掛ける。 たとえば、 find -exec ... より find ... -print0 | xargs -0 ...

mathfuru
質問者

お礼

なるほど。ありがとうございます。

関連するQ&A