bash操作

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 スクリーンを消灯させない