誰でも出来るUNIX入門講座



目   次

第一章 ユーザーセッションの起動
第二章 ディレクトリとは
第三章 パスワードの変更
第四章 Cシェルのヒストリー機能
第五章 入出力の処理
第六章 エイリアスの定義


第一章 ユーザーセッションの起動


 まず最初にコンピュータの前に座った時、 最初に画面に表示されているのは、

  login : ■
 
 

 でしょう。
 ここで、 ユーザはユーザ名を入力する必要があります。
 入力してエンターキーを押すと、

  login : tanaka
  password : ■
 
 

 となります。
 ここで、 パスワードを入力してエンターキーを押します。 入力してパスワードは通常画面に表示されません。
 この時システムが、 ユーザー名とパスワードの検証を行います。 正しい場合にはユーザーセッションが開始されます。
 もし、 不幸にも再度login:画面が出た場合には、 入力ミスの可能性がありますのでもう一度正しく入力して下さい。 (システムにユーザ登録をした直後ですとパスワードを入力しなくてすむ事もあります。 ただし、大変に危険ですので直ぐにパスワードを設定を行うことをおすすめします。 )
 正しく入力したにもかかわらず、 login:と出てきてしまった場合には、 あなたの名前が登録されていない可能性がありますので、 システム管理者に問い合わせて下さい。
 ここまで作業を通常「ログイン」と呼んでいます。 そして、 ログインが正常に終了するとCシェル(シーシェルと読む。 オペレータが入力したコマンドを解釈してコンピュータに実行させる役割を持つ。 つまり、 人間とコンピュータの橋渡し的存在。 )は、 そのユーザーを制御下に置きます。
 そして、 特別な2つのファイル(.cshrcと.login)が順に読み込まれます。 (これらのファイルの使い方は、 最初のうちは特に意識しなくても良いでしょう。 通常、 システム管理者がユーザを登録した際に、 適切な設定をしてくれているはずです。 )
 これらのファイルの読み込みと実行が終了すると、 プロンプトが表示されます。 プロンプトとはユーザーがコマンドを入力し、 Cシェルに命令できる事を意味するものです。 プロンプトが表示されているときには、 ユーザはコマンドを入力できます。 プロンプトが表示されていないときは、 何らかの処理を行っている場合であり、 ユーザの命令を受け付けられないことを意味しています。
正しく入力されると以下のような画面になります。

  login : tanaka
  password :
 
                 ← このあたりに何かメッセージが
                   表示されることが多いが、
                   システムによって千差万別
                   なので省略します。
 
  % ■
 
 

ここまで来たら、 後はコマンドを入力します。
試しに”ls −l”と入力し、エンターキーを押してみましょう。

  login : tanaka
  password :
 
 
  % ls -l
 
  total 123
  -rw-r--r-- 1 tanaka other  255 Mar 31 11:12 hello.c
  -rw-r--r-- 1 tanaka other  128 Mar 31 12:02 hello.o
  -rw-r--r-- 1 tanaka other  4434 Apr 15 10:41 intger
  -rw-r--r-- 1 tanaka other  6809 Oct 23 17:33 moonchild
  -rw-r--r-- 1 tanaka other 80486 Jan 12 22:50 xyz
 
  % ■
 
 

これは、 MS−DOSで言うところのDIRにあたります。
WINDOWSではフォルダの中身を見ると言ったところでしょうか。
打ったコマンドのうち”ls”がコマンドになります。
そして、 ”−l”がオプションとなります。 オプションはUNIXの場合は大抵マイナス(”−”)を先に付けます。


