ところがそんなあなたの前に立ち塞がる巨大な壁があります。研究室に並んで いる "ワークステーション" という代物です。それは噂に聞く "UNIX" という 奴が動いているらしい…。もちろん中には「UNIX、知ってるよ〜ん」という人 もいるでしょう。でも、「何だか難しそうだ」とか「あたしパソコンも苦手な んですぅ…」という人もいると思います。
これは、そういった初心者の人のために書きました。
UNIX は 1960 年代後半に、アメリカの AT (ベル研究所) で開発され、その 後 C 言語によって記述されるようになり…と言うような話はどこにでも書い てあるのでここでは触れません。興味のある人は自分で調べて下さい。
UNIX ワークステーションは、普通に使っている限り別に難しいものではあり ません。確かに UNIX という OS は、割合無愛想なところがあって、とっつき にくい感じがしますが、慣れてみればそれも可愛いものです。ある程度使える ようになれば、きっとその便利さが分かってもらえると思います。
なお、UNIX と呼ばれている OS にも、開発元やバージョンによって細かい違 いがあります。ここに書いてあるような基本的な事柄に関しては大体同じよう に使える筈ですが、もし違っていても心配しないで下さい。以下特に断わらな い限り、ワークステーション (WS) は Sun Microsystems の SPARCstation、 UNIX は SunOS 4.1.3 を例に説明します。
まず、複数の WS でネットワークを組んでいる場合 "サーバ" のマシンが動い ていないと立ち上がることができません。この機械は、ユーザの ID を管理し たり、電子メールを受けとったりと日夜忙しく働いているため、滅多に電源を 切ることはないと思いますが、一応動いているかどうか確認して下さい。 あとは、
作業が終わっても、普通電源を切ることはないと思います。もし自分で切らな ければならない場合は、必ず管理者の指示に従って下さい。パソコンと違って いきなり電源を切ってはいけません! (ディスクの内容が壊れてしまう可能性 があります) かならず、指定された手順を踏んでから電源を切ってください。
もし、何かよくわからないことがあったり、変になってもあわてて電源を切っ たりしないで、システムの管理者に言ってください。
システムの管理者というのは、一般ユーザが WS を使うための様々な設定をし たり、新しいソフトウエアーをインストールしたりする人のことです。そのた めにシステム管理者は、"root" という名前で WS を使っていて、いろいろな 特権を持っています。
WS は一人の持ちものではなく、みんなで使うものです。何か問題があったら、 無理をせずにシステム管理者の人に聞きましょう。管理者の人はみんな豊富な 知識を持った、親切な人達です。きっと、怒らずに親切に教えてくれることで しょう (ほんまかいな…)。
画面に
[機械の名前] login:と出ていることを確認して、あなたのログインネーム (システム管理者に聞い てください) を入力します。とりあえず "asada" としましょう。
[機械の名前] login: asadaパスワードを設定してある場合は、パスワードを聞いてきます。
Password:パスワードを入力してください。 (画面には出ません) 色々なメッセージが出 て、プロンプト (入力を受けつけますというマークのこと。自分で設定もでき るよ) が表示されます。また、電子メイルが届いていれば、"You have new mail" と表示されます。
ここでウインドウシステム (後述) が動きだす場合もあります。その場合は少 し勝手が違うので、ウィンドウシステムに関する説明も合わせて読んでくださ い。
パスワードを設定していない人は、すぐに設定しましょう。"yppasswd" とす ると、"New password:" と聞いてきますので 8 文字以内で好みのパスワード を入力してください (あまり短いものや、自分の名前、覚えられないようなも のは使わないで下さい)。すぐに "Re-type new password:" と出ますので、も う一度同じものを入力してください (もし打ちまちがっていると困るから)。 これで次回からはパスワードを入力しないとログインできないようになりまし た。
パスワードを変更するときも、同じく "yppasswd" を使います。最初に "Old password:" と聞いてきますので、今のパスワードを入力しなければなりませ ん。
コンピュータを使い終って、次の人が使える状態にすることをログアウトとい います。作業が終わったら、今度はログアウトしなければなりません。コマン ドを受け付ける状態 (プロンプトが出ている状態)で、"logout " とタイプし てください。いくつかメッセージが出て、
login:と表示され、次のログインを受け付けます。お疲れ様でした。
duck{asada}1: pwd /home/home1/asada duck{asada}2: ls Calendar News hello.c tmp Mail a.out source duck{asada}3:のようになります。"duck{asada}1:" が、機械の表示するプロンプトです。
詳しいリストを見るときは "ls -l" としましょう。
duck{asada}4: -l total 16 drwx------ 2 asada 1024 Apr 21 03:54 Calendar drwx------ 15 asada 1024 Apr 25 00:16 Mail drwxr-xr-x 7 asada 1024 Apr 23 22:23 News -rwxr-xr-x 1 asada 24576 Mar 10 17:28 a.out -rw-r--r-- 1 asada 63 Mar 12 12:48 hello.c drwxrwxr-x 16 asada 512 Apr 24 00:30 source drwxrwxr-x 4 asada 512 Apr 24 22:11 tmp duck{asada}5:これは左側から、そのファイル (またはディレクトリ) のパーミッション (後 述)、リンク数、所有者、サイズ、日付と時間、ファイル名を表わしています。
システムの使うファイルも見たいときは (UNIX では先頭に "." の付いたファ イルは ls で表示されない) "ls -a"、ファイルの種類を表示させるときは "ls -F" です (ファイル名の後に、実行可能ファイルは "*"、ディレクトリは "/" などがついて表示される)。また、これらのオプションは組み合わせて "ls -al" のように使うこともできます。
ディレクトリ tmp の中身を見たいときは、"ls tmp" とします。
duck{asada}6: ls tmp MH.doc guide.tex jikken.1.tar.Z audio guide.tex‾ shukei.pl duck{asada}7:ディレクトリを移動するには "cd ディレクトリ名" とします。
その他よく使うコマンドとして、ファイルのコピーを行なう "cp"、 名前の変更と移動を行なう "mv" があります。それぞれ
cp filename1 filename2 filename1 を filename1 にコピー mv filename1 filename2 filename1 を filename1 に変更 cp filename dirname filename を dirname にコピー mv filename dirname filename を dirname に移動です。またファイルの削除は "rm filename(s)" によって行ないます。ディレ クトリの作成と削除は "mkdir", "rmdir" です。それぞれのコマンドはオプショ ンを付けることによって動作が変わってきますので、詳しくはマニュアル等を 見て下さい。
よく使うコマンドと対応する (近い) MS-DOS コマンドの一覧を挙げておきます。
コマンド 機能 MS-DOS では pwd 自分のいるディレクトリを表示 CD ls ファイルの一覧を表示 DIR cat ファイルの内容を連結 TYPE or COPY more ファイルの内容を一画面ずつ表示 MORE cp ファイルをコピー COPY mv ファイルの移動、名前の変更 REN rm ファイルを削除 DEL cd ディレクトリを移動 CD mkdir 新しいディレクトリを作る MD rmdir ディレクトリを削除 RD compress ファイルを圧縮する uncompress 圧縮されたファイルをもとに戻す zcat 圧縮されたファイルを標準出力に出力する lpr ファイルをプリントアウト PRINT man オンラインマニュアルを見る
ためしに、"ls -al" とやってみてください。最初の方に "r" とか "w", "x" が並んでいると思います。これがそのファイルのパーミッションを表しており、 最初の文字はファイルのタイプ(普通のファイルであるとか、ディレクトリで あるなど)、次の三文字が自分、次がグループ、最後が他人のそれぞれ"読み込 み"、"書き込み"、"実行"ができるかどうかを表しています。
このパーミッションを変えるためのコマンドが "chmod" です。使い方は、
chmod [1][op][2] [ファイル名]です。ここで [1]、[op]、[2] はそれぞれ、
[1] ... 誰に対してか u ... ユーザに対する許可 g ... グループに対する許可 o ... その他のユーザに対する許可 [op] ... どうするか + ... を追加します。 - ... を削除します。 = ... を明示的に代入します [2] ... 何を r ... 読み取り許可 w ... 書き込み許可 x ... 実行許可例えば loveletter というファイルを他の人に読まれないようにするために は、"chmod go-r lovelotter" とします。詳しい使い方は各自で調べてみてく ださい。
コマンドを実行するとき最後に "&" を付けると、そのコマンドはバックグラ ンドで実行されます。バックグランドで実行した場合、コマンドの終了を待た ないでプロンプトが帰ってくるため、すぐに次の作業に移ることができます。
man [コマンド名]とすることにより、そのコマンドのマニュアルを表示してくれるというもので す。
試しに、man コマンドのマニュアルを見てみましょう。
man manと入力してみてください。マニュアルが画面に収まらないときは、(大概そう なるけど)画面の最下行に
---More--(13%)--のように表示されます。これは、全体の 13% まで表示されたという意味で、 ここでスペースキーを押せば次のページを、リターンで一行ずつ表示、"q" で 終了です。
代表的なものに、AT&T で開発された Bourn Shell (通称 B シェル) と UCB (カリフォルニア大学バークレイ校) で開発された C Shell があります。ここ では C シェルについて説明します。
これはの多くのコマンドが "標準入力"から入力を行ない、"標準出力"に出力 するように設計されているからです。なるべく見習いましょう。普通は入力はキーボード、出力はディスプレイですが、">" を使うことによっ てそれらを切り替えることができます。例えば、ファイルの詳しい一覧を "filelist" というファイルに書き込むには、
ls -al > filelistとするだけでできます。さらにこのファイル内容を、並べ変えを行なう "sort" コマンドの入力にするには、
sort < filelistとすればよいです (実はこの場合は sort filelist でいいんだけどね。) また、出力をファイルの最後に追加したい場合は ">>" を使います。
あるコマンドの出力をほかのコマンドの入力にするときは、パイプという機能 を使います。これは、コマンドを " でつなぎます。例えば "file1" の内容 をアルファベット順に並べ変えて一画面ずつ表示するには、
cat file1 | sort | moreとします。
このパイプとリダイレクションは、うまく使うととっても便利な機能なので ぜひ試してみて、マスターしてください。
次のようにすることによって、以前に入力したコマンドを実行することができ ます。
!! 直前のコマンドを再実行します。 !-2 ふたつ前のコマンドを再実行します。 !-n n は整数です。n 行前のコマンドを再実行します。 !n n は整数です。ヒストリーリストの n 番のコマンドを実行します。 !s s は文字列です。ヒストリーリストを遡ってコマンド行の先頭が文 字列 s と一致するコマンドを再実行します。
直前に入力したコマンドを一部修正して実行することもできます。これには、 直前のコマンド中の変更したい文字列を "^" で囲んで、そのうしろに新しい 文字列を書きます。例えば、
duck{asada}8: cat hollo.c cat: hollo.c: No such file or directory duck{asada}9: ^o^e^ cat hello.c include <stdio.h> main() printf("Hello, World. ); duck{asada}10:のように、ちょっとした打ち間違いを正すときなどによく使います。
csh にはジュブコントロールといって、実行中のコマンドを一旦停止させて、 別のコマンドを実行したり、バックグラウンドで実行させたり、再びフォアグ ラウンドに戻したりする機能があります。
まず、何か適当な (すぐには終らない) コマンドを実行してみてください。例 えば "more .cshrc" などを実行したとします。画面に .cshrc の内容が表示 されて、キー入力待ちになります。そこで ctrl-Z (コントロールキーを押し ながら Z) を押すと、
--More--(36%)-- Suspended duck{asada}11:と表示されて、コマンド入力待ちになります。ここで適当に作業をして、終っ たら "fg" (FourGround) と入力すれば、中断したジョブが再開されます。ま たここで "bg" (BackGround) と入力すれば、そのジョブはバックグラウンド で実行されます (ただしそのジョブでキーボード入力が必要になった場合は "[1] + Suspended (tty output) more .cshrc" といってまた中断します)。
バックグラウンドで実行しているプログラムを、フォアグラウンドに戻したい 場合は "fg" と入力して下さい。
"{A,B,…}" (A,B,… は文字列) は A,B,… のどれかに、"[…]" (…は複数個 の文字) は、その中のどれか1文字とマッチします。また "[a-e]" のように "-" 記号によって範囲を表わすこともできます。
さらに、正規表現とは少し違いますが、"‾" で自分のホームディレクトリを、 "‾name" で name さんのホームディレクトリを表わすことができます。
ただし、コマンドにこれらの文字列が渡されるとシェルがこれらをファイル名 の列に変換してから渡すため、逆にコマンドにこのような文字を渡したい場合 "'" などで閉じるか、"¥*" のようにする (エスケープするという) 必要があ ります。
duck{asada}12: alias ls ls -F duck{asada}13: ls Calendar/ News/ hello.c tmp/ Mail/ a.out* source/ duck{asada}14:のように、"ls" を "ls -F" にエイリアスしておくことができます。
また、コマンドの引数は " で表わすことができます。例えば、"cd " コマン ドを実行したときに、移動した先のディレクトリ名を表示するために、"alias cd 'cd !*;pwd'" というような事が可能となります。
コマンドの実体がどこにあるのか調べるためには、"which" というコマンドを 使います。
duck{asada}15: which ls /usr/bin/ls duck{asada}16: which cd cd: shell built-in command.
"path" という変数を設定することによって、コマンドの実体を何処から、ど ういう順番で捜すかを指定することができます。どのように設定されているか は、"echo" を使って見ます。
duck{asada}17: echo $path /usr/ucb /usr/bin /usr/etc . duck{asada}18: set path=(/usr/local/bin $path) duck{asada}19:この例では、現在の path の設定に加えて、/usr/local/bin というディレク トリを最初に捜すように設定しています。
さて、エイリアスやパスの設定を毎回手でやるのは面倒ですね。このような毎 回使うような設定は、ホームディレクトリの下の ".cshrc " というファイル に書いておくことによって、起動時に自動的に実行されます。
多分皆さんのディレクトリには、既に .cshrc ファイルがあると思いますので、 望みの設定を書き足せばよいでしょう。
tcsh は、カーソルキーやコントロールキーを使って、ヒストリを直接エディッ トする機能や、途中まで入力したファイル名を完成させる機能などが付け加え られており、かなり使い勝手がよくなっています ただし、一度これに慣れて しまうと、普通の csh が不便に感じて困るという欠点(笑)があります。
…というのは大袈裟ですが、エディタが重要であるのは本当です。
GNU Emacs (を日本語化した Nemacs や多国籍対応版の mule など) はフリー ソフトウェアとして広く利用されています。vi と比べるとワープロやパソコ ン用エディタに近い操作性を持っています (コントロールキーを使いまくる独 特のキーバインドには若干の慣れが必要ですが)。また、単なるエディタに留 まらず、Emacs の上から電子メールやニュースを読んだり、様々なネットワー クサービスを利用したりもできます。難を言えば少々バカでかいことですね…。
その他のエディタとして Sun OpenWindows に附属の textedit、HP-VUE の ved など OS やウィンドウシステムに附属のものがあります。これらは大体マ ウス等をサポートしており、非常にとっつきやすいのは確かです。ただ機種や 環境に依存していることと、動作が遅いものが多いことが残念です。
NxEdit というフリーソフトウェアのエディタのように、割合 MS-DOS 上の MIFES 等のエディタに近い操作性を実現しているものもあります。また商品 では Final が MS-DOS から UNIX に移植されています。
現在、UNIX を使ったシステムを中心に幾つかのネットワークが作られています。 そこでは電子メールやニュースを中心に様々な情報交換が行なわれており、研究 活動 およびその休憩時間(笑) の手助けをしています。
ここでは、研究室内でのネットワークについて、いくつか知っておいて欲しい ことについて書いておきます。
しかし、毎回このような番号を書くのは面倒でもあり、間違いも多くなります。 そこで実際は、もっと覚えやすい「名前」を付けて管理します。これが「ホス ト名」と「ドメイン名」です。
ホスト名というのは、それぞれの計算機に付ける名前であり、ドメイン名とい うのは、LAN のひとつの基本単位に付けられる名前です。例えば私のところで は、"icsd6" というドメインに、"duck", "plover","gull"…といった名前の ホストが繋がっています。
ドメインというのは木構造になっていて、私のいる icsd6 ドメインは、情報 工学科 "tj" の下にあり、さらに tj は千葉大学 "chiba-u" ドメインの一部 です。以下同様に "ac" (教育機関), "jp" (日本) という名前があり、これら を全部合わせた "duck.icsd6.tj.cchiba-u.ac.jp" という名前によって、今私 が使っているホストを全世界から参照できることになります。
手元のホストから、他のホストにログインするためのコマンドが
rlogin [ホスト名]です。他のマシンでコマンドを実行して、その結果を自分の計算機で表示した いときは、
rsh [ホスト名] [コマンド]です。またネットワークを通じてファイルをコピーしたいときは、
rcp [こっちのディレクトリ] [ホスト名]:[ディレクトリ] (送るとき) rcp [ホスト名]:[ディレクトリ] [こっちのディレクトリ] (受取るとき)とすればよいです。
特に ftp はネットワーク間で複数のファイルをやり取りするときに重宝しま す。また匿名 ftp といって、誰でも自由にファイルを持ってゆくことができ るような機構を実現している所も沢山あり、公開された文書やフリーソフトウェ アなどの配布が行なわれています。
ここでは詳しく述べませんが、必要になることもあると思いますので、ぜひ調 べてみてください。
これらを使うメリット、デメリットは、
このような話は、普通に使っている限りは意識することはないのですが、まぁ 知識として知っておいても良いでしょう。
ネットワークには、沢山の機能・多くの利点があります。さらに最近は WWW, gopher, wais などといった、遠隔地の情報を自由に参照するためのシステム が非常に活発になっています。
また、UNIX 同士だけでなく、大型機やパソコンと接続して、互いの長所を生 かしたシステムを作ることもできます。皆さんも必要に応じて勉強して、どん どん活用して下さい。