Linux環境での作業効率を最大化するために、ターミナル(CLI)の基本的な概念と、日常的に役立つ便利な機能を解説します。
目次
ターミナルの基礎概念
ターミナル操作の根幹となる要素です。
1. シェル (Shell)
- 定義: ユーザーとOSのカーネル(核)との間を仲介するプログラムです。ユーザーが入力したコマンドを解釈し、OSに実行させます。
- 種類: Linuxで最も一般的に使われるシェルは Bash (Bourne Again Shell) です。その他にも、Zsh、Fishなどがあります。
2. 環境変数
- 定義: シェルや実行されるプログラムの設定や状態を定義する動的な名前付きの値です。
-
主な変数:
-
PATH: コマンドを実行する際に、実行ファイル(バイナリ)を探しに行くディレクトリのリスト。 -
HOME: ログインユーザーのホームディレクトリのパス。 -
USER: 現在ログインしているユーザー名。
-
-
操作コマンド:
-
echo $[変数名]: 環境変数の値を表示(例:echo $PATH)。 -
export [変数名]=[値]: 環境変数を設定(子プロセスにも引き継がれる)。
-
3. カレントディレクトリとホームディレクトリ
-
カレントディレクトリ: 現在作業しているディレクトリ。パスは
pwdで確認できます。 -
ホームディレクトリ: ユーザーの個人用ディレクトリ。パスは
~や$HOMEで参照でき、cdコマンドを引数なしで実行すると移動します。
効率を上げる便利機能
ターミナル操作を劇的に速くする機能です。
1. コマンド履歴 (History)
- 機能: 過去に実行したコマンドが記録されており、再利用や確認ができます。
-
操作方法:
-
↑/↓キー: 直前に実行したコマンドを順に呼び出す。 -
history: 過去に実行したコマンドのリストを表示する。 -
![番号]:historyで表示された番号のコマンドを再実行する(例:!123)。 -
!文字: その文字から始まる最新のコマンドを再実行する(例:!git)。 -
Ctrl + r: 履歴をインクリメンタル(逐次的)に検索する。
-
2. Tabキーによる補完 (Completion)
- 機能: コマンド名、ファイル名、ディレクトリ名などの入力を途中で補完し、入力ミスを防ぎます。
-
操作方法:
- 入力を途中まで行い、
Tabキーを一度押す:一意に定まる場合は補完される。 -
Tabキーを二度押す:候補が複数ある場合、すべての候補が表示される。
- 入力を途中まで行い、
3. エイリアス (Alias)
- 機能: 長いコマンドや複雑なコマンドに短い別名を付けて登録する機能です。
-
設定方法:
alias [別名]='[元のコマンド]' -
使用例:
# ll を ls -lah の別名として登録 alias ll='ls -lah' # エイリアスのリストを確認 alias -
永続化: エイリアスは一時的なものなので、永続的に使用するには
.bashrcや.zshrcなどの設定ファイルに記述する必要があります。
4. ジョブ管理 (Job Control)
- 機能: 実行中のプロセスを停止(サスペンド)させたり、バックグラウンドで実行させたりする機能です。
-
操作方法:
-
Ctrl + z: 実行中のプロセスを一時停止(サスペンド)する。 -
bg: 一時停止中のプロセスをバックグラウンドで実行再開する。 -
fg: バックグラウンドのプロセスをフォアグラウンド(画面表示あり)に戻す。 -
jobs: 現在実行中、または一時停止中のジョブ一覧を表示する。
-
5. ショートカットキー
ターミナルでのカーソル移動や編集を高速化するショートカットです。
| キー操作 | 機能 |
|---|---|
Ctrl + a |
行の先頭に移動 |
Ctrl + e |
行の末尾に移動 |
Ctrl + u |
カーソル位置から行の先頭までを削除 |
Ctrl + k |
カーソル位置から行の末尾までを削除 |
Ctrl + c |
実行中のコマンドを強制終了(シグナル送信) |
Ctrl + l |
ターミナルの画面をクリア(clear コマンドと同じ) |
シェルスクリプトの基礎
複数のコマンドを自動で連続実行させるためのスクリプト(プログラム)です。
1. 目的と記述
- 目的: 定期的なシステムメンテナンス、バックアップ、複雑なデータ処理など、手動で何度も実行するのが面倒な作業を自動化します。
-
記述: テキストファイルにコマンドを記述し、実行可能権限 (
chmod +x) を与えて実行します。
2. シバン (Shebang)
-
定義: スクリプトファイルの先頭に記述する
#![パス]の行で、そのスクリプトを実行するインタープリタ(シェル)を指定します。 -
記述例:
#!/bin/bash # このスクリプトは Bash で実行される
3. コントロールフロー
シェルスクリプトでは、条件分岐 (if 文)、ループ (for, while 文) などの制御構造を使って、複雑な処理を記述できます。
-
例(forループ):
#!/bin/bash for file in *.txt do echo "Processing $file" done