シェル

作成日 : 2013-11-17
最終更新日 :

シェルとは

シェルとは、オペレーティングシステムとユーザーとのインターフェースを提供するソフトウェアである。 エスペラントでは、英語からのなりゆきで ŝelo としたり、 意味をくんで terminalo (端末道具)と言ったりする。

シェルの種類

Unix だけでも、多くのシェルがある。

私は対話的なシェルは csh から入っていき、そして tcsh にした。 しかしその後は対話的な環境でも bash である。 一方で、バッチ処理のためのシェルは sh を、そして sh の文法内での bash を使い続けている。 大多数の Unix ユーザがそうだったと勝手に思っている。

リダイレクト

sh や bash の場合、標準出力と標準エラー出力と合わせてファイル output.txt に落とすには次のようにする。

% command >output.txt 2>&1

これを

% command 2>&1 > output.txt

と順番を逆にするのは誤り。

以上は、sh や bash の場合である。csh や tcsh ではこうはいかない。 tcsh で上記を試して Ambiguous output redirect (リダイレクト出力があいまいです) というメッセージが出てきて恥ずかしかった。

ssh

ssh はシェルの一種であろうが、毛色が違う。secure な shell ということである。

bash のプロンプト

bash のプロンプトを変更したいと思った。下記が役に立った。
bash のプロンプトを変更するには (www.atmarkit.co.jp) 参照。

環境変数

環境変数 FOO の内容を参照するには $ set FOO とする。 環境変数を省くと環境変数すべてを表示する。

環境変数 FOO を削除するのは unset を使う。

$ unset FOO

bash の引数

次のようなシェルスクリプトを書いたとき:

#!/bin/sh
# shtest
echo $0
echo $1
echo $2

コマンドとその応答は次のようになる。

$ ./shtest foo bar
./shtest
foo
bar

直前のコマンド

そのまま実行する

直前に実行したコマンドは !! で実行できる。

引数を使う

直前に実行したコマンドの引数は !$ で参照できる。

変更する

直前のコマンドや引数を置換するには ^before^after を使う。

リンク

まりんきょ学問所UNIX 手習い > シェル


MARUYAMA Satosi