シェルって何ですか!?
Raspberry PiはRaspbianという基本ソフト(OS)で動作しています。WindowsやMacなどのOSとは違うLinux系のOSです。Linuxはオープンソースですが、元々はUNIXと呼ばれるOSが元になっています。UNIXの歴史は1968年からと古く、そのUNIXのユーザーインターフェースとして用意されているのが今回の主人公「シェル」になります。マウスで命令できる時代でもLinux系OSにはシェルが残っています。これはシェルの方が細かく命令を指定してコンピュータに指示できるからです。
今のパソコンはマウスやキーボードを使って、フルカラーの見やすい画面に視覚的に矢印型のマウスポインタを移動させたりしてコンピュータに命令を送っていますが、昔のコンピュータは真っ黒の画面に白い文字が表示されていて、その画面に文字を入力してコンピュータに命令を送っていました。
ラズパイを学ぶなら「シェル」を知らないと大変!
Raspberry PiもLinux系のOSであるRaspbianが基本OSですから、シェルを使ってラズベリーパイにいろいろと命令をして計算やプログラムを動かしたりします。「シェル」を知らないとラズベリーパイを自由に操作できないともいえます。
では、まずはこのシェルの画面を呼び出してみましょう。シェルを呼び出すためには画面上部に並んでいるアイコンの「LXTerminal」をクリックします。
すると、画面中央にLXTerminalが起動して、シェルの画面が表示されます。
LXTerminal (ターミナル)ってなんですか?
UNIXのユーザーインターフェース「シェル」を表示させるもの。
よくこのターミナルとシェルは同じものととらえている人が多いですが実は全然違うものです。UNIXが開発された当時、コンピュータは非常に高価なものだったため、大企業でも1台しか持てないところが沢山ありました。しかしコンピュータに計算させたい人は沢山いるわけです。ということで端末(ターミナル)と呼ばれるモニタとキーボードと最低限のプログラムだけが走るものを複数用意して、計算するための高性能なCPUや大容量のRAMなどは1台で、各端末から来た命令を順番に処理していくという方法がとられてきました。端末(ターミナル)からはコンピュータに対して命令を送るためのものです。メインの中央にあるコンピュータからシェルを呼び出してその画面を表示させるだけの目的で用意されたのが端末、いわゆるターミナルです。
時代の流れと共にソフトウェア化されたターミナル
やがてパーソナルコンピュータなどが登場すると、コンピュータも複数台購入できるようになり、個人でもコンピュータを持つようになりました。MacintoshやAT互換機などの登場によりOSも様々なものが登場するようになりいよいよパソコンが広まり始めMacOSやMS-DOS、Windowsなどが知られるようになりました。中でもUNIXの系統であるオープンソースのLinuxの登場によりUNIX時代には考えられないような破格でサーバー構築などが可能になりました。LinuxはUNIXと同等の機能と搭載しているため、端末からログインしてコンピュータを使うという事が可能です。しかしすでにコンピュータが広まりつつある時代に、端末だけを用意するなら、コンピュータの中にハードウェアだった端末をソフトウェアとして入れたのが「ターミナル」です。疑似的にターミナルをソフトで表しているのでターミナルエミュレータとも言います。
種類もいろいろあるターミナル
ターミナルはLinuxなどのOSに対して命令を直接送るためのプログラム「シェル」を表示させるプログラムです。ターミナルにも種類がいろいろあります。ターミナルには以下のようなものがあります。
Raspberry Pi ではLXTerminalを採用しています。これらターミナルにも沢山種類があるのは、Linuxにも沢山種類があるからです。
Linuxのディストリビューション
Linuxは1種類だけではなくいろいろな種類に分かれています。Linuxは様々な用途で使える汎用的なOSであるため、その利用するグループにより最初にコンピュータに入れるソフトやLinuxの仕様がいろいろとカスタマイズされてきました。それらをカスタマイズするグループにより、違った特色をもつLinuxが現れてきました。大きく分けるとDebian系 やRedHat系、SlackWare系と別れ、それぞれの系統の中でも細かくLinuxが用途によって分かれています。
このように利用用途によりLinuxがそれぞれ進化していったものをLinuxのディストリビューションといい、そのディストリビューションの中でターミナルもいろいろと機能を付けたりして進化していきいろいろなターミナルが登場したわけです。例えば日本語が表示できるターミナルや、機能を削って軽量化したものなどいろいろあります。
Raspbianの搭載のLXTerminalについて
Raspberry Piの公式OSとして配布されているRaspbianはLinuxの中でもDebian系のもので、Raspberry Piのコントロールに適した形に改良されたLinuxディストリビューションです。Debian系のOSの中ではLXterminalが良く使われていて、余計な機能をそぎ落として、軽量に作られていることから、通常のコンピュータに比べ処理能力の低いRaspberry Piには最適のものと言えます。
シェルにも種類がある!
ここまでをまとめると、UNIX系OSのLinuxに人が命令を伝えて計算や処理を行う場合、「シェル」を使って命令(コマンド)を送り、そのシェルを表示させるソフトが「ターミナル」であることがわかりました。
Linuxには様々なディストリビューションがあり、ターミナルにもいろいろな種類があったように、シェルにも種類があります。
まずは、Raspberry piの標準のシェルが何になっているか調べてみましょう。「LXTerminal」を開いて以下のコマンドをシェルに入力すると現在つかっているシェルを教えてくれます。
$ echo $SHELL
すると以下のように表示されます。
/bin/bash と表示された最後の「bash」というのがシェルの種類になります。他にもシェルにはLinuxのディストリビューションの違いなどによりいくつかのシェルがあります。有名なものとしては Bourne Shell系のものとC言語に構文がにているC Shell系などがあります。
Bourne Shell 系
- sh
- ash
- dash
- bash
- zsh
C Shell 系
- csh
- tcsh
Raspberry Piのシェル「bash」は広く使われているもので、ほとんどのLinuxディストリビューションに搭載されています。bashを学んでおけば殆どのLinuxの操作などに対応できます。
bashを使ってみよう
実際の操作についてはさらに別の記事で紹介していきますが、ここではいくつかコマンドを入力してbashからコンピュータに命令したものがどのように帰ってくるか見てみましょう。
現在のディレクトリにあるものを知る
非常によく使うコマンドです。シェルに以下のコマンドを入力することで現在のディレクトリにあるファイルやフォルダを表示してくれます。
$ ls
より詳しいファイルの情報を知りたい場合にはlsの後ろにオプションでalと付け加えると、a が「隠しファイルを表示する」lが「ファイルの詳細をリストにして表示する」というオプション命令になりますので、入力してみましょう。
$ ls -al
すると以下のように表示されます。
ファイルの実行権限や、ファイルの持ち主、更新日、隠しファイルの先頭には「.」(ドット)がついていたりと様々な情報を見ることができます。
もう1つ、Raspberry Piならではのコマンドも打ち込んでみましょう。Raspberry PiにはGPIOポートという電子工作などに使えるピンがついていますが、この配列を表示させるコマンドです。
$ gpio readall
すると以下のようにピン配列とその機能が一覧表示されます。
このようにラズベリーパイでもシェルから様々なコマンドを使ってコンピュータに命令を送ることで自分がやってほしい処理を実行させることができます。まずは基本であるシェルとターミナルについて学習しました。