今回は「オプション」についてお話しよっかな。


コマンドにつける「オプション」を覚えることで
より便利にコマンドを使えるのね。


コマンドによって、様々な「オプション」が
あるんだけどね、例えば・・・【cp】コマンド。


これはね、ファイルをコピーするときに使う
コマンドなんだけど、一例として【-r】とか
【--force】っていうオプションをつけれるんだ。


【-r】っていうのは、ディレクトリを再帰的にコピー
するっていう「オプション」で、【--force】っていう
のは、コピー先に同名ファイルがあるときも警告を
せずに上書きを行うっていう「オプション」。


書き方としては↓こんな感じ。


【cp -r --force Directory1 Directory2】


(cp=コマンド名、-r, --force=オプション、
 Directory1, Directory2=引数ね。)


コマンド名やオプション、引数の間には必ず
区切りとしてスペースを入力するのね。


ハイフンが1つの時は、そのあとに1文字だけ
「オプション」を指定できるの。


ハイフンが2つの時は、そのあとに文字列を
「オプション」として指定できるの。


1文字のオプションを複数指定する場合は
1つにまとめて記述できるんだ。例えば、
【--force】っていう「オプション」は【-f】にも
置き換えられるんだけど、この場合、【-r】と
まとめて↓こんな風に記述できるょ。


【cp -rf Directory1 Directory2】


その他、コマンドやオプションについては
『#010 よく利用するLinuxコマンド一覧』
に記載してあるURLを参考にしてね。



あとは、そうだなぁ~(・・。)ゞ


ひらめき電球コマンドを楽して入力する方法も書いて
おこうかな。日頃から何かしらコマンドを入力
している方ならご存知だと思いますけど・・・。


以前入力したコマンドを再度呼び出す履歴機能。
これは 「↑」キー または 「↓」キー で再度表示
できますょ。表示したコマンドは一部の文字列を
変更することも可能ですょ。


もう一つ、長いファイル名や曖昧にしか覚えてない
コマンドを入力する際に役立つ補完機能。分かる
範囲で入力を行い 「Tab」キー を押すと、実在する
ファイルを自動的に探し出してくれます。もし、複数
の候補が存在する場合は、ビープ音が鳴ります。

再度、 「Tab」キー を押すと、候補となるファイル名
が一覧されます。この中から数文字入力したあとに
「Tab」キー を押せば、続きが自動入力されますょ。



明日は、パスを指定しないと実行できないコマンドに
ついて、新規ユーザの作成と削除を例にお話しよう
と思います。


今日はここまで Bye, Bye音譜



ペタしてね


コマンドを入力すると何故ちゃんと結果が
表示されるのかっていう仕組みを知ろう!
というところまで前回お話したかと思います。



今日はその仕組みの部分についてお話
していきますよ~。



仮想ターミナルである「端末」を起動すると、
仮想ターミナル上で「シェル」と呼ばれる
プログラムが起動するのね。「シェル」って
いうのは、ユーザとカーネルの架け橋となる
プログラムで仮想ターミナル上に「プロンプト」
を表示しているのも、この「シェル」なのね。


ユーザはコマンドを入力して実行したい作業
をコンピュータに伝えるんだけど、ユーザが
入力したコマンドって実はカーネルは理解
できてないのね。


カーネルは通常「システム・コール」と呼ぶ
仕組みによってプログラムの中からでないと
呼ぶことが出来ないんだ。


そこで、ユーザはシェルに実行したいコマンドを
伝え、シェルが内部でカーネルを呼び出している
ってワケ。


1.ユーザが【ls】コマンドを入力
2.シェルがカーネルに自身(シェル)のコピー作成依頼
3.カーネルがシェルのコピーを作成
4.シェルが【ls】に化けさせるようカーネルに依頼
5.シェルが【ls】に変身
6.変身したlsが【ls】の処理を実行
7.実行結果を表示するようカーネルに依頼
8.カーネルがファイル一覧の画面を表示する


大まかにはこんな流れ。