第二章 ディレクトリとは


 通常コンピュータの中にはたくさんのファイルが存在します。 これは、 会社などでたくさんの書類が管理されているのと同じです。 会社では種類別にファイルキャビネットなどに書類を入れ管理しています。 (○×物産請求書とか、 ×○サービス請求書等)
 このようにグループ分けするものをディレクトリと呼んでます。 (WINDOWSではフォルダと呼ばれている。 )また、 ディレクトリの中にディレクトリを二重三重に入れることも可能です。 (可能と言うより、 通常そうやって使用しています。 )
 ここで”pwd”と打ってみましょう。

 
  % pwd
  /usr/tanaka
 
  % ■
 
 

 画面には”/usr/tanaka”と表示されました。 (表示内容は各自の環境によって違います)これは、 一番上から見てusrディレクトリの下のtanakaディレクトリに今います。 という意味です。 ”pwd”というコマンドは今現在いるディレクトリを表示するコマンドです。 ”/”はスラッシュとかスラとか呼びます。 ディレクトリの区切りの為の記号ですのでもちろんディレクトリ名やファイル名に使用することは不可能です。
 他には”cd”というコマンドあります。 これはディレクトリを移動するためのコマンドです。 たとえば、
 
  % pwd
  /usr/tanaka
  % cd /usr
 
  % ■
 

 とすれば、 /usrディレクトリに移動します。 また、

 
  % pwd
  /usr/tanaka
  % cd /usr
  % cd yamada
 
  % ■
 

 とすれば、 現在いるディレクトリの下のyamadaディレクトリに移動します。 つまり、 先ほど/usrディレクトリに移動していたので、 /usr/yamadaディレクトリに移動したことになります。 ここで注意して下さい。 一番目のcdは頭に”/”があり、 二番目のcdには頭に”/”がありませんでした。 頭に”/”を付けると一番上のディレクトリからのディレクトリを示し、 付けないと現在のディレクトリからのディレクトリを示します。 次に特別な指定方法をお教えします。

  cd ..

 この”..”は一つ上のディレクトリという意味です。 現在/usr/yamadaディレクトリにいましたので、 /usrディレクトリに移動したことになります。 さらにこれらの複合技もできます。

 
  % pwd
  /usr/tanaka
  % cd /usr
  % cd yamada
  % cd ..
  % pwd
  /usr
  % cd yamada
  % pwd
  /usr/yamada
  % cd ../tanaka
  % pwd
  /usr/tanaka
 
  % ■
 

 ”cd ../tanaka”というのは一つ上から見た下のtanakaディレクトリに移動するという意味です。 なぜこういう方法があるかと言えば、 例えば/usr/tanaka/business/fujitsu/project_aディレクトリにいたときに/usr/tanaka/business/fujitsu/project_zzディレクトリに移動するのに全部打つのはめんどうくさいからです。 この場合ですと、 ”cd ../project_zz”と入力すればすみます。
 さて、 ディレクトリの移動の方法が解ったところで次にディレクトリの作成と削除のコマンドを勉強していきましょう。

 
  % makedir sasaki     ←sasakiディレクトリの作成
  % rmdir sasaki      ←sasakiディレクトリの削除
  % ■
 
 

特に難しいところはありませんね。
makedirがディレクトリの作成のコマンドで、
rmdirがディレクトリの削除のコマンドです。


第三章 パスワードの変更



 まず、 パスワードの重要性を認識していただきます。
 UNIXは複数の人々で一台のコンピュータを使用しますし、 各々によっては大切な仕事で使うファイルを保存していたりすることもあるでしょう。 そのため、 他人に見られたくないファイル等が存在します。 そこで見せても良い証拠としてパスワードの入力を必要とします。 しかし、 悪意を持った人間がパスワード知るとファイルの中身を見られたりファイルを削除されたりします。 それだけならまだ良い方で、 最悪の場合システム自体を破壊する可能性があります。 (普通は単なるユーザではそこまで出来ないが、 パスワードを盗むような人間に限って普通では考えつかない方法でシステムを破壊する事に喜びを覚えていたりします。 )
 さらに悪いことにそのような事態になったときに一番責任を負うのはパスワードを盗んだ人ではなくで盗まれたあなたになるのです。 なぜなら、 盗んだ人はとうの昔に逃げてしまって捕まえようがないからです。 たとえ、 捕まえたとしても元の状態には戻りませんので被害者が一番苦汁を舐めることになります。
 ですから、 パスワードの管理はキャッシュカードの暗証番号と同様にしっかりとして下さい。
 パスワードの決め方ですが、 8文字以内のアルファベットでなるべく自分に関連がない物が良いです。 だめな例としては、

  ・ 誕生日
  ・ 本人もしくは恋人の名前
  ・ 電話番号
  ・ 勤務先名
  ・ 子供の名前など


 ダメダメな例を数えあえたらきりがないです。 推奨するパスワードはデタラメなアルファベット大文字小文字と数字と記号の組み合わせが良いのですが、 本人も忘れてしまう可能性もあるので難しい所です。 また、忘れないようにとパスワードを付箋紙に書いてCRTに貼り付けるのは愚の骨頂ですので止めましょう。他にもyamadaさんのパスワードを7jq@にするのもありきたりなので止めましょう(意味が良く分からない人は、キーボードをアルファベットモードのまま平仮名で「やまだ」と打ってみましょう。そういえば「金田一少年の事件簿」にも似たようなネタがありませんでした?)。
 さて、 パスワードの設定は至って簡単です。
 プロンプト画面で”password”と入力して下さい。

 
  % password
  Enetr old password :
  Enetr new password :
  Enetr new password :
  
  % ■
 
 

 パスワードの入力に関しては一切画面に表示されませんので御注意下さい。
 ”Enetr old password :”と出ているところは今まで使用していたパスワードを入力します。 (いままでパスワードを使用していなかった人は表示されないこともあります。 また、 パスワードを使用していなかった人はエンターキーのみで良いです。 )パスワードを入れ間違うとコマンド入力に戻りますので、 落ち着いて最初からやり直して下さい。
 ”Enter new password :”と出てきたら、 設定したいパスワードを入力して下さい。 更にもう一度”Enter new password :”と出てきますので、 設定したいパスワードを再度確認のために入力して下さい。 一回目と二回目のパスワードが違った場合には新しいパスワードに変更できないので、 再度最初からやり直して下さい。


第四章 Cシェルのヒストリー機能


 ヒストリー機能とは過去に入力したコマンドを再度入力したり利用したりする機能のことです。
 この機能があれば入力ミスを起こした場合などに楽に再入力が出来ます。
 例えば、

ヒストリー機能を使わなかった場合

 
  % ls -la /usr/tanaka/bisness/fujitsu/test1.txt
  file not found
  % ls -la /usr/tanaka/bisness/fujitsu/test10.txt
  -rw-r--r-- 1 tanaka other 80486 Jan 12 22:50 test10.txt
  % ■
 

ヒストリー機能を使った場合

 
  % ls -l /usr/tanaka/bisness/fujitsu/test1.txt
  file not found
  % ^1^10^
  -rw-r--r-- 1 tanaka other 80486 Jan 12 22:50 test10.txt
  % ■
 

 と言う具合に、 楽になります。
 ちなみに^1^10^は前回の入力コマンドの1という文字を10に変更する。 と言う意味です。 ここで、 ”history”と入力してみましょう。

 
  % history
  1 ls -l
  2 cd /usr/tanaka
  3 cd ../yamada
  4 ls -l /usr/tanaka/bisness/fujitsu/test1.txt
  5 ls -l /usr/tanaka/bisness/fujitsu/test10.txt
  6 history
  % ■
 

 皆さんの今までの操作によって多少の違いはありますが、 だいたいこんな感じになるでしょう。
 ここで、 注意することがあります。 たとえ、 ヒストリーの機能を使用してもヒストリーに記憶された内容は展開後の内容になると言うことです。 つまり、 数字が出ている5番目の行を注意してみて下さい。 ”^1^10^”と入力したにもかかわらず、 ”ls −l /usr/tanaka/bisiness/fujitsu/test10.txt”になっています。

 それでは次に、 コマンドを紹介します。

 !! ←直前のコマンドを再実行する
 !4 ←historyでみたコマンド番号の4番のコマンドを実行する。
 !ls ←最後にlsコマンドの使用された行を再実行する。
 ^a^b^ ←直前のコマンドのaという文字をbに変更して実行する。

 さらに、 コマンドの後ろに続けて書くこともできます。

 !*   ←直前のコマンドのコマンド以降の文字列を意味する
 !4*  ←historyでみたコマンド番号の4番のコマンド以降の文字列を意味する。

 例として、

 
  % history
  1 ls -l
  2 cd /usr/tanaka
  3 cd ../yamada
  4 ls -l /usr/tanaka/bisness/fujitsu/test1.txt
  5 ls -l /usr/tanaka/bisness/fujitsu/test10.txt
  6 history
  % !!
   ↑ historyが実行される
  % !5
   ↑ ls -l /usr/tanaka/bisness/fujitsu/test10.txtが実行される
  % ls !3*
   ↑ ls ../yamadaが実行される
  % ■
 

 今まで紹介したヒストリーの機能は基本的なところです。 実際はもっとたくさんあるのですが、 この程度理解できれば通常使う分には問題ないでしょう。 興味を持たれた方は本などを調べて見て下さい。


