コンテンツにスキップ

Bash

出典: フリー教科書『ウィキブックス(Wikibooks)』

概要

[編集]

Bash(Bourne Again Shell)は、Brian Foxによって開発されたUNIXシェルで、GNUプロジェクトの一環として1989年にリリースされました。Bourneシェルの後継として設計され、現在最も広く使用されているコマンドラインインターフェースの1つです。

基本構文

[編集]

コマンドライン基礎

[編集]
  • プロンプト表示: 通常ユーザーは$、root(管理者)は#
  • コマンド実行: コマンド名 [オプション] [引数]
  • 基本的なショートカット:
    • Ctrl + C: 実行中のコマンドを中断
    • Ctrl + D: EOF(End of File)を送信、シェルを終了
    • Ctrl + L: 画面をクリア
    • Tab: コマンドやファイル名の補完

変数

[編集]
  • 変数の定義: 変数名=値(空白を含まない)
  • 変数の参照: $変数名 または ${変数名}
name="John"
echo $name    # John
echo ${name}  # John

環境変数

[編集]
  • PATH: コマンド検索パス
  • HOME: ホームディレクトリ
  • PWD: 現在の作業ディレクトリ
  • USER: 現在のユーザー名
  • SHELL: 現在使用中のシェル

制御構造

[編集]

条件分岐

[編集]

if文

[編集]
if [ 条件 ]; then
    コマンド
elif [ 条件 ]; then
    コマンド
else
    コマンド
fi

case文

[編集]
case  in
    パターン1)
        コマンド
        ;;
    パターン2)
        コマンド
        ;;
    *)
        コマンド
        ;;
esac

ループ構造

[編集]

for文

[編集]
for 変数 in リスト
do
    コマンド
done

while文

[編集]
while [ 条件 ]
do
    コマンド
done

関数

[編集]

関数定義

[編集]
function_name() {
    コマンド
    return }

引数の扱い

[編集]
  • $1, $2, ...: 位置パラメータ
  • $#: 引数の数
  • $@: 全ての引数(配列として)
  • $*: 全ての引数(単一の文字列として)

入出力制御

[編集]

リダイレクション

[編集]
  • >: 標準出力のリダイレクト(上書き)
  • >>: 標準出力のリダイレクト(追記)
  • <: 標準入力のリダイレクト
  • 2>: 標準エラー出力のリダイレクト
  • &>: 標準出力と標準エラー出力の両方をリダイレクト

パイプライン

[編集]
  • |: コマンドの出力を次のコマンドの入力として渡す
command1 | command2

文字列処理

[編集]

文字列操作

