Operating System
シェルの補助機能を紹介した。
コマンドを組み合わせる方法として、以下の技術を紹介した
リダイレクトとパイプ
(パイプの活用については今回少し補足をしておこう)
パイプ、という概念は、Unixで採用されその影響で多くのOSに広まった、
OS技術或いはソフトウェア技術の世界でトップクラスの重要な大発明と言える。
なお、パイプラインという用語は、管で連結された長い経路を指す一般的な用語。
水道やガスの供給網もパイプラインの一種。地域内のインフラでもあり、 長距離を運ぶものもある(上田を通るものもある。関心のある人は ガスのパイプライン 等の情報源をあたって下さい)。
(前にも述べたが)パイプという技術が出現するまでは、「ジョブ制御文」「コマンドプロシージャ」という記述で、プログラム(コマンド、ジョブ等)の動作を、順々に制御していた(下図左)。プログラムは同時に動作せず、プログラムからプログラムへのデータの受け渡しはファイルで行うのが普通だった。
=>
パイプラインでは、プログラム(コマンド)は並行動作し(上図右)、
プログラム間のデータの受け渡しはパイプ(と呼ばれる、メモリの中に仮想的に設定された通信路)経由で行われ、
プログラム1からのデータ片が送られてくると、その都度プログラム2(データが来るまでは眠った状態)が起きだして処理を続行する。
昔ながらの手作業ベースの量産工場で行われる「流れ作業」のイメージに近いものと考えていいだろう。
なお、右図のように、後方の段(パイプラインでは右側)のプログラム(コマンド)が先に終了すると、前段のプログラムも(自分が生成したデータを受け取ってくれるプログラムが存在しないため)動作を継続する必要がないので、それを受けて一緒に終了する。
(第5回でも言及したが)コンピュータの端末機器はテレタイプライター (単に文字をデータとして伝送するだけの機械;コンピュータではない) を継承して作られたもの。
現在のコンピュータの内部文字コード(英文字)の元の規格 ASCII コード もその時代のものを継承している。
H => 01001000 (2)
Ctrl ^
ここを落とす
↓
Ctrl-H 00001000
ASCII の 0x~31x までのコード(制御文字)の使い方も、コンピュータやOSの中で部分的にそれに準じた形になっていて、
BS(08x)はバックスペースを表すものとして端末の中で使われる(キー操作としては、 Ctrl-H がそれに相当する)。
元来 Ctrlキーは、英文字のキーと一緒に打鍵して、そのアルファベットの(ABCの中での)順位に相当する制御(コントロール)文字を送信するために使われていたもの。
ASCIIのアルファベット大文字の符号の、26 に相当する(左から2番めの)ビットを0にしたコードを送信している、という意味でもある。
Ctrl-A 行頭へ
Ctrl-E 行末へ
上下には Ctrl-P Ctrl-N
ただし、Bashで使えるキー操作のすべてが上記の由来のものではない。
=> 別ページ参照
ファイルとディレクトリの操作について、以下の作業は 各自で行って慣れておいて下さい(これは特に提出は不要)。
(ホームディレクトリにファイルを1つ作成した上で、)
ls -l ファイル名
コマンドで確認する。「パーミッション」について調べてみて下さい。