絶対パスと相対パス
Linuxのディレクトリツリーを理解し活用するためには、ファイルやディレクトリの位置を示すパスの書き方を正しく理解することが重要です。ここでは、絶対パスと相対パスの違いについて、具体的な例やディレクトリ構造図を用いてわかりやすく解説します。
絶対パス
絶対パス(またはフルパス)とは、ルートディレクトリ/
を起点としてファイルやディレクトリの場所を示すパスの表記方法です。パスの先頭が/
で始まるのが特徴で、システム内で一意にファイルやディレクトリを指定できます。
絶対パスの例
- /usr/bin/bash
- /etc/nginx/nginx.conf
- /home/user01/Documents/report.txt
特徴
- 明確性:ルートディレクトリからの完全な経路を示すため、曖昧さがありません。
- 非依存性:カレントディレクトリに関係なく、常に同じ場所を指します。
欠点
- 入力の手間:ディレクトリが深い場合、パスが長くなり入力が面倒です。
- 移植性の問題:他のLinuxマシンにプログラムを移植する際、ディレクトリ構造が異なると動作しない可能性があります。
相対パス
相対パスとは、現在のカレントディレクトリを起点としてファイルやディレクトリの場所を示すパスの表記方法です。パスの先頭が/
で始まらないのが特徴で、カレントディレクトリからの経路を示します。
特殊なディレクトリ
.
(ドット):カレントディレクトリ..
(ドットドット):親ディレクトリ(1つ上のディレクトリ)
相対パスの例
- Documents/report.txt(カレントディレクトリ内の
Documents
フォルダの中のreport.txt
) - ../config/settings.conf(親ディレクトリの
config
フォルダ内のsettings.conf
) - ./script.sh(カレントディレクトリ内の
script.sh
)
ディレクトリ構造を用いた具体例
以下のディレクトリ構造を例に、絶対パスと相対パスの違いを解説します。
/
├── home
│ └── user01
│ ├── Documents
│ │ └── report.txt
│ ├── Downloads
│ └── script.sh
└── etc
└── config
└── settings.conf
絶対パスの例
- /home/user01/Documents/report.txt
- /etc/config/settings.conf
相対パスの例
カレントディレクトリが「/home/user01」の場合
- Documents/report.txt(/home/user01/Documents/report.txtを指す)
- ./script.sh(/home/user01/script.shを指す)
- ../../etc/config/settings.conf(/etc/config/settings.confを指す)
カレントディレクトリが「/home/user01/Documents」の場合
- report.txt(/home/user01/Documents/report.txtを指す)
- ../script.sh(/home/user01/script.shを指す)
- ../../../etc/config/settings.conf(/etc/config/settings.confを指す)
絶対パスと相対パスの比較
項目 | 絶対パス | 相対パス |
---|---|---|
起点 | ルートディレクトリ / | カレントディレクトリ |
表記の特徴 | パスの先頭が / で始まる | パスの先頭が / で始まらない |
明確さ | システム内で一意で明確 | カレントディレクトリに依存するため注意が必要 |
入力の手間 | パスが長くなる場合がある | 短く簡潔に記述できる |
移植性 | ディレクトリ構造が異なると問題が発生 | カレントディレクトリに依存するため柔軟性が高い |
「.」と「..」の確認
.
はカレントディレクトリを指します。
例:./script.sh
はカレントディレクトリ内のscript.sh
を指します。..
は親ディレクトリを指します。
例:../config
は親ディレクトリ内のconfig
ディレクトリを指します。
まとめ
- 絶対パスはルートディレクトリから始まる完全なパスで、ファイルやディレクトリを一意に指定できますが、長くなりがちで移植性に欠ける場合があります。
- 相対パスはカレントディレクトリを基点とするパスで、短く簡潔に記述できますが、カレントディレクトリに依存するため、使用時には注意が必要です。
.
と..
を使用することで、カレントディレクトリや親ディレクトリを基点にした柔軟なパス指定が可能です。
Linuxで効率的に作業を進めるためには、絶対パスと相対パスを状況に応じて使い分けることが重要です。これらの概念を正しく理解し、適切に活用することで、ファイル操作やスクリプト作成がよりスムーズになります。