[編集]
  • ${#string}: 文字列の長さ
  • ${string:position}: 部分文字列の抽出
  • ${string//pattern/replacement}: パターン置換

パターンマッチング

[編集]
  • *: 0個以上の任意の文字
  • ?: 任意の1文字
  • [...]: 文字クラス
  • [^...]: 否定文字クラス

配列

[編集]

配列操作

[編集]
  • 配列の定義: array=(要素1 要素2 ...)
  • 要素の参照: ${array[index]}
  • 全要素の参照: ${array[@]}
  • 配列の長さ: ${#array[@]}

スクリプト作成のベストプラクティス

[編集]

エラーハンドリング

[編集]
  • set -e: エラー時に実行を中断
  • set -u: 未定義変数参照時にエラー
  • trap: シグナルハンドリング

デバッグ

[編集]
  • set -x: コマンドトレース
  • set -v: 入力行の表示

セキュリティ考慮事項

[編集]
  • 入力のバリデーション
  • 適切な権限設定
  • セキュアな一時ファイル作成

高度な機能

[編集]

プロセス制御

[編集]
  • ジョブ制御
  • バックグラウンド実行
  • プロセス置換

正規表現

[編集]
  • =~演算子による正規表現マッチング
  • grep, sed, awkとの連携

ヒストリー機能

[編集]

コマンド履歴の基本

[編集]
  • history - コマンド履歴の表示
  • !n - 履歴番号nのコマンドを実行
  • !! - 直前のコマンドを実行
  • !文字列 - 最近の「文字列」で始まるコマンドを実行
  • !?文字列 - 最近の「文字列」を含むコマンドを実行
  • !$ - 直前のコマンドの最後の引数を参照
  • !* - 直前のコマンドの全ての引数を参照

履歴の制御

[編集]
  • HISTSIZE - メモリ上の履歴サイズ
  • HISTFILESIZE - 履歴ファイルのサイズ
  • HISTFILE - 履歴ファイルの場所(デフォルト: ~/.bash_history)
  • HISTCONTROL - 履歴の制御オプション
    • ignorespace - スペースで始まるコマンドを履歴に残さない
    • ignoredups - 連続する重複したコマンドを履歴に残さない
    • ignoreboth - 上記両方を有効化

履歴の検索

[編集]
  • Ctrl + R - 履歴の逆方向検索
  • Ctrl + S - 履歴の順方向検索(要設定)
  • 検索中のキー操作:
    • Enter - 検索したコマンドを実行
    • → - 検索したコマンドを編集
    • Ctrl + G - 検索をキャンセル

ジョブコントロール

[編集]

ジョブの基本操作

[編集]
  • command & - コマンドをバックグラウンドで実行
  • Ctrl + Z - 実行中のジョブを一時停止
  • jobs - バックグラウンドジョブの一覧表示
  • fg - 一時停止したジョブをフォアグラウンドで再開
  • bg - 一時停止したジョブをバックグラウンドで再開

ジョブ指定子

[編集]
  • %n - ジョブ番号nのジョブを指定
  • %+ または %% - 現在のジョブを指定
  • %- - 一つ前のジョブを指定
  • %文字列 - コマンドラインが「文字列」で始まるジョブを指定

ジョブの終了制御

[編集]
  • wait - バックグラウンドジョブの終了を待機
  • disown - ジョブをシェルのジョブリストから削除
  • nohup - HUPシグナルを無視してコマンドを実行

ディレクトリスタック

[編集]

基本操作

[編集]
  • pushd ディレクトリ - ディレクトリをスタックに追加して移動
  • popd - スタックから最上位のディレクトリを削除して移動
  • dirs - ディレクトリスタックの表示
    • dirs -v - 番号付きでスタックを表示
    • dirs -c - スタックをクリア

スタックの参照

[編集]
  • ~n - スタック内のn番目のディレクトリを参照
  • cd ~n - スタック内のn番目のディレクトリに移動
  • pushd +n - スタック内のn番目のディレクトリを回転

行編集とキーバインド

[編集]

基本的なキーバインド

[編集]

カーソル移動

[編集]
  • Ctrl + A - 行頭に移動
  • Ctrl + E - 行末に移動
  • Ctrl + F - 一文字前に移動
  • Ctrl + B - 一文字後ろに移動
  • Alt + F - 一単語前に移動
  • Alt + B - 一単語後ろに移動

編集操作

[編集]
  • Ctrl + U - カーソル位置から行頭までを削除
  • Ctrl + K - カーソル位置から行末までを削除
  • Ctrl + W - カーソル位置から単語の先頭までを削除
  • Alt + D - カーソル位置から単語の末尾までを削除
  • Ctrl + Y - 最後に削除したテキストを貼り付け
  • Ctrl + T - カーソル位置の文字と1つ前の文字を入れ替え

履歴操作

[編集]
  • Ctrl + P - 前のコマンド
  • Ctrl + N - 次のコマンド
  • Alt + < - 履歴の最初に移動
  • Alt + > - 履歴の最後に移動

キーバインドのカスタマイズ

[編集]
  • bind - キーバインドの表示と設定
  • ~/.inputrc - キーバインド設定ファイル
# .inputrcの例
"\C-x\C-r": re-read-init-file
"\e[A": history-search-backward
"\e[B": history-search-forward

編集モード

[編集]
  • set -o emacs - Emacsモード(デフォルト)
  • set -o vi - viモード
  • 編集モードの確認: echo $EDITOR

補完機能

[編集]
  • Tab - コマンド/ファイル名の補完
  • Tab Tab - 複数の補完候補を表示
  • Alt + ? - 補完候補の表示
  • Alt + * - 全ての補完候補を挿入

カスタム補完

[編集]
  • complete - 補完の設定
  • compgen - 補完候補の生成
  • ~/.bash_completion - 補完スクリプトの保存場所

この内容は、Bashの対話的な使用を効率化する重要な機能を網羅しています。特にヒストリーとキーバインドの機能は、日常的なシェル操作の効率を大きく向上させます。

関連項目

[編集]

外部リンク

[編集]

下位階層のページ

[編集]