たとえばマウスのクリック等のイベント処理までいちいち Word や Excel がやっ てたんでは大変だし、そもそも(処理でも開発についても)効率が悪いです。
それに対になる、Windows などの画面上をマウスなどのポインティングデバイ スも用いながらプログラムを実行(処理)していくやりかたを GUI (Graphical User Interface) と呼びます。いずれも要するにユーザがコンピュータに何らかの処理を行わせる指示をして いるだけで、本質的には差異は無い、とも言えるのです。が、CUI の場合 GUI に比べて以下の特徴があります。
SSH とは Secure SHell の略で、手元のコンピュータとサーバの間を暗号化し て通信するプロトコルのことです。
Last login: Mon Apr 27 12:16:28 from puffin.hannan-u.ac.jp [maechan@liweb ~]$のように、最後にログインした時刻をメッセージしたあと、シェル の プロンプト(ここでは [maechan@liweb ~]$ と表示して、 入力を「促し」ている)が表示されます。これで、ログイン成功です。
ちなみに UNIX のファイルシステムは、階層ディレクトリと呼ばれツリー (木)構
造になっていて、Windows と考え方は同じです。ディレクトリの区切りは"/"で、
Windows の "\" ("\"の半角が
日本語環境のASCII コード部分が本家 ASCII と互換性が無
い 、というのは詳細は略)とは異なります。現在自分がいるディレクトリ
(カレントディレクトリ) は "."、その一つ上は ".." として表せます。また、
ログインしたときのディレクトリを ホームディレクト
リといいます。
シェルについて
UNIX 系のコンピュータの場合、ログインするとそのユーザ用にシェル
というプログラムが1つ起動され、以後の操作(コマンド)は全ていわ
ゆるシェル経由で動かされることとなります。
つまり、シェルとはシステム(ハードウェア+OS)とユーザ
の間 にあって、ユーザの意志をシステムに伝える仲介役(窓口?)
と言えます。シェルには環境変数などで設定を行えたりもしますし、ま
た簡単な制御構造(繰り返しや条件分岐など)ももってますので、ちょっとし
たプログラムのようなものをかくことも可能です(これのことを シェルスクリプトと言います)。詳細はここでは
省略しますが、このシェルにより、かなり柔軟な操作が実現できる、というこ
とは覚えておいてください。後に述べるパイプやリダイレクションもシェルが
提供する機能です。
ちなみに Windows などでエクスプローラなどのことをシェルということがあり ますが、これも UNIX での役割と同様、(アプリケーション起動を行う、等)シ ステムとユーザのあいだをとりもつプログラム、くらいの意味だと思います。ここで、シェルもたんなるプロセス(プログラム)の1つである、 ということは心にとめておいてください。シェルスクリプトを(外部プログラ ムのように)動かすことも可能ですが、その時にはシェルが(別の)シェルを 起動して、その(子)シェルに仕事をさせているわけです。ログインした時に 起動されるシェルを login shell (そのまま?)といい、これはユーザー毎 に /etc/passwd に登録されています。
シェルには bash, zsh. tcsh 等いろいろな種類があり、出来ることや文法が 微妙に違います。スクリプトを書くには bourne shell 系の bash, zsh が良 いとされています。sh, csh 以外の(後になって作られた)bash, tcsh 等の シェルでは、コマンドラインの編集機能(矢印キーで過去の履歴を たどったり、等)があります。これも詳細は略しますので、各自で調べてくだ さい。ちなみにlinux の大抵のディストリビューションでは
$ ls -l /bin/sh /bin/csh lrwxrwxrwx 1 root root 4 3月 1 2005 /bin/csh -> tcsh lrwxrwxrwx 1 root root 4 2月 22 2005 /bin/sh -> bash($ はプロンプトのつもり。以下同様。「->」 はリンクの意味)となってい ますので、実体はそれぞれ bash,tcsh です。
でもそれ以前に、ssh や firewall など(詳細略)の導入で、マシンの守りを固 めないといけないのはいうまでもありません。
$ man man[enter]で man コマンドのマニュアルが読めま す。ただし、残念ながら英語の場合がほとんどです、が、平易な英語なので、是 非頑張って読んでみてください。慣れれば意外にさっさと読めるものです。
最近の linux などでは、man にかわって info というコマンドもあります。 man は単に1つのファイルになったマニュアル文書を見るだけなのにたいして、 info はマニュアル文書自体に階層性(リンク?)をもてるのが特徴です。とはいうものの、最近は man や info を調べるより、google などで用例を検 索するほうが早くてかつ答えに素早く辿り着けるかもしれません。
$ ls -l total 56 drwx------+ 3 maechan staff 102 6 24 2014 Applications/ drwxr-xr-x+ 9 maechan staff 306 10 22 2012 Calibre Library/ drwx------+ 4 maechan staff 136 4 23 21:10 Desktop/ drwxr-xr-x+ 28 maechan staff 952 4 25 10:01 Documents/ drwx------+ 12 maechan staff 408 4 25 08:00 Downloads/ drwx------@ 61 maechan staff 2074 4 1 08:52 Library/ drwx------+ 32 maechan staff 1088 4 25 14:33 Mail/ drwx------+ 11 maechan staff 374 4 1 16:36 Movies/ drwx------+ 7 maechan staff 238 2 19 07:40 Music/ drwx------+ 17 maechan staff 578 4 25 06:38 Pictures/ drwxr-xr-x+ 6 maechan staff 204 7 25 2014 Public/ drwxr-xr-x+ 3 maechan staff 102 1 1 2014 Sites/ drwxr-xr-x+ 5 maechan staff 170 7 25 2014 VirtualBox VMs/ drwxr-xr-x+ 40 maechan staff 1360 4 12 14:00 bin/ drwxr-xr-x+ 6 maechan staff 204 3 14 07:37 common/ lrwxr-xr-x 1 maechan staff 9 1 9 2012 doc@ -> Documents drwxr-xr-x+ 2 maechan staff 68 3 31 18:59 dwhelper/ drwxr-xr-x+ 18 maechan staff 612 4 1 16:43 lib/ lrwxr-xr-x 1 maechan staff 18 10 14 2014 projG@ -> study/mining/projG lrwxr-xr-x 1 maechan staff 12 2 5 2012 study@ -> common/study lrwxr-xr-x 1 maechan staff 4 5 11 2014 tmp@ -> /tmp -rw-r--r--+ 1 maechan staff 1543 2 16 16:03 weka.log lrwxr-xr-x 1 maechan staff 11 11 1 18:38 work@ -> common/work lrwxr-xr-x 1 root wheel 28 6 20 2014 www@ -> /Library/WebServer/Documents他のものも含めて、 詳細は(man か本か WWW か何かで)調べましょう。
コマンドの実体がどこにあるのか調べるためには、"which" というコマンドを 使います。
$ which ls /usr/bin/ls $ which cd cd: shell built-in command.
"path" という環境変数を設定することによって、コマンドの実体を何処から、ど ういう順番で捜すかを指定することができます。どのように設定されているか は、"echo" を使って見ます。
$ echo $path /usr/ucb /usr/bin /usr/etc . $ set path=(/usr/local/bin $path) $この例では、現在の path の設定に加えて、/usr/local/bin というディレク トリを最初に捜すように設定しています。
あと、環境設定としてよく行われるの (? csh の場合)は;
set prompt='$ 'のようにします。
stty -erase ^H [enter](^H はバックスペースのこと)すると、それ以降バックスペースキーで1文字削 除ができます。詳細は man stty してみてください。
liweb はこっち (tcsh) です。皆さんのディレクトリには、既に .cshrc ファ イルがあると思いますので、望みの設定を書き足せばよいでしょう。ちなみに、最近では多くの Linux ディストリビューションではログインシェル が bash となっています。その場合、ホームディレクトリ(ログインした時に いるところ)の.bash_profile というファイルを自動的に読みこんでからプロ ンプト(入力待ち)になります。いずれにせよ、自分が使いやすいようにカス タマイズすることが可能です。厳密には、.bash_profile が呼ばれて、その中 で .bashrc が呼ばれるので、インストール時の設定によっては、自分 で.bash_profileにsource ~/.bashrcと書いておかないといけないかもしれません。
上述の"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 loveletter" とします。 また、chmod は
chmod [8進数3桁] [ファイル・ディレクトリ名]という使い方もできます。8進数のビット表現で rwx を指示するのですが、詳 しい使い方は各自で調べてみてください。
(テキスト)ストリーム=標準入出力、という考え方
UNIX では、「シェル」 というプログラムがユーザの入力したコマンドを解釈し
て実行する、というのは上で述べましたが、シェルがユーザに提供している機能
のうち、非常に重要なものが(テキスト)ストリーム、すなわち文字情報の「流
れ」という考え方で、具体的な適用にはリダイレクションとパイプがあります。
UNIX では、ファイルの内容やあるコマンドの出力をほかのコマンドの入力とし て使ったり、コマンドの出力をファイルに格納したりすることができます。これ を利用して様々なコマンドの出力を組みあわせることによって、かなり柔軟な処 理ができるようになっています。
これは多くのコマンドが「標準入力」から入力を行ない「標準出力」に出力する ように設計されているからです。これぞUNIXというかシェルの哲学(小さな単純 なプログラムの組み合わせで複雑な処理を行う)ですので、なるべく見習いましょ う。普通は入力はキーボード、出力はディスプレイですが、 ">" や "<" を使うことによってそれらを切り替えることができます。例えば、 ファイルの詳しい一覧を(標準出力、すなわちディスプレイに書き出すかわりに) "filelist" というファイルに書き込むには、
% ls -al > filelist[enter]とするだけでできます。さらに(キーボードから入力せず)このファイル内容を、 並べ変えを行なう"sort" コマンドの入力にするには、
% sort < filelist[enter]とすればよいです(実はこの場合は sort filelist でよかったりします)。ち なみに、出力をファイルの最後に追加 (append) したい場合は ">>" を使います。
あるコマンドの出力をほかのコマンドの入力にするときは、パイプという機能 を使います。これは、コマンドを "|" でつなぎます。例えば "file1" の内容 をアルファベット順に並べ変えて一画面ずつ表示するには、
% cat file1 | sort | more[enter]とします。
このパイプとリダイレクションは、うまく使うととっても便利な機能なので、 ぜひいろいろ試して、技を修得してください。
"{A,B,…}" (A,B,… は文字列) は A,B,… のどれかに、"[…]" (…は複数個 の文字) は、その中のどれか1文字とマッチします。また "[a-e]" のように "-" 記号によって範囲を表わすこともできます。
さらに、正規表現とは少し違いますが、"~" で自分のホームディレクトリを、 "~name" で name さんのホームディレクトリを表わすことができます。
ただし注意すべきは、コマンドにこれらの文字列が渡される時に、コマンドがこ の正規表現を解釈しているわけではなくて、シェルがこれらをファイル名の列に 変換してから渡すため、逆にコマンドにこのような文字を渡したい場合"'" など で閉じるか、"\*" のようにする(エスケープするという)必要がある、という ことです。
UNIX 上で動作する(スクリーン)エディタとして、vi と emacs が代表的なも のです。vi はほとんど全ての UNIX に標準で備わっているエディタです。独自 の操作法を使うため、初心者にとってはとっつきにくいかもしれません。でも慣 れればかなり使い勝手はよい、というか、非常に効率的な編集作業がおこなえま す。
emacs (GNU Emacs) はフリーソフトウェアとして広く利用されています。vi と 比べるとワープロやパソコン用エディタに近い操作性を持っています (コントロー ルキーを使いまくる独特のキーバインドには若干の慣れが必要ですが)。また、 単なるエディタに留まらず、emacs の上から電子メールやニュースを読んだり、 様々なネットワークサービスを利用したりもできます。ただ、資源消費はかなり のものなので、個人利用の計算機以外では使わないほうがよいかもしれません。
ここでは最低限の vi の利用法を説明しておきます。emacs については興味ある 人はぜひ自分で調べてみてください。
% vi hogehoge(hogehoge は編集したいファイル名)と入力すると、hogehoge が既存のファイ ルならばそれを開き、無ければ新規入力モードでエディタが立ち上がります。
本当はコマンドモードで ":" を使った(行編集指向の)操作をおこなわないと vi を本当に活用したことにはならないのですが、少し高度なので、興味ある人 は自分でぜひ調べてみてください。正規表現なんかも使えますし、外部コマンド 呼出しによる編集なども行えます。
This is a test. I am Henoheno Moheji.という内容の文書 heno.txt をつくってみましょう。
ちなみにならない場合は画面設定がうまくいってないので、一旦エディタを抜け て TERM 環境変数を変更したりしてやりなおしてください。
ちなみにここで a とうつと挿入入力モードになりますし、o とうつと下の行が 入力モードになります。
ここでは最低限の利用方法のみを示しますので、興味ある人は自分で調べてくだ さい。漢字仮名の取り扱いもここではおこないません。また、Windows をクライ アントとして利用する方法もありますが、その説明もまた他に譲ります。
No mail for maechanのように愛想なく終了します。メールが来ている場合は
Mail version 8.1 6/6/93. Type ? for help. "/var/spool/mail/maechan": 1 message 1 new >N 1 maechan@hannan-u.ac. Tue May 21 11:25 21/850 "test" &のように表示され、maechan@hannan-u さんからメールが来ている ことがわかります。ここでエンターキーを押すと
Message 1: From maechan@hannan-u.ac.jp Tue May 21 11:25:04 2002 To: maechan@hannan-u.ac.jp Subject: test X-Mailer: Mew version 1.94.1 on Emacs 20.7 / Mule 4.1 Mime-Version: 1.0 Content-Type: Text/Plain; charset=iso-2022-jp Content-Transfer-Encoding: 7bit Date: Tue, 21 May 2002 11:27:16 +0900 From: Toshiyuki MAEDA <maechan@hannan-u.ac.jp> X-Dispatcher: imput version 990905(IM130) Lines: 1 てすとのように表示され、メールを読むことができます。ここで q[enter]とすると、 メールが終了し、いま読んだメールが mbox というファイルに保存されます。ち なみに q[enter] するまえに d[enter] すると、読んだメールが削除されます。
% mail maechan@ieee.org [enter](maechan@ieee.org は送りたい人のアドレス)と入力すると、
Subject:と聞いてきますので、題名を(例えば test2[enter] などと)入力します。 すると本文を入力するモードになりますので、
This is a test.[enter] .[enter]などと入力します。"." (ピリオド)だけの行でメール入力が終了します。なお、 システムの設定によっては、
Cc:と聞いてきます。これは CarbonCopy のことで、同報したい人がいる場合に使い ますが、特に必要無い場合は単に [enter] だけ入力すれば、メール送信は完了 します。
% mail maechan@ieee.org <foobar [enter]としてリダイレクション(前述) させることで、簡 単に送信できますので一度ためしてみてください。