ラベル shell の投稿を表示しています。 すべての投稿を表示
ラベル shell の投稿を表示しています。 すべての投稿を表示

2008年7月27日日曜日

【詳解シェル】11章 シェルスクリプトとセキュリティ

こつこつ。

  • 「Unixにとってセキュリティはとても面倒な問題です。Unixにまつわるほぼすべての作業でセキュリティの問題が発生する可能性があり、システム管理者はその対策に頭を悩めています」そなんだ。Plan9にいけと?
  • Chet Rameyのテンプレ、ありがたい。
  • シェルおよびシェルスクリプトでは、もう、基本的にはsetuidもsetgidもつかわん、と。
  • kshは特権モードがあり、setuidをセキュアに使うことが可能。

お、一応通読は終わった!
これも体で覚えなきゃ、なんだけど。でも嬉しい!

2008年7月24日木曜日

【詳解シェル】10章 移植性と独自の拡張

こつこつ。

  • おお、bashはshellの状態を保存できるのか。
  • teeはしってたけど、プロセス展開ってここまでできるとはしらなかった。
  • bashの初期設定のファイルの役目が、それがどのようなシェルスクリプトで実現されているかが書いてある。ありがたい。

2008年7月22日火曜日

【詳解シェル】9章 ファイル操作

こつこつ。

  • stat、標準化されればいいのに。
  • おお。OSXの内部時計は32bitだ。。。
  • OSXのtouchはGNUじゃない。BSDってことか? BSDである、っていうことはどういうことなんだろ。
  • 「findコマンドには60種にも上るオプションが用意されいることもあり、」うむー。
  • OSXは、"find"単体はダメ。"find ."とした。
  • ありゃりゃ。findは本に書いてあることとOSXでの実際が全然違う。。。両方ともPOSIXなんじゃないの? GNUとBSDの違い???
  • finkにfindutilsがあったが、私の/sw/bin/にはない。ちょっとしらべたが、fink自身のupdateが必要なもよう。というわけで、finkのselfupdate。compileの間、先の方をみとくかな。
  • ということで、xargs以降をさきにやっとく。
  • 東大のbindist reposigoryがなんかおかしげで、findutilsのインストール失敗。bindistのrepoをmasterに再設定して成功。
  • をを! 本のとおり動く。。。
  • finkをupdateしたら、.bash_profileで/sw/bin/init.shの実行がアクティブになった。これ、中をみるとPATHがprependなので、とりあえずコメントアウトしておく。

2008年7月21日月曜日

【詳解シェル】8章 実践的なスクリプトの例 (その3)

こつこつ。

  • ログファイルの名前は秒までの日時を含めるとして、分離する。ファイル名の衝突を避けるために、ログファイル生成前には1秒のsleepをかける。頭いいなぁ。
  • 「1度に3つものシェルを扱うというのは非現実的です。」
  • sshコマンドで、ここまでのシェルスクリプトを渡すという発想がなかった。そしてログはリダイレクトでインストール元に集約できると。

うーん。知らないことが多すぎるなぁ。こつこつ。

2008年7月19日土曜日

【詳解シェル】8章 実践的なスクリプトの例 (その2)

「8.2 ソフトウエアのビルドを自動化する」から。

  • いわゆるtar玉って「GNUプロジェクトで採用されたパッケージ形式」だったんだ。
  • おお、"The GNU Coding Standards"というのがあるんだ。うーむ。ものをしらないな。。。
  • 私の環境では、archが"i386"と言う。64じゃないのかleopardは。machineは、というと"i486"。。。
  • この定型的に繰り返されるオプションのコードパターンは、シェルスクリプトの機能では抽象化できんのか?

う、だめだ。本体コードの写経が終わったところで、頭痛がする。。。ここまで。

2008年7月18日金曜日

【詳解シェル】8章 実践的なスクリプトの例

こつこつ。

  • 8.1のpathfindをやる。おもしろい。けど、自分でこれがつくれるようになるかなぁ。shellは難しい。。。

2008年7月15日火曜日

【詳解シェル】7章 入出力、ファイル、コマンドの評価 (その2)

実は昨日は頭痛で朦朧としていたので、昨日の分のまとめから。

  • ファイル記述子。

    • POSIX的には最大10個のファイル記述子を1つのプロセスはもてる。
    • 0:標準入力、1:標準出力、2:標準エラー出力、とデフォルトで割当てられている。
    • とりあえず、1以降は次のような構文。
      1> hoge : ファイル記述子1にhogeファイルを割当て。
      2> piyo : ファイル記述子2にhogeファイルを割当て。
      3< puyo : ファイル記述子3を新規に作る。(入力用)
      3> puyo : ファイル記述子3を新規に作る。(出力用)
      2>&1 :ファイル記述子2の割当てを、ファイル記述子1のものと同じにする。
      0<&3 :ファイル記述子0の割当てを、ファイル記述子3のものと同じにする。

    • execで、割り当て変更や新規作成ができる。
      例:
      exec 2> /tmp/hoge
      exec 3< /tmp/piyo
      exec 2> /tmp/moge 3< /tmp/puyo

  • とりあえずのまとめ。間違ってるかも。
  • exprは使うな。算術計算なら、算術展開。
  • eval。こうやってshellのREPL?をみると、reader部分でPOSIXコマンド自体をコード生成に使えているので、ある意味マクロちっくなんですね。
  • サブシェルとコードブロック。

