Linuxでメジャーに使われるシェル:bash の機能逆引き一覧です。ほとんど自分用のメモですが、公開してみます。
誤りやツッコミがありましたらコメントをお願いします。
[コンソールの切り替え]
[Alt]+[F?] 別バッファでログイン [Alt]+[F7] 別バッファでXでログイン
[Ctl]+[Alt]+[F?] Xからの切り替えはCtrlも押す必要がある。
[入力補完]
[tab]
[コマンド履歴]
^P (↑) 以前のコマンド ~N (↓) 以後のコマンド
$ history : 履歴番号とそのコマンドの表示 ~/.bash_history : history の参照するファイル
$ !パターン パターンに一致する最新のコマンドを実行 $ !! 1つ前を実行
$ !履歴番号 historyの番号を実行 $ !-数字 ~回前を実行
$ ^引数1^引数2 1つ前のコマンドの、引数1部分を引数2にして実行 $ echo $$ 使用シェルのPIDを表示
[カーソル移動]
^A 行頭へ
^E 行末へ ^B 左へ
^F 右へ
[行編集]
^H バックスペース ^D デリート
^U 行頭からカーソルまでの文字列を削除 ^K カーソルから行末までの文字列を削除
^Y 直前に削除した文字列を貼り付け ^L カレント行を画面の先頭にする
[画面表示の停止・再開]
^S 一時停止
^Q 再開
[jobのバックグラウンド実行]
$ コマンド&
[外部コマンド:/usr/bin/nohup]
プログラムをバックグラウンドで実行し、その後ログアウトすると、 そのとき実行していたプロセスには自動的に SIGHUP シグナルが送られ、プロセスは終了する。
$ nohup command & としてコマンドを実行すると、ログアウトしても command には SIGHUP シグナルが送られない。
つまりログアウト後も実行を続けさせることができる。 abc.sh の標準出力、標準エラー出力に送られたデータはプログラムを実行したディレクトリに nohup.out というファイル名で保存される。
プログラムを実行したディレクトリに書き込み権限が無ければ $HOME/nohup.out に保存される。 ちなみに、nohup を付けても & を付けないとターミナルを独占するので、別途 & は付ける。
[jobの連続実行]
コマンド;コマンド;コマンド 順次実行
コマンド1&&コマンド2 1が成功なら2を実行 コマンド1||コマンド2 1が失敗なら2を実行
[ログアウト]
$ logout : exit と異なり、Stopped 状態のjobがあればログアウトできない。
[シェル変数]
$ set シェル変数と環境変数を表示する。
csh の場合は、シェル変数の宣言は、set var=value とするが、bash は不要。 よってbashでは、set コマンドはシェル変数(狭義のシェル変数)と環境変数(広義のシェル変数)
の閲覧目的でしか使わないと思われる。 $ unset 変数名 : シェル変数を削除する
[環境変数]
$ export 変数名 シェル変数を環境変数に設定する。
環境変数は、すべての子プロセスに引き継がれる変数であり、シェルの外に影響する値。 $ env : 環境変数のみを閲覧する(シェル変数は無視)
[文字列の評価]
'文字列' シングルクォート:完全な文字列
"文字列" ダブルクォート:$変数 を展開する `文字列` バッククォート:変数に加え、コマンドも展開する
[シェル関数]
function 関数名() {コマンド;} 引数を使ってより複雑な内容を定義する、シェル関数 $ function lsdir() {ls -l $1 | grep '^d';} 「$1」は1番目の引数を表す
$ lsdir /boot 引数"$1"に"/boot"が渡され、boot内のディレクトリが表示される (特殊変数)
$1,$2,$3 : 引数 $@ : すべての引数
$# : 引数の数 $$ : スクリプトのPID
$0 : 実行スクリプトの名前 $? : 最後に実行したコマンドの終了スタータス $ declare -f 定義されている全てのシェル関数を表示
$ unset 関数名 シェル関数の削除
[エイリアス]
$ alias エイリアスの表示 $ alias エイリアス名='コマンド' エイリアスの設定
$ unalias エイリアス名 エイリアスの削除 \エイリアス名 エイリアスを無効化して評価
[標準入出力]
stdin 標準入力:キーボード
stdout 標準出力:端末画面 stderr 標準エラー出力:端末画面
[リダイレクト]
(出力)
コマンド > ファイル 出力のみ コマンド >> ファイル 追記のみ
コマンド 2> ファイル エラー出力のみ コマンド 2>>ファイル エラー追記のみ
コマンド > ファイル 2>&1 stdout,stderr ともにファイルへ書込み コマンド >> ファイル 2>&1 stdout,stderr ともにファイルへ追記
(入力) コマンド < ファイル stdin
コマンド
[パイプ]
コマンド1 | コマンド2 stdout を渡す コマンド1 2>&1 | コマンド2 stdout,stderr を渡す
コマンド1 |tee コマンド2 stdout を画面にもコマンドにも渡す コマンド1 |tee file コマンド2 stdout をファイルにもコマンドにも渡す
[キー配列の変更]
# loadkeys us us(101)キーボード
# loadkeys jp106 jp106キーボード
[端末の設定]
# setterm -blank 5 5分後にスクリーンを消灯する # setterm -blank 0 スクリーンを消灯させない
# setterm -clear all -foreground white -background blue 表示色の設定 # setterm -clear all -foreground cyan -background black -store 表示色を設定しデフォルトにする
(指定可能な色は8色:black, red, green, yellow, blue, magenta, cyan, white)
[ログインシェルの登録]
/etc/shells : ログインシェルとして使えるシェルを登録する
[バックグラウンドジョブ化]
あるコマンドをフォアグラウンドで実行中、バックグラウンドジョブに変更させる。 1.Ctrl+Z にて中断 ⇒ 停止してjob化した番号が表示される(例:[1]+ Stopped コマンド)
2.bg 番号 コマンドにより バックグラウンドジョブ化(例:$ bg 1) 確認:$ jobs により (例:[1]+ Running コマンド &) を確認
[キーの機能割り当て]
$ stty -a : 現在の端末設定一覧
$ stty intr ^C : intr 機能を ^C で割り当て デフォルト:
intr = ^C 割り込み(interrupt)シグナルを送る。 プロセスを強制終了する quit = ^\ 終了(quit)シグナルを送る。 プロセスを強制終了し、coreファイルを作成する。
erase = ^? 最後にタイプされた文字を消去する。 kill = ^U 現在の行を消去する。
eof = ^D ファイル終了(end of file)を知らせる(入力を終了する)。 eol = 行末(end of the line)。
eol2 = 行末を表す別の文字 swtch = 別のシェルレイヤー(shell layer)にスイッチする。
start = ^Q; 停止している出力を再開する。 stop = ^S 出力を停止する。
susp = ^Z 端末に停止(stop)シグナルを送る。 rprnt = ^R 現在の行を再表示する。
werase = ^W 最後にタイプされた単語(word)を消去する。 lnext = ^V 次にタイプされる文字を(スペシャルキャラクタであっても)そのままの文字として受け取る。
[カレントコンソール名の表示]
$ tty
[履歴検索]
^R $ (reverse-i-search)`': プロンプトが表示されるので、コマンドを記入。
^E もしくは [Enter] で確定。 更にさかのぼって検索するときは ^R
[ESC] または ^G で終了。
最終更新: