誰でも出来るUNIX入門講座
まず最初にコンピュータの前に座った時、 最初に画面に表示されているのは、
login : ■ |
でしょう。
ここで、
ユーザはユーザ名を入力する必要があります。
入力してエンターキーを押すと、
login : tanaka password : ■ |
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 % ■ |
% pwd /usr/tanaka % cd /usr % cd yamada % ■ |
% pwd /usr/tanaka % cd /usr % cd yamada % cd .. % pwd /usr % cd yamada % pwd /usr/yamada % cd ../tanaka % pwd /usr/tanaka % ■ |
% 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 :”と出てきますので、
設定したいパスワードを再度確認のために入力して下さい。
一回目と二回目のパスワードが違った場合には新しいパスワードに変更できないので、
再度最初からやり直して下さい。
ヒストリー機能とは過去に入力したコマンドを再度入力したり利用したりする機能のことです。
この機能があれば入力ミスを起こした場合などに楽に再入力が出来ます。
例えば、
ヒストリー機能を使わなかった場合
% 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”と入力したのと同じになります。
(\はバックスラッシュと読みます。
日本のキーボードでは大体¥マークになっています。
バックスラッシュがなかったら¥マークを入れても問題ありません。
)
ご相談や、お問い合わせ、
このページに関するご感想は、
kawaml@zato.nu (特定電子メールの受信を拒否する)
まで、宜しくお願いします。