エレクトロニクスセミナーA
2000.1.17


  1. 本日の作業内容

    • シェルスクリプトの学習
    • Tcl/Tkの体験
    • 課題作成


  2. シェルスクリプトの学習

    • はじめに

      Linuxはコマンドラインですべてのことが行えるようになっている。GUIでマウスで行う操作は始めのうちは使いやすいので重宝するが、定型業務のように毎日同じような操作を行う必要がある場合にはコマンドから操作する方が便利な場合もある。また、そのコマンド操作手順をスクリプトという書式に書いておいて一つのコマンドとして操作することも可能である。

      シェル上でコマンドで操作できる内容をスクリプト化したものがシェルスクリプトであり、ここでは変数や関数を用いてかなり複雑な作業も自動化できる。もちろん、本格的なアプリケーションはそれ用の言語を用いた方がいいものが作成できるが、そこまでしなくてもいいような作業であればシェルスクリプトで十分に機能する。

      実際、Linuxの起動プロセスにおいても各種のシェルスクリプトが用いられており、ネットワーク設定やXの起動時にテキストファイルで書かれたそれらのスクリプトが読みこまれ、必要な設定作業が行われる。


    • 基礎

      学習用にディレクトリを作成し、そこに移る。ディレクトリ名は何でもよいがたとえばshell_scriptなどとする。スクリプトはテキストエディタで作成する。エディタはEmacsでもXEmacsでも好きな方でよい。最初の行はシェルのパスを記述することで始まる。教室の端末では

      #!/bin/sh

      の行が最初に来る。普段利用しているログインシェルはbashであるが、スクリプトを作成する場合には通常shが用いられる。必要十分な機能を有しており、コマンドラインの編集機能などがスクリプトでは不要であることが理由である。

      以下、自分でアプリケーションの起動コマンドを続けて実際の動作を確認してみる。

      #!/bin/sh

      #xclockの起動

      xclock &

      上の例ではxclockというコマンドで起動される時計アクセサリを呼び出すだけのスクリプトである。なお、シェルスクリプトのおいては#で始まる行はコメントであり、実行されないので、注釈などを入れる場合に用いる。なお、行の途中で#が入れば、#以降がコメントとして解釈される。

      #UNIX系のプログラミング言語では#で始まる行をコメント行とすることが多い。
      #そこから、電子メールやネットニュースなどで本題とは関係ないちょっとした洒
      #落や冗談、ぼやきなど挿入するときに行頭に#をつけることがよく行われてい
      #る。知っておくと、便利である。(無理して利用する必要はない)

      ファイルに適当な名前(例:my1)をつけて保存する。その後で、Ktermなどからファイルの属性に実行可能を付加する。コマンドとしてはchmodを使うが、使い方はいろある。

      chmod +x my1 (スクリプトを参照できるユーザは誰でも起動できる)
      chmod u+x my1 (自分だけが起動できる)

      また、読み出し可、書き込み可、実行可をそれぞれ4、2、1に対応させた表記でも同様の設定が可能である。

      chmod 755 my1 (上の最初と同じ)

      実行属性を付加した後、コマンドを起動して実行してみる。ここで、コマンドパスにカレントディレクトリや自分のホームディレクトリなどを登録していないので、

      my1

      などと入力してもコマンドは認識されない。今の場合は

      ./my1

      として実行する。さて、無事にxclockが起動しただろうか?しかし、これならばもちろん直接コマンドから起動する方が早い。もうすこし、複雑な場合はどうか?先程のスクリプトを

      #!/bin/sh

      #位置や大きさを決めたxclockの起動

      xclock -geometry 100x100-200-150 &

      に変更し、my2などとして保存後、実行属性を与える。起動はどうなるか確認してみよう。オプションのgeometryはその名の如く配置に関する情報を与える。引数として取っている数値は画面のドット数を表し、100x100は時計ウィンドウのサイズ、次が表示の座標である。座標が-で始まっている場合にはxに関しては右から、yに関しては下からのドット数を意味し、+であればそれぞれ逆である。

      しかし、これでも一度起動するだけなら直接コマンドを入力した方がまだ早いし、たとえログイン時に毎回使うとしてもそのコマンド自体をaliasに登録しておけば良い。では、どういう場合にシェルスクリプトが有効であろうか?


    • 最低限実用になるシェルスクリプト

      #!/bin/sh

      #ログイン時に立ち上げるアプリケーション

      kterm -geometry +30+100 &
      emacs new.tex -geometry 600x500+50+30 &
      xemacs -f mew -geometry 500x600+70+20 &
      netscape -geometry 800x600+100+80 &

      このスクリプトは毎回ログイン時に利用しそうな環境をコマンド一つで起動するものである。アプリケーションの中には起動時に自分で優先的にウィンドウサイズや位置を決めてしまうものもあるので、スクリプトの通りにはならないかもしれないが、とりあえずコマンドを一つずつ入力したり、マウスで次々にクリックするよりは手軽になる。

      本当に使いこなすには変数や関数などをはじめ言語を一通り理解する必要があるため、参考書などを当たって自分で学習してほしい。ノートパソコンにLinuxを入れたりした場合に、場所を移動して利用するときにネットワークの設定を頻繁に変更するときなどスクリプトを書いておくと便利である。


  3. Tcl/Tkの体験

    シェルスクリプトはC言語によるプログラミングなどと違い、ソースをコンパイルする必要がない。このような言語をインタープリタ言語と呼ぶが、一般にスクリプト言語と呼ばれることもある。代表的なものにBasic, Perl, Ruby, Java script, Pythonなどがある。それぞれの言語には特徴があり、向き不向きがあるが一般的にテキスト処理において便利なことが多い。(高速の数値計算にはFortran、複雑な処理系ではC言語などを利用した方が良い)

    ここで紹介するのはTcl/Tkと呼ばれる言語で比較的簡単にGUIアプリケーションを開発できるフリーの環境である。こちらも詳細は授業では触れられないが、以下のテキストを参考に体験してみよう。実際に気に入ったならば、自分でアプリケーションの開発を行ったりしてみても面白い。

    体験ページ


  4. 課題の作成

    課題については授業の終わり頃に発表するのでしばらくお待ちください。


  5. 次回の予定

    TeXによる作業が理解しにくいようなので、もう一度TeXの利用に関して復習する。次次回はホームページを動的にしたり、各種の機能を持たせるためにもスクリプト言語が用いられる。その代表的なものを紹介する予定である。


    エレクトロニクスセミナーAトップページへ戻る。