シェル (shell) とは unix のコマンドインタプリタで、ユーザ端末から入力された文字列を解釈し、その指示に従って仕事をするプログラムです。
kernelとはオペレーティングシステムの中枢で、プロセスやメモリ、ファイル等の管理を行う部分です。
ユーザーがkernelを操るにはシステムコールという仕組みをつかうことになっていますが、プログラムを書くのでなければこれは手軽ではありません。そこでシェルの登場です。シェルを使って備え付けのコマンドなり、自分の作ったプログラムを起動してユーザはkernelへなんらかの指示を対話形式で出すことができます。プログラムを書かないユーザにとってはシェルこそがオペレーティングシステム、あるいはコンピュータそのものに見えますから、シェルを使いこなすことがそのままコンピュータを使いこなすことになるのです。
GUIを提供するX-windowシステムもこのシェルから起動されています。
sh
csh
tcsh
ksh
bash ←
┌──────┐ 標準入力 ⇒│ コマンド |⇒ 標準出力 │ │→ 標準エラー出力 └──────┘
普通は標準入力はキーボード、標準出力と標準エラー出力はディスプレイですが、ファイルに切り替える(リダイレクト)することができます。
ユーザが端末から入力したプログラム(コマンド)を実行する機能
シェルに対して入力された文字列はコマンドラインと呼ばれ、一般的に次のような形をしています。
$ command [-option] [arg1 [arg2 [... [argn]]]]
option はオプション arg は引数 [ ]はその内部があってもなくてもよいことを表しています。
表示
$ echo I love java I love java $
リスト
$ ls ファイル・ディレクトリの一覧
詳細タイプ
$ls -l
$ echo I love java > rtest $
rtest ができています。
$ ls
内容を見てみます
$ cat rtest
ファイルに追加です。
$ echo I love linux >> rtest
内容を見てみます
$ cat rtest
ファイルにさらに追加です。
$ echo I love debian >> rtest
内容を見てみます
$ cat rtest
なにをするコマンドでしょう
wc rtest
どうなるでしょう
sort rtest