Bash イントロダクション
Bashシェルは、LinuxおよびmacOSシステムと対話するための主要なインターフェースであり、プログラムの実行、ファイル管理、およびタスクのオートメーション(自動化)のための強力なコマンドライン環境を提供します。
本セクションでは、Bashシェルの基本事項を網羅し、より高度なスクリプト作成技術を習得するための堅牢な基礎を築きます。
1. Bashシェルとは?
Bash(Bourne Again Shellの略)は、コマンドラインインタープリタ(または単にシェル)です。ユーザーとオペレーティングシステムの間のインターフェースとして機能し、ターミナルに入力されたコマンドを直接実行できるようにします。Bashは単なるコマンドインタープリタにとどまらず、プログラミング言語としての側面も持ち合わせており、複雑なタスクを自動化するためのスクリプトを記述することが可能です。
1.1 Bashのコア機能
- コマンド実行: ユーザーが入力した各種システムコマンドを実行します。
- スクリプト作成: 一連のコマンドロジックを含む自動化スクリプトの作成を可能にします。
- カスタマイズ: 設定ファイルを介して、高度にパーソナライズされた環境構築が可能です。
- プログラミング構造: 変数、制御フロー(ループ、条件分岐)、関数をネイティブにサポートしています。
- 拡張性: さまざまな外部プログラムやユーティリティをシームレスに統合・拡張できます。
1.2 なぜBashを学ぶのか?
- 汎用性: Bashは、ほとんどのLinuxディストリビューションおよびmacOSシステムのデフォルトのシェル環境です。
- オートメーション: 反復的なタスクを自動化することで、時間を大幅に節約し、ヒューマンエラーを削減できます。
- システム管理: サーバーやオペレーティングシステムの管理・構成において不可欠なコアスキルです。
- 開発補助: プロジェクトのビルドプロセス、テストの自動化、CI/CDデプロイにおいて極めて有用です。
- データサイエンス: 迅速なデータ処理、テキスト分析、データパイプラインのスクリプト作成に活用できます。
2. Bashシェルとの対話
Bashシェルとの対話は、主にターミナル(Terminal)を通じて行われます。ターミナルウィンドウを開くと、通常は $ 文字で終わるプロンプト(Prompt)が表示されます。このプロンプトは、シェルがコマンドの入力を受け付ける準備が整っていることを示しています。
2.1 基本コマンド
Bashシェルと対話するための基本的なコマンドをいくつか見ていきましょう。なお、ls、cd、pwd、mkdir、rm などのコアなファイル操作コマンドの詳細については、後続のセクションで詳しく解説します。
echo: ターミナルに指定したテキストをプリント(表示)します。
echo "こんにちは、世界!"date: 現在のシステム日付と時刻を表示します。
dateuname: オペレーティングシステムのシステム情報を表示します。
uname -ahistory: 以前にターミナルで実行したコマンドの履歴リストを表示します。
history3. 命令(コマンド)の構文
Bashのコマンドは、通常、標準的かつ特定の構文構造に従います。
command [options] [arguments]- command (コマンド): 実行したいプログラムまたはコマンドの名前。
- options (オプション): コマンドのデフォルトの動作を変更するためのフラグ(通常、1つまたは2つのハイフン
-または--で始まります)。 - arguments (引数): コマンドが操作を実行するために必要なターゲットデータ、オブジェクト、またはファイルパス。
構文の例:
ls -l /home/userこの具体的なコマンドの内容は以下の通りです:
lsがコマンド(list、ディレクトリの内容をリスト表示する)。-lがオプション(long listing format、詳細情報を長形式で表示する)。/home/userが引数(内容を表示する特定のディレクトリパスを指定)。
3.1 ヘルプの取得
Bashは、システム内のプログラム向けに、man(manualの略)コマンドによる組み込みのヘルプドキュメントメカニズムを提供しています。
man ls上記のコマンドを実行すると、ls コマンドのマニュアルページが表示され、すべての使用方法、サポートされているオプション、引数に関する詳細情報が確認できます。キーボードの方向キーでナビゲートし、閲覧が終わったら q キーを押してヘルプ画面を終了します。
4. Bashの設定ファイル
Bashは起動時に、動作や環境をカスタマイズするためにいくつかのプリセット設定ファイルを読み込みます。これらのファイルは、新しいシェルセッションが開始されるときに自動的に実行されます。
4.1 主要な設定ファイル
/etc/profile: すべてのユーザーに適用されるシステムレベルの設定ファイル。~/.bash_profile: ユーザーレベルの設定ファイル。「ログインシェル(login shells)」の起動時に一度だけ実行されます。~/.bashrc: ユーザーレベルの設定ファイル。「インタラクティブな非ログインシェル」(新しいターミナルタブを開く際など)の起動ごとに実行されます。~/.bash_logout: ユーザーレベルの設定ファイル。「ログインシェル」が終了またはログアウトする際に実行されます。
ヒント: パス内の ~ 記号は、現在のユーザーのホームディレクトリ(Home directory)を表します。
5. シェルのカスタマイズ
前述の設定ファイルを編集することで、個人のシェル体験をカスタマイズできます。開発者が行う代表的なカスタマイズは以下の通りです。
1. エイリアス (Aliases)
長くて複雑な、あるいは頻繁に使用するコマンドに対して、短いショートカットを作成します。
alias la='ls -la'この設定により la という名前のエイリアスが作成され、ターミナルで la と入力するだけで ls -la を実行したのと同等の結果が得られます。
2. 環境変数 (Environment Variables)
他のプログラムやスクリプトの動作に影響を与えるグローバルな環境変数を設定します。
export EDITOR=vimこれにより、システムのデフォルトのテキストエディタを vim に強制設定します。
3. プロンプトのカスタマイズ
コマンドラインプロンプトの外観や、表示される色・情報を変更できます(通常は PS1 変数を編集します)。
設定の反映:~/.bashrc などの設定ファイルに加えた最新の変更を適用するには、ターミナルウィンドウを一度閉じてから再度開くか、source コマンドを使用して現在のウィンドウでファイルを再読み込みします。
source ~/.bashrc