コマンドを入力を受け付け、適切な処理をして結果を表示しているプログラムのことをシェルという。
シェルプログラムにはいくつか種類があるが、Linuxで標準的に利用されているのはbashというシェル。
シェルの確認コマンド
ps
システムで利用可能なシェルは /etc/shellsファイルで確認できる
●標準入出力
Linuxで実行されるプログラムはデフォルトで、標準入力、標準出力、標準エラー出力の3つ。
●リダイレクト
リダイレクトを使うと、コマンドの標準出力を端末画面ではなく、任意のファイルに切り替えることができる。
コマンド > ファイル名
例)date > today
dateコマンドの出力をtodayファイルにリダイレクトしている。todayファイルが存在しない場合は、ファイルが新しく作られる。
※「>」を使ったリダイレクトはファイル内容を上書きしてしまう。上書きではなく、ファイルの末尾に追記する場合は「>>」を使う、
※エラーメッセージは標準出力ではなく、標準エラー出力に出力される。標準エラー出力にリダイレクトするには「2>」もしくは「2>>」を使う。
●|(パイプ)
パイプ「|」を使うと、あるコマンドの実行結果を別のコマンドで処理することができる。lessコマンドで表示するときによく使われる。
コマンド | コマンド
●メタキャラクタ
シェルにとって特別な意味を持つ文字をメタキャラクタという。
* 0文字以上の任意の文字列
? 任意の1文字
[] []内の任意の1文字
\ メタキャラクタの打ち消し
・historyコマンドを実行するとコマン履歴の一覧を表示できる。「!履歴番号」を実行すると、指定した履歴番号のコマンドが再度実行される。
●エイリアス(コマンドの別名をつける)
alias [別名[=コマンド]]
例)alias la=’ls -la’
これで、laコマンドを実行すると「ls -la」コマンドが実行される様になる。
例2)alias lsl=‘ls -l | less’
これで「ls -l」の実行結果をlessコマンドで実行するというエイリアスを設定できる。
※エイリアスを使用する場合、スペースを含む文字列には引用符(’’)で囲む必要がある。
※ダブルクォーテーション(””)で囲むと、変数に設定した値が展開されてしまうので注意。
※スペースの直前に「\」を置く方法もある(エスケープシーケンス)。
例)alias la=ls\ -la
●変数の設定
var=Linux
※「=」も前後にスペースを入れない。
※変数名は大文字、小文字が区別される。
●変数の内容表示
echo $var(変数名)
※変数名には「$」をつける
※変数の内容はシェルが終了すると失われる。また、変数の有効範囲は変数を設定したシェルの中だけ。
●シェル変数と環境変数
1つのシェルの中だけで使える変数をシェル変数といい、設定したシェルと、そのシェル上で起動したシェルや実行したコマンドでも使える変数を環境変数という。
●環境変数の設定
export [変数名[=値]]
●設定している環境変数を表示
printenv
●設定されているシェル変数と環境変数を全て表示
set
●シェルスクリプト
一連のコマンドを自動化できる。シェルスクリプトのファイル名は「.sh」となる。
「#」という記号があると 、そこから右側はコメントとみなされる。
●シェルスクリプトの実行
・bash シェルスクリプトファイル名.sh
・source シェルスクリプト名.sh
sourceコマンドでは、元のシェル(sourceコマンドで実行したシェル)のシェル変数をシェルスクリプト内で参照できる。また、シェルスクリプト内でシェル変数を操作すると、それが元のシェルに反映される。
・シェルスクリプトに実行権を設定し、シェルスクリプトのパスを指定する方法もある。
その場合はカレントディレクトリを明示して実行する必要がある。
./シェルスクリプトファイル名