Infra Engineer

【初級者向け】Linux基礎 ~絶対パスと相対パス~
2020.10.23
Lv1

【初級者向け】Linux基礎 ~絶対パスと相対パス~

本記事の対象者

LPIC level1習得を目指す初学者の方
コマンドなどの基本的な用途について、要点を絞って解説します。


今回の内容

今回はコマンド操作で必須となる、絶対パスと相対パスについてまとめていきたいと思います。

覚えておきたいキーワード
・絶対パス
・相対パス


・パスとは

・絶対パスと相対パス
・まとめ
・確認問題

パスとは

最初に、パスとは何かに関して押さえておきましょう。
パス(Path)とは、日本語にすると「道筋」です。ここでいう道筋とは、特定のファイルやディレクトリ(フォルダ)への道筋という意味です。
このパスを使うことによって、ファイルやディレクトリを指定することができるということです。
あるひとつのファイルやディレクトリへの道筋を表す方法が、「絶対」と「相対」で2パターン存在することになります。

具体例をあげて見ていきましょう。


絶対パスと相対パス

上の図は、フォルダ構成の一部分です。アイコンの下に書かれているのは名称となります。ユーザーはtmpディレクトリを参照している状態とします。
同名のファイルでも、配置される場所(ディレクトリ)が違えば存在することができるのは感覚的にわかるかと思います。
同じ場所に配置しようとすると、「既に存在します。上書きしますか?」のようなメッセージが表示されますよね。

それを踏まえて、この構成の中には名前の同じ「sample.txt」というファイルが複数存在します。
それぞれのファイルを指定したい場合、絶対パスと相対パスでどう表現するのかを見ていきます。
絶対パスと相対パスで、基点となる部分の違いに注目してください。

・絶対パス

まずは絶対パスです。
基点は、すべてのディレクトリやフォルダの頂点となる/(ルート)となります。
A: /home/user1/sample.txt
B: /tmp/sample.txt

・相対パス

次に相対パスです。
基点は、ユーザーが現在参照しているディレクトリ(カレントディレクトリという)となります。
A: ../home/user1/sample.txt
B: sample.txt

※Aの表記内にある「..」は親ディレクトリ(一つ上の階層)を表します。

どちらの記述方法でも、単に基点から階層をたどるだけです。ディレクトリ名の区切りは「/」となります。
同じ「sample.txt」という名称のファイルでも、パスを見ると別のファイルだということが分かりますね。

もうひとつ覚えておきたいのは、記述の長さです。
まずファイルAの2つのパスを比較してみます。

絶対パス: /home/user1/sample.txt
相対パス: ../home/user1/sample.txt

ファイルAは、絶対パスのほうが記述が短く済むことが分かりますね。
現在参照しているディレクトリよりも上の階層の道順が違う場合は、絶対パスでの記載のほうが短くなります。

次にファイルBを比較しましょう。

絶対パス: /tmp/sample.txt
相対パス: sample.txt

ファイルBは相対パスのほうが記述が短くなります。
現在参照しているディレクトリの下の階層にあるものを指定したい場合は、相対パスのほうが記述が短くなります。

状況に応じて、短い記述で済むパスの種類が違ってきますので、最初のうちは常にディレクトリの階層をイメージしながら、どちらのパスを使ったほうが良いのか考えてみましょう。


まとめ

今回はディレクトリやファイルの識別方法である2種類のパスについてみてきました。
コマンドでディレクトリやファイルを操作する(簡単なものでいうと、新規作成や名称変更、コピー等)場合に必ず使用しますので、上記の内容をしっかりと押さえておきましょう。


確認問題

問題

「/home/sak/sample/」ディレクトリに移動したい。誤っているコマンドはどれか。(2つ選択)
カレントディレクトリは「/home」とする。

A) cd /home/sak/sample/
B) cd home/sak/sample/
C) cd /sak/sample/
D) cd sak/sample/
E) cd ../home/sak/sample/

解答
答え:B、C

A) 正しい絶対パスで指定されています。
B) 誤りです。先頭が「/」でないため相対パスとみなされ「/home/home/sak/sample」の意味になっています。
C) 誤りです。先頭が「/」のため絶対パスとみなされています。
D) 正しい相対パスで指定されています。
E) 「..」は一つ上の階層です。カレントディレクトリが「/home」のため、相対パスとして正しいです。

Linux資格 「LPIC Lv1」徹底解説 連載目次リンク

Linux資格 「LPIC Lv1」徹底解説 連載目次