第五章 入出力の処理


 入出力とは何か? UNIXでは通常、 AデータをBソフトに処理をさせCデータに変換し、 更にCデータをDソフトに処理をさせEデータに変換するという手順を踏みます。
 なぜそのような面倒くさい手順を踏むかと言えばその方がメリットがあるからです。
 どのようなメリットかと言いますと、 すでにある機能は流用するというメリットが存在します。 (流用すればその部分は作らなくて良いので、 その分早く仕上がる。 コストの削減になる)
 例えば、 ファイル名を印刷したいと思ったら、

  ls -l | pr -w80 -l66 | lp

 と入力します。 この意味は、
 まず、 ”ls −l”でファイル名をとり、 ”pr −w80 −l66”で80桁66行に整形し、 ”lp”で印刷する。 というような意味になります。 このような連携を パイプ といいUNIXでは普通に使われています。
 さて、 どのようなメリットがあったでしょうか? この文をちょっと差し替えるだけで別の物に早変わりします。

  cat aaa.txt | pr -w80 -l66 | lp

 とするとファイルの中身を印刷します。 ( cat コマンドはファイルの中身を出力するだけの機能です。 )例えばあなたが何かを表示するソフトを作ったとしましょう。 出来たのはいいが印刷もしたくなったらわざわざ印刷用のプログラムを作らなければならないでしょうか? 答えはノーです。 次のようにすればすぐに印刷できます。

  your_program_name | pr -w80 -l66 | lp

 印刷をされた物を見ていたらABC順に並び替えたくなったとします。 そんなときはこうすればよいのです。

  your_program_name | sort | pr -w80 -l66 | lp

 実に簡単に並び替えと印刷の機能を付け加えることが出来ました。
 このようにUNIXはソフトウェアとソフトウェアのコンビネーションが実に簡単に実現できるのです。
 また、 次のような事も可能です。

  ls -l > abc.txt

 とすると、 ファイル”abc.txt”に”ls −l”の内容が出力されます。 これをリダイレクトといいます。 ”>”が画面ではなく、 ファイルに出力するための記号です。

 さて、 ここでまとめてみましょう。
 ”|”はパイプと呼ばれる物です。 (キーボードの¥マークのキーをSHIFTキーを押しながら押すと入力できます。 )
 例として、
 A | B 
 はAプログラムの出力したデータをBプログラムに渡します。
 ”>”や、 ”<”はファイルの入出力を意味します。
 A > bb.txt
 はAプログラムの出力したデータでファイル”bb.txt”を作成します。
 A < bb.txt
 はAプログラムにファイル”bb.txt”の内容を入力します。

 これらはコンビネーションを組むことが出来ます。
 sort(並び替え)は入力されたデータを並び替えて出力します。

 
  % cat aaa.txt  ←aaa.txtの内容を出力する
  yamada
  kayama
  tanaka
  fujimori
  ms-dos
  % sort < aaa.txt
  fujimori
  kayama
  ms-dos
  tanaka
  yamada
   ↑ aaa.txtの内容が並び替えられて出力された。
  % sort < aaa.txt > bbb.txt
   ↑ aaa.txtの内容が並び替えられてbbb.txtに出力された。
  % cat bbb.txt
  fujimori
  kayama
  ms-dos
  tanaka
  yamada
   応用例として、
  % sort < aaa.txt | pr -w80 -l66 > ccc.txt
   ↑ aaa.txtの内容を並び替えして、80桁66行に整形して
     ccc.txtに出力する。という意味です。
  % ■
 

 さて、 いろいろなことが出来ることが解りました。 ただ、 今回紹介したコマンドは少しだけです。 このほかにも数百もコマンドありますが恐れることはありません。 必要な物だけ覚えていればそれでいいのです。 ちなみに筆者も全部のコマンドは覚えていません。 というより十数個のコマンドを覚えていれば事足ります。
 みなさん、 パイプとかリダイレクトとか出てきた途端に入力する文字が増えたと思いませんか? しかし、 ご安心下さい。 次の章ではそのためのエイリアスという秘密兵器があります。 これを利用すればどんな長いコマンドでも楽に入力できます。


