csh 入門 ---- 困ったとき、質問と答。

スクリプトを作るときのコツを教えましょう。また うまく動かない場合の対策を考えます。
  1. 1 行 づつ kterm 上で動作を確認します。 うまく動いたら マウスで file に移動すれば ok です。 とくに パイプをつなぐときには、1 つ ずつ パイプを 増やしていくと間違いがすくないです。
  2. 最初の行で #!/bin/csh -v と -v をつけると、 1 行づつ komando を表示しますので、どこまで動いたかを 把握することができます。
  3. csh には、本当にいろいろなコマンドがありますから、 スクリプトを作らなくても、そのコマンドで ok という場合が少な くありません。man を見てみると option に便利なものがあります。 ( 例 % ls -lt | head を実行してみてください。)
  4. うまくいかない場合には、他の表現がないかを考えてくださ い。エラーメッセージによって、原因を分析することができます。 こういう データベースを誰かが作ってくれると助かります。
  5. エラーメッセージがでたら、まずその行だけを除いてみてく ださい。その行だけ、動作が正しくなるまで、kterm でいろいろ試 すと良いです。
  6. エラーを少なくするためには、どういう動作を期待している かコメントをいっぱい書くのが良いです。また echo で 変数を表 示してみるのも手です。
  7. 長いスクリプトは、短いスクリプトに分割すると分かりやす いです。スクリプトからスクリプトを呼ぶことができます。
  8. いつまでたっても終らないような場合には、入力を待ってい るか、無限ループに入っている可能性があります。前者なら C-d 後者なら C-c で 抜けてください。C-c で抜けられない場合には、 ps で process ID をみて kill する必要があります。
  9. 多くの人が使う コマンドは、できる限り安全なものにしてお く必要があります。file を消したり、作ったりする場合には、 file 名が重複しないようにする必要があります。とくに file を 消す場合には、必ず yes/no を聞くようにしましょう。
  10. スクリプトの先頭には、作った人の名前、日付(どちらが新し いかの判定に使われる。) version 番号、この スクリプトの使い かた、目的などを必ず書くようにしましょう。人間そんなに覚えて いられません。また他の人が改良することも常に念頭においておく 必要があります。
  11. システムによって、file の場所等が変更になる場合が良くあ ります。そのような file の場所等の変数は、スクリプトの先頭に まとめて定義をすると分かりやすいです。
  12. いろいろな スクリプトを見ると参考になります。

    % ls -l `which command`

    command の file の 大きさが 1KB いかならば、大体 スクリプト だと思って間違いありません。先頭に何の言語でかかれたかが書い てありますので、短いものは呼んでみると分かると思います。

  13. csh の他には ただの sh (bourne shell と呼ぶ)は、システムの管 理のスクリプトに良く使われます。sh と csh 似ているようですが、 基本的なところはずいぶん違います。.xsession などの sh スクリ プトをいじるときには、注意して壊さないようにしましょう。
どうしてもわからない時には、news 等で質問することになります が、その場合には、
  1. スクリプトの目的
  2. スクリプトのソース
  3. うまくいかないところ
  4. 実行 の log
などを示してください。またどこで動作したか、path 等も必要な 場合があります。誰も返事をしてくれない質問の仕方は、動かない です何とかしてください、です。情報が無ければ返事のしようがあ りません。また、news の指摘によって動いた場合には、ただあり がとうというだけではなく、どこをどう直したら動くようになった、 と感謝以上の情報が必ず必要です。news に答を希望するのなら、 それの 3 倍の質問に答えてあげることが必要です。質問はするが、 他の質問には答えないというのでは、give and take の思想になら ず、いつかは誰にも相手にされなくなります。network のマナー を守って、有意義に学習してください。

どんな場合でも e-mail での質問は止めてください。


rsaito@ee.uec.ac.jp