気の向くままに辿るIT/ICT/IoT
bash

bash/Bourne-Again SHell

ホーム前へ次へ
bashとは?

bash/Bourne-Again SHell

sh/bash

 UNIX誕生とともに搭載されていたシェルBourne ShellをUNIX/LinuxにおけるオープンソースプロジェクトGNUが改良したのがBourne-again Shellです。

 コマンドとしてのbourne SHellはsh、Bourne-Again SHellはbashです。

 bashも多くのUNIX/Linuxに標準でインストールされ、shとbashがある場合でも、そのほとんどは、shのalias(別名)としてbashが割り当てられています。

 UNIX/Linuxにはいくつかの種類のシェルが実装されていてユーザーが切り替えることができることも珍しくありませんが、ここではbashについて書きます。

シェルを始めるのは簡単

 UNIX/Linux環境があって下記の3つを知っていれば、仮に初心者でもすぐに始められます。

 キーボードからの入力方法 

 ログイン/ログアウトと端末のシャットダウン 

 2~3個のコマンドとhelpオプション、man/info/helpコマンドの使い方 

 UNIX/Linuxは、シェルやコマンド含めてman、info、helpコマンド、各コマンドのhelpオプションと、これでもかというくらいそのシステム上には豊富な情報があるのでコマンド(名)さえ知っていれば仮に豊富なコマンドラインオプションがあったとしても情報には事欠きません。

sh/bashの入力モード

$ set -o vi 

$ set -o emacs 

 bashでコマンドラインに入力をする場合にvi (vim)モード/emacsモードの2種類あり、デフォルト(既定)ではemacsモードで変更するには、このようにします。

 viを使ったことがない場合、とりあえずコマンドライン操作は、既定のemacsモードの方が無難です。

 コマンドにはシェル組み込みコマンドシステム必須コマンド、GNUコマンドを含むその他のコマンドなどがありますが、普段その違いを意識して利用することはあまりありません。

sh/bashのログイン・ログアウトと端末のシャットダウン

 (例) : 

 login : 

 password : 

 シェルにログインする際には、普通そこに表示される何らかの入力を促すアナウンスに従って、アカウント名(ユーザー名)とパスフレーズ(パスワード)を入力します。

正しく入力されるとシェルプロンプトが表示されます。

 ちなみにログイン中の人を確認するには[who]と入力して[Enter]

$ who                 * bashに誰?って聞いてみると教えてくれる

自分が誰か(なんと言うユーザー名でログインしているか)を調べるには(スペースを入れずに)[whoami]と入力して[Enter]を押します。

$ whoami           * bashに私は誰?って聞いてみると教えてくれる

$ logout 

 ログアウトするには、[logout]と入力し、[Enter]を押します。

 もし、下記のようにログインしたシェル(ログインシェル)のシェルプロンプトから更にbashを立ち上げた(サブシェルの)場合、

$ bash 

$             ←実は違うbash(サブシェル)のプロンプト

               * csh/tcshならプロンプトが%になりわかりやすい

[exit]コマンドを入力して終了すると、呼び出し元のシェルに戻るので

$ bash 

$ exit 

exit 

$             ←(見た目にはわからないけど)元のシェルのプロンプトに戻る

              * この様子はプロセスとジョブで確認可

そこで[logout]と入力し[Enter]を押すと再度ログイン画面が表示されます。

$ bash 

$ exit 

exit 

$ logout 

 [logout]は、席を離れる際などに安全のためにも行いますが、端末の電源を落とす場合には、[shutdown]コマンドを使用します。

$ shutdown 

 再起動など[shutdown]にはオプションとなるオプションスイッチと場合によってコマンドライン引数(コマンドライン入力の際にコマンドと一緒に渡す何らかの値)があります。

あとは

 コマンドには、オプション必須含めオプション指定できるものがあり、

$ gcc -c -o foo        ←複数ある場合それぞれハイフン必須

$ ls -alF                  ←複数ある場合ハイフン1つに複数オプション指定可

$ ar crsv ...              ←ハイフン不要

                                  crsv(またはrcsv)はrコマンドと一般修飾子c,s,v

$ tcsh --version      ←ハイフン2つ

のようなケースがあり、例えばlsの場合には、それぞれのオプションに[-]ハイフンを付けても可だったりしますし、[-]ハイフン2つというのは、実はオプションなしという意味なので往々にしてコマンドのバージョンやヘルプなどの情報として使われたりするわけですが、あとはman/info/helpコマンドと入力補完機能ディレクトリ操作、各ディレクトリにどんなファイルがあるかを眺めるlsコマンドファイル閲覧/作成編集/コピー/移動/削除リダイレクト/ヒアドキュメント・標準入力/標準出力/標準エラー出力がわかれば、実にさまざまなことができるようになりますし、自然といろいろ試してみたくなると思います。

 シェルスクリプトシェル関数及び演算子制御構造、はたまたパラメータ展開、時にbash設定ファイル環境変数については関心が向いた時、必要になった時に調べればよいでしょう。

LINK

ホーム前へ次へ