第六章 エイリアスの定義


 エイリアスとはaliasと書き、 別名定義とも呼ばれています。 (人によってはエリアスとかアリアスとか呼んでる人がいます)
 さて、 エイリアスとはどのような物でしょうか?
 簡単に言うと、 Aというコマンドを実行させるのにBというキー操作で可能にする機能です。 意味がよくわからない人のために例を交えて説明します。 まず、 プロンプトで

  alias h history

 と、 入力して下さい。 すると以降、 hを押してエンターキーを押すとhistoryと打ったことと同じ事になります。 つまり、 aliasコマンドに続く2個目のの文字列を1個目の文字列に設定する物です。

 
  % history
  1 ls -l
  2 cd /usr/tanaka
  3 cd ../yamada
  4 history
  % h
  file not found   ←エラーメッセージです
  % alias h history
  % h
  1 ls -l
  2 cd /usr/tanaka
  3 cd ../yamada
  4 history
  5 h
  6 alias h history
  7 h
  % ■
 

 さて、 せっかくですからalias自体も定義しましょう。

  alias a alias

 これで、 以後aだけでaliasと入力した事と同じになります。 ちなみに、 エイリアス定義は1文字でなく2文字でも3文字でも可能です。

  alias bb alias
  alias ccc alias

 これで、 bbと入力してもcccと入力してもaliasと入力したのと同じ事となります。 また、 後ろに引数を付けて実行した場合そのまま後ろに付きます。

  a xx history

 これは、 ”alias xx history”と同じです。
 もっと色々定義してみましょう。

  a ll ’ls −l’

 これは、 llに”ls −l”を定義します。 今までと違うところは、 lsと−lの間にスペースが入っているのでシングルコーテーション(’←Shift+7)で囲ってスペースごと定義します。 シングルコーテーションで囲わないと引数が一個増えた勘定になり正常に定義できません。 (スペースが引数の区切りのため)
 それでは前章の”ls −l | pr −w80 −l66 | lp”をlspという名前で定義してみましょう。

  a lsp ’ls −l | pr −w80 −l66 | lp’

 はい、 出来ましたか? 簡単ですね。
 しかし、 ”cat aaa.txt | pr −w80 −l66 | lp”を定義したいときに困りました。 このまま定義すると汎用性が無くなってしまいます。 つまり、 aaa.txtの文字列を自由に変更したいと思ってもそう簡単に行かないです。
 そんなときに次の記述で大丈夫です。

  a catp ’cat \!* | pr −w80 −l66 | lp’

 \!*は引数を意味します。 (厳密には展開を抑えるために\が入っているのだが、 この際気にしなくても良いです。 )これで例えば、 catp bbb.txtと入力すると”cat bbb.txt | pr −w80 −l66 | lp”と入力したのと同じになります。 (\はバックスラッシュと読みます。 日本のキーボードでは大体¥マークになっています。 バックスラッシュがなかったら¥マークを入れても問題ありません。 )

 ここまでお読み下さいまして、誠にありがとうございました。
字ばっかりで面白味に欠けるページだったとは思いますが、
わかりやすく書いたつもりです。
好評であれば続編を出すつもりなのでその時はまた読みに来て下さい。



ご相談や、お問い合わせ、
このページに関するご感想は、

mail-icon kawaml@zato.nu (特定電子メールの受信を拒否する)
まで、宜しくお願いします。

メインページへ戻る homeへ