Access(Today: - / Yesterday: - / Totoal: - )
bash
機能
コントロールキー
TTYと絡みで以下が使える。
| コントロールキー |
stty名 |
機能定義 |
| CTRL-C |
intr |
フォアグラウンドプロセスを強制終了 |
| CTRL-D |
eof |
入力を終了(End of file) |
| CTRL-\ |
quit |
フォアグラウンドプロセスを強制終了。「Ctrl+C」よりも強力 |
| CTRL-S |
stop |
画面への出力を停止 |
| CTRL-Q |
start |
画面への出力を再開 |
| DEL または CTRL-? |
erase |
最後の文字を削除する |
| CTRL-U |
kill |
入力中コマンドを削除 |
| CTRL-Z |
susp |
フォアグラウンドプロセスを一時停止 |
ヒストリ
キーボードから入力したコマンドは自動的にファイルに保存され、過去に実行したコマンドを呼び出して実行することが出来る。
(ホームデリレクトリの下の「.bash_history」)
| キー操作 |
内容 |
| ↑キーまたは、Ctrl + P |
前(過去)のコマンドを表示 |
| ↓キーまたは、Ctrl + N |
後ろのコマンドを表示 |
| キー操作 |
内容 |
| !(コマンドパターン) |
パターンに一致するコマンドを実行 |
| !! |
1つ前に実行したコマンドを実行 |
| !n |
historyコマンドで表示された履歴番号のコマンドを実行 |
| !-n |
履歴番号からnを引いた番号のコマンドを実行 |
| ^引数1^引数2 |
1つ前に実行したコマンドの引数を引数1から引数2に変更して実行 |
キーバインド
Windowsのショートカットキーみたいなもの。
| キーバインド |
動作 |
| [Ctrl]+p |
1つ前のコマンドを呼び出す |
| [Ctrl]+n |
1つ痕のコマンドを呼び出す |
| [Ctrl]+f |
カーソルを右に移動 |
| [Ctrl]+b |
カーソルを左に移動 |
| [Ctrl]+d |
カーソル位置の1文字を削除(Delete) |
| [Ctrl]+h |
カーソル位置の前の1文字を削除(BackSpace) |
| [Ctrl]+k |
カーソル位置より右側の文字をすべて切り取る |
| [Ctrl]+u |
カーソル位置より左側の文字をすべて切り取る |
| [Ctrl]+y |
切り取った文字を張り付ける |
| M+< |
履歴の先頭コマンドを表示 |
| M+> |
履歴の末尾コマンドを表示 |
コマンド連続実行
| 連結文字 |
動作 |
| ;(セミコロン) |
1行にコマンドを;で区切って複数指定することにより、連続実行する |
| && |
&&の前に指定したコマンドが成功した場合に、&&以降のコマンドを実行する |
| || |
||の前に指定したコマンドが失敗した場合に||以降のコマンドを実行する。||の前に指定したコマンドが成功した場合には、||以降のコマンドを実行しない。 |
ジョブ制御
プログラムをシェルのバックグラウンドで動作させたりフォアグランドに移動させたりできる。
| コマンド |
機能 |
| fg |
バックグラウンドのコマンドをフォアグランドへ戻す |
| bg |
フォアグランドのコマンドをバックグラウンドへ移す |
| jobs |
現在実行中のジョブを表示する |
| nohup |
ハングアップシグナルに反応せずにコマンドを実行する。コマンド実行中にログアウトしてもコマンド実行を継続する |
ワイルドカード
ファイルグロブと呼ばれる記号を指定してファイルやディレクトリ名などのワイルドカード指定をする。
| 記号 |
機能 |
| * |
0個以上の文字列に一致 |
| ? |
1文字に一致 |
| [文字] |
指定した文字のいずれかに一致 |
| [!文字] |
指定した文字のいずれかに一致しない |
| [a-z] |
a~zの範囲の文字に一致 |
| [!a-z] |
a~zの範囲の文字に一致しない |
| {str1,str2...} |
指定した文字を作成 例: file_{tt1, tt2,tt3}は、file_tt1, file_tt2, file_tt3と展開される |
標準入出力
UNIXのファイルディスクリプタのうちの3つは予約され,プロセスが起動時この3つのファイルディスクリプタ(そして,対応するファイルが)が利用可能になる.
予約されている3つのファイルディスクリプタは以下の3つ
(シェルではそれぞれディスクリプタの0番,1番,2番となる)
- 標準入力(Standard Input)
- 標準出力(Standard Output)
- 標準エラー(Standard Error)
リダイレクト
| 実行例 |
説明 |
| コマンド > file |
コマンドの標準出力をfileに書き込む |
| コマンド >> file |
コマンドの標準出力をfileに追記する |
| コマンド < file |
コマンドはfileの内容を標準入力として受け取る |
| コマンド << 終了文字 |
終了文字を入力するまでキーボードから入力を続ける |
| コマンド 2> file |
コマンドの標準エラー出力をfileに書き込む |
| コマンド 2>> file |
コマンドの標準エラー出力をfileに追記する |
| コマンド > file 2>&1 |
コマンドの標準出力と標準エラー出力をfileに書き込む |
| コマンド >> file 2>&1 |
コマンドの標準出力と標準エラー出力をfileに追記する |
パイプライン
コマンドの標準出力をファイルではなく別のコマンドの標準入力にすることをパイプという.
| 実行例 |
説明 |
| コマンドA|コマンドB |
コマンドAの標準出力をコマンドBの標準入力に渡す |
| コマンド|tee file |
コマンドの標準出力を表示するとともにfileに書き込む |
プログラミング1
インタプリタ指定
シェルの先頭に付ける「#!/bin/bash」の事で、どのシェルスクリプトを実行するかを明示する。
例)
#!/bin/bash -> Linuxの場合
#!/usr/bin/bash -> Solarisの場合
シェル変数
プログラムで情報を格納する変数でシェル内部でのみ利用可能な変数
変数の値は、「$」を先頭につけることによって参照可能となる。
シェル変数の有効範囲(スコープ)は、シェルスクリプトを実行しているシェルプロセスのみとなる。
代入は「変数=値: VAL="1"」という形
| $変数名 |
変数の値を参照 |
| ${変数名} |
変数名の区切りを明確にして変数の値を参照 |
変数を扱う場合、「""」(ダブルクォーテーション)、「''」(シングルクォーテーション)、「``」(バッククォーテーション)があり意味が異なる。
| ""(ダブルクォーテーション) |
変数を展開して、その中身を扱う |
| 「''」(シングルクォーテーション) |
変数を展開しないで文字として扱う |
| 「``」(バッククォーテーション) |
コマンドを展開して実行結果を扱う |
環境変数
環境変数は、グローバル変数のような扱いで他プロセスのシェルからも参照できる特別な変数。export(csh系ではsetenv)を指定して環境変数にする
| 環境変数名 |
意味 |
| HOME |
ユーザのフォームディレクトリパス |
| PATH |
コマンドのサーチパス |
| TERM |
現在のターミナルの種類 |
| SHELL |
使用中のシェル |
| USER |
現在のユーザ名 |
| LANG |
使用中の言語 |
| HOSTNAME |
ホスト名 |
| PS1 |
プロンプト文字 |
| 関連コマンド |
機能 |
| export |
Bourne系シェルでの環境変数設定 |
| setenv |
Cシェル系での環境変数設定 |
| printenv |
環境変数の内容表示 |
| env |
環境変数の内容表示・設定 |
| set |
すべての変数内容表示、シェル設定 |
| unset |
変数、関数の定義削除 |
| source |
し知恵されたファイルを読み込み、コマンドを実行 |
| exec |
新しいプロセスを起動せずにコマンドを実行 |
スクリプトの引数
スクリプト実行時に渡す引数h、BASHの特別な変数として参照可能
| 変数名 |
引数の内容 |
| $0 |
シェルスクリプト名 |
| $数値、${数値} |
指定した数値番号(1~n)目の引数の値 |
| $# |
引数の数 |
| $@ |
すべての引数)空白区切り) |
プログラミング2(制御文)
if/else
単純な 条件文 を実現するのに「if と else」がある。
if 条件
then
文
else
文
fi
| 演算子 |
真になる条件 |
| str1 = str2 |
str1 と str2 が一致する |
| str1 != str2 |
str1 と str2 が一致しない |
| -n str1 |
str1 が NULL ではない(長さが 0 より大きい) |
| -z str1 |
str1 が NULL である(長さが 0) |
| 演算子 |
真になる条件 |
| -d file |
file が存在し,かつディレクトリである |
| -e file |
file が存在する |
| -f file |
file が存在し,かつ通常ファイルである(ディレクトリや特殊ファイルではない) |
| -r file |
file に read パーミッションがある |
| -s file |
file が存在し,空ではない |
| -w file |
file に write パーミッションがある |
| -x file |
file に execute パーミッションがある, ディレクトリの場合は search パーミッションがある |
| -O file |
file の所有者である |
| -G file |
file のグループ ID が自分のものと一致する(複数のグループに属している場合はそのうちのどれかと一致する) |
| file1 -nt file2 |
file1 が file2 よりも新しい |
| file1 -ot file2 |
file1 が file2 よりも古い |
| 演算子 |
比較 |
| -lt |
より小さい |
| -le |
以下 |
| -eq |
等しい |
| -ge |
以上 |
| -gt |
より大きい |
| -ne |
等しくない |
for
繰り返しを実現する構造
for name in list
do
$nameを利用する文
done
case
場合分けの構造を実現
case 条件式 in
パターン1)
処理1 ;;
パターン2)
処理2 ;;
:
*)
デフォルト処理;;
esac
select
指定されたリストを番号付きで表示し,ユーザに番号を入力させる.
select name in list
do
$name を利用する文
done
while until
while 条件式
do
処理
done
until 条件式
do
処理
done
演算子
文字列演算子
| 演算子 |
置換内容 |
| ${varname:-word} |
varname が存在し NULL ではない場合, その値を返す.それ以外は,word を返す. |
| ${varname:=word} |
varname が存在し NULL ではない場合, その値を返す.それ以外は,varnameに wordを設定して返す. ただし,位置パラメータや特殊なパラメータを除く. |
| ${varname:?message} |
varname が存在し NULL ではない場合, その値を返す.それ以外は varnameのあとに message を出力し, 現在のコマンドあるいはスクリプトを中止する. message を省略すると初期メッセージ parameter null of not setが生成される. |
| ${varname:+word} |
varname が存在し NULL ではない場合, word を返す.それ以外は NULL を返す. |
| 演算子 |
置換内容 |
| ${variable#pattern} |
variable の値の最初の部分と pattern が一致した場合, もっとも短く一致する部分を削除して残りの部分を返す |
| ${variable##pattern} |
variable の値の最初の部分と pattern が一致した場合, もっとも長く一致する部分を削除して残りの部分を返す |
| ${variable%pattern} |
variable の値の終りの部分と pattern が一致した場合, もっとも短く一致する部分を削除して残りの部分を返す |
| ${variable%%pattern} |
variable の値の終りの部分と pattern が一致した場合, もっとも長く一致する部分を削除して残りの部分を返す |
| 演算子 |
置換内容 |
| ${#variable} |
variable の長さを返す |
数値演算子
| 演算子 |
置換内容 |
| + |
加算 |
| >> |
右にビットシフト |
| - |
減算 |
| & |
論理積 |
| * |
乗算 |
| | |
論理和 |
| / |
除算(切り捨て) |
| 論理否定 |
| % |
剰余 |
| ! |
論理否定 |
| << |
左にビットシフト |
| ^ |
排他的論理和 |
| 演算子 |
置換内容 |
| < |
より少ない |
| == |
等しい |
| より大きい |
| != |
等しくない |
| <= |
以下 |
| && |
論理積 |
| >= |
以上 |
| || |
論理和 |
| 演算子 |
置換内容 |
| let |
数値演算式の計算結果を変数に代入可能 |
組み込みコマンド
| コマンド(組込み) |
説明 |
| read |
ユーザからの入力を変数に代入 |
| expr |
算術演算処理を実施し、その結果を標準出力に表示する |
| eval |
複数の変換処理を一度に行う |
| seq |
数列を表示する |
| echo |
引数を標準出力へ書き出す |
| export |
変数を大域変数として追加する |
| declare |
変数を整数型として処理したり、参照のみ(read only)に設定することができる |
最終更新:2010年02月07日 19:25