この中で、シェルからカーネルに依頼する部分が
「システム・コール」にあたるのね。もっと具体的には
2.の「システム・コール」を「forkシステム・コール」
って呼んで、4.の「システム・コール」を「execve」
って呼ぶみたい。


「forkシステム・コール」で作成された自分のコピー
を「子プロセス」と呼んで、作成を依頼した側のことを
「親プロセス」って呼ぶの。


例えば、【ls】コマンドを入力すると、シェルが子シェル
を生み、子シェルが【ls】に変身するの。親シェルは
子シェルが実行を終えるのを待ってて、子が処理を
終えると親は再び活動を開始して、ユーザに「プロンプト」
を表示するのね。コマンドの入力を受け付けるシェルは
親だけど、コマンドの実行と出力は子が頑張ってるってコト。



ここまでダラダラぁ~っとシェルについての仕組みを説明
したけど、その中にちょくちょく出てきてた「プロンプト」に
ついても少しお話しようかな。


『#009 シェルにコマンドを!』で「端末」起動時に表示
される「[Rina@localhost ~] $」をプロンプトって呼ぶょ、
ってところは説明したと思うんだけど、もう少し詳しくね。
(※ @はわざと全角にしてますょ~)


だいたい分かるとは思うんだけど、


[Rina@localhost ~] $


Rina:これは操作しているユーザの名前ね。
localhost:ここは操作中のホスト名。
~:現在のディレクトリ(~はホームディレクトリの意味)
$:プロンプト記号($は一般ユーザ、#は管理者権限)




「プロンプト」については、これ以上あんまりお話するネタが
ないので、今日はここまで。 

Bye, Bye音譜



ペタしてね

コマンドを使うにあたって、知っておくべき知識を

記載していこうかと思います。


まずは、パス表記について。


・・・Rinaはパスワードのパスかと思いましたが

違います。「Pass」ではなく「Path」です。。。


例えば、Windowsの場合・・・


C:\Documents and Settings\Rina\document.txt


[C:]

・これはデバイスを表してます。

・ドライブ・レターともいうそうですね。


一つ目の[\]

・ファイル システムの一番上を表す「\」記号を先頭に。


二つ目以降の[\]

・「\」記号でフォルダやファイルを区切ります。



一方、Linuxの場合・・・


/home/Rina/document.txt


一つ目の[/]

・ドライブという概念がない為ドライブ・レターは不要。

・ファイル システムの最上位を表す「/」記号を先頭に。


二つ目以降の[/]

・「/」記号でフォルダやファイルを区切ります。




Linux上で特別な意味を持つ記号を3つ・・・


[./] (ピリオドとスラッシュ)

・現在のディレクトリ(カレントディレクトリ)を意味します。


[../] (ピリオドとピリオドとスラッシュ)

・1つ↑のディレクトリ(親ディレクトリ)を意味します。


[~/] (チルダとスラッシュ)

・ホーム・ディレクトリを意味します。




Path表記についてはこんなモンかな!?




よぉ~し、次ッビックリマーク




ほとんどのLinuxディストリビューションではWindows同様に

GUI (Graphical User Interface) を利用できるみたいなんだけど、

Linuxでサーバを運用するなら、GUIとは別にコマンドを使うCUI

(Character-based User Interface) を利用していくのが王道みたい。


ということで、CUIの仕組みについて簡単にまとめようと思います。




流れとしては・・・


ユーザ:ファイルAの中身を見たい

キーボード:コマンドを入力 【cat ファイルA】

Linux:ファイルAをディスクから取り出す

Linux:ファイルAの内容を画面に表示

画面:ファイルAの内容が文字にて画面に表示される

ユーザ:ファイルAの中身を確認できる



こんな感じ。




要は、コマンドを打てばいいっていう話なんだけど、

コマンドを入力することで、何故ちゃんと表示される

のかっていうところも理解しておく必要があるみたい。


その部分についてはまた明日ね。


だってぇ~、まだRinaが理解できてないからしょぼん


このあと面接に行かなきゃなんないの。

ということで、今日はここまで Bye Bye音譜



ペタしてね