Bash ファイルシステムとディレクトリ移動
ファイルシステム内を自在に移動するスキルは、Bashシェルを利用する上で避けては通れない必須技能です。グラフィカルユーザーインターフェース(GUI)でフォルダを開いたりファイルを整理したりするのと同様に、コマンドライン上でも現在の場所を把握し、目的のディレクトリやファイルにアクセスする方法を理解する必要があります。
本章では、Bashでのファイルシステム・ナビゲーションに必要な基礎知識を解説し、より高度なスクリプト作成やシステム管理タスクへの足がかりを築きます。
1. 絶対パスと相対パス
ファイルシステム内で特定のファイルやディレクトリを正確に特定するために、「パス」の概念は極めて重要です。パスには主に「絶対パス」と「相対パス」の2種類があります。
1.1 絶対パス
絶対パスは、ルートディレクトリ(/)を起点として、ファイルやディレクトリの正確な位置を指定します。これは、建物の完全な住所(住所地番)を教えるようなものです。
例: /home/user/documents/report.txt
このパスは、report.txt ファイルの場所を一意に示しています。このファイルは documents ディレクトリ内にあり、documents は user 内に、user は home 内に、そして home はファイルシステムの最上層であるルートディレクトリ(/)の直下に位置しています。
1.2 相対パス
相対パスは、現在作業しているディレクトリ(カレントディレクトリ)を基準に、ファイルやディレクトリの位置を指定します。これは、現在地から見た「進むべき方向」を指し示すようなものです。
例: 現在の作業ディレクトリが /home/user である場合、report.txt への相対パスは documents/report.txt となります。
相対パスの重要なコンポーネント:
.(シングルドット): 現在のディレクトリを指します。例えば、./my_script.shはカレントディレクトリにあるmy_script.shを明示的に指します。通常は省略可能ですが、パスを明確にする場合や特定のコマンドで要求される際に有用です。..(ダブルドット): 親ディレクトリ(1つ上の階層)を指します。例えば、現在のディレクトリが/home/user/documentsならば、../は/home/userを指します。
シナリオ例:
現在 /var/log ディレクトリにいると仮定します。
syslogファイルへの絶対パス:/var/log/syslogapache2ディレクトリへの相対パス(直下にある場合):apache2varディレクトリへの相対パス:..(varはlogの親ディレクトリであるため)
1.3 パス形式の選択基準
- 絶対パスを使用する場合: 現在の作業ディレクトリがどこであっても、特定の場所を確実に参照したい時に使用します。スクリプト作成において、どこから実行されても同じファイルにアクセスする必要がある場合に非常に有効です。
- 相対パスを使用する場合: ファイルの位置関係がカレントディレクトリから見て固定されている場合や、異なる環境にコピーしてもコードを修正せずに動かしたい「ポータビリティ(移植性)」を重視するスクリプトを作成する場合に適しています。
2. pwd コマンド
pwd コマンドは "print working directory"(作業ディレクトリを表示)の略です。ターミナル上に、現在自分がいるディレクトリの絶対パスを表示します。ファイルに影響を与える操作を実行する前に、自分の位置を確認するために極めて重要なコマンドです。
実行例:
pwd
# 出力例: /home/user/documentsこの出力結果は、現在 /home/user/documents というディレクトリで作業していることを示しています。
3. cd コマンド
cd コマンドは "change directory"(ディレクトリを変更)の略です。現在の作業ディレクトリを切り替えることで、ファイルシステム内を自由に移動できます。
3.1 基本的な使い方
cd <ディレクトリのパス>ここで指定する <ディレクトリのパス> は、絶対パスでも相対パスでも構いません。
例:
cd /var/log: 現在のディレクトリを絶対パス/var/logに変更します。cd documents: 現在/home/userにいる場合、相対パスを使って/home/user/documentsへ移動します。cd ..: 1つ上の階層である親ディレクトリに移動します。cd: 引数を指定せずに実行すると、現在のユーザーのホームディレクトリ(通常は/home/<ユーザー名>)に移動します。cd -: 直前にいたディレクトリに戻ります。
3.2 特殊なケースとショートカット
cd ~: 現在のユーザーのホームディレクトリに移動します。引数なしのcdと同じ効果です。チルダ ~ はホームディレクトリを表すショートカット記号です。- タブ補完 (Tab completion): Bashには「タブ補完」機能があり、パスを正確かつ高速に入力できます。パスの最初の数文字を入力して
Tabキーを押すと、名前が自動補完されます。候補が複数ある場合はTabを2回連続で押すと、一致する候補が一覧表示されます。
4. ls コマンド(概要)
ls コマンドの詳細は後の章で解説しますが、ファイルシステムのナビゲーションにおいて欠かせないツールであるため、ここで触れておきます。ls は、カレントディレクトリ(デフォルト)または指定したディレクトリ内のファイルやディレクトリを一覧表示します。特定の場所にどのようなコンテンツがあるのかを「視覚化」することで、ナビゲーションを補助します。
実行例:
ls /var/logこのコマンドは、/var/log ディレクトリ内にあるすべての内容をリストアップします。