2章シェルについての理解

このように、プロンプトでコマンドを実行することができるのですが、では、そのプロンプトとはいったい何でしょうか? それはどこから来て、コマンドはどのように実行されるのでしょうか? また、プロンプトはなぜ重要なのでしょうか?

その小さなプロンプトは、シェル(shell)と呼ばれるプログラムによって生成されます。プロンプトは、ユーザーとLinuxオペレーティングシステムの間に存在するユーザーインターフェースです。Linuxでは複数のシェルが提供されており、最も一般的なのが(そして本書で標準的に使用しているのが)、bashと呼ばれるシェルです(他のシェルを使用する場合は、「付録B 他のシェルを使用する場合」を参照してください)。

bashやその他のシェルは、単にコマンドを実行するだけでなく、多くのことを行います。たとえば次のように、一度に複数のファイルを参照するために、コマンドにワイルドカード(*)が含まれている場合、

$ ls *.py 
data.py    main.py    user_interface.py

このワイルドカードは、lsプログラムによってではなく、完全にシェルによって処理されます。シェルは、*.pyという式を評価し、それにマッチするファイル名のリストに置き換えます。これは、lsが実行される前にlsから見えないように行われます。つまり、lsがワイルドカードを目にすることはありません。lsの観点からすれば、ユーザーが次のコマンドを入力したのと同じです。

$ ls data.py main.py user_interface.py 

シェルは、「1章 コマンドの組み合わせ」で説明したパイプの処理も行います。stdinやstdoutを透過的に(コマンドに意識させることなく)リダイレクトするので、関係するコマンド同士は、互いにやり取りしていることを知りません。 ...

Get Efficient Linuxコマンドライン ―開発と自分に磨きをかけるLinuxのテクノロジー now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.