おもしろかった。
体調がいいときは、楽しめる。こつこつ。

【詳解シェル】7章 入出力、ファイル、コマンドの評価

こつこつ。

  • 「プログラミング言語としてのシェルの紹介はこの章で最後になります。」ええ?!!
  • たしかに、標準入出力というのはUnixのソフトウエアツールの根幹だな。
  • そうか、xsvなら、awk使わなくてもreadで読めちゃうんだ。
  • お、私のbashは、read -r に対応してた。
  • 今日は7.7まで。

明日はevalから。eval ?

2008年7月14日月曜日

【詳解シェル】6章 変数、条件分岐、繰り返し

お、この章はシェルスクリプトのキモかな?

  • 「シェルは基本的には文字列処理のための言語」
  • export -p や readonly -p すると、declareというのがでてくる。type declareするとbuiltinなので、exportやreadonlyはdeclareのエイリアス的なものかも。
  • 'test'、すげぇ。
  • やっぱり、対話的に試せる環境がある言語は、簡単に試しながらできるのでやってて楽しい。
  • getoptsも便利だなぁ。

2008年7月12日土曜日

【詳解シェル】5章 パイプラインの魔法

魅惑的なタイトル。

  • man 5にデータ構造があったんだ。
  • うむ。「繰り返し」はシェルは得意なんだと思うけど。
  • tsv-to-htmlはバグがあるよな? \tは't'にマッチしてしまう。
  • パイプラインの魔法、というのは、"パイプラインの魔法的な使い方"ではなく、"パイプラインって魔法的"ということだった。
  • シェルスクリプトとの比較に、C++とJavaはもってきても、perlとrubyはもってこない。

2008年7月11日金曜日

【詳解シェル】4章 文字列処理ツール

こつこつ。

  • 文字列処理ツールとしてsortが紹介されるのが、ちょっと意外。
  • ん?sort -> uniq -> fmt とくるということは、テキストファイル全体をひとつの文字列と考えているということか。
  • おお、stringsってナイスアイデア。

2008年7月10日木曜日

【詳解シェル】3章 文字列の検索と置換 (その2)

こつこつ。sedから。

  • えっと、.profileに$HOME/binがPATHに入るように書いたのにPATHに入ってないわな。> OSX
  • sedをプログラミング言語としてではなく、ライン指向の置換フィルタとして捉える。
  • おお。shにパイプで渡すと、それが実行すべきコマンドのリストになるのね。
  • このsedの説明、簡明だなぁ。
  • sedにおける(正規表現における?)ヌル文字の定義をきっちりおさえないといけなさそう。
  • フィールド。CSV的なものたちの取り扱い。
  • おお、awkはあまりにさらっと。
  • しかしこの本、各章のまとめのまとめっぷりが秀逸。

ここまで読んでの感想は、

  • やっぱりUnixというかShellというかは、テキスト指向かつ行指向ということを再認識。
  • 階層構造をもっているのってファイルシステムぐらいなのかな。
  • しかし昨今は階層構造をもった情報が多いからなぁ。どれだけShellが活躍できるか。

2008年7月8日火曜日

【詳解シェル】3章 文字列の検索と置換

こつこつ。
とりあえず、3.2.6 文字列の置換 (sed)の前まで。
これ以上はやっても惰性なので。

効率的に習得していく方法を工夫していかねば。

2008年7月6日日曜日

【詳解シェル】2章 さあ始めよう

こつこつ。

  • 「シェルスクリプトはシステム管理関連の作業や、既存のプログラムを連結してちょっとした処理をこなすといった目的に主に使われます」
  • .profileにパスを追加。$HOME/local/binにした。
  • 他は基礎事項かな。
  • 「2.9 まとめ」がよくまとまってて、書くことなし。

2008年7月5日土曜日

【詳解シェル】1章 イントロダクション

Unixシステムの歴史。

  • 新しい知識

    • 単機能な小さなアプリをいろいろつくる、というのは、当初は、思想的なことではなくPDP-11が貧弱だったから。
    • '初期POSIX' ⊂ 'XPG5' = 'POSIX(XSI入り)' = 'Single Unix Specification'。

シェルを勉強しなおす

シェルを勉強しなおす。
本は、詳解シェルスクリプトにする。
さすがに、単にシェルだけでは食い足りない気がするので。

2008年7月4日金曜日

コンピュータを使いこなすために

道具としてのコンピュータの使いこなしの訓練をしないといけない気がしてきた。
それにはまず、

Emacsの使い方を覚える。
 Emacs Lispを覚える。
シェルの使い方を覚える。
 シェルスクリプトを覚える。

ということが必要なような。
Unixが生活環境だとすると、他のことは、まずはこの上にのっかってくるように思う。
これらは、その「他のこと」の上にのっかってるんだけど。