25.6.1. パスの表記
コマンドでファイルやフォルダを操作する場合には、パスの文字列を使って、対象を特定します。 パスを表現する文字列は長くなることが多いので、用途に応じた略記が利用可能です。
ファイルとフォルダの章で学んだように、1台のコンピュータ内のファイルやフォルダは親子関係を基礎とした木構造で管理されています。 そしてすべての祖先であるルート
/
からそのファイルやフォルダまでの親子関係の列をパスと呼ぶのでした。11.8. 階層ファイルシステム
以降のページでは、慣習的に、ディレクトリという単語をフォルダと同じ意味で使います。
パス名の表し方 #
パス名とは、ファイルやディレクトリの位置を指定するための記述です。大きく分けると、絶対パス名と相対パス名に分けられます。
絶対パス名とは、ルートディレクトリから順番に下位のディレクトリを辿って位置を指定する方法です。絶対パス名ではファイルまたはディレクトリの、ファイルシステム中の絶対的な位置が示されます。ですのでカレントディレクトリがどこであろうと、同じファイルの絶対パス名は変わりません。
相対パス名とは、カレントディレクトリとの相対的な位置関係から位置を指定する方法です。相対パス名はカレントディレクトリとの位置関係で決まるので、同じファイルやディレクトリでもカレントディレクトリが変われば相対パス名は変わります。
相対パス名では、「一つ上のディレクトリ」(親ディレクトリといいます)や「そのディレクトリ自身」の表現が必要になってきます。これらには、それぞれ ..(ピリオド2文字)と .(ピリオド1文字)を用います。コマンドを使ったファイル操作でディレクトリやファイルの位置を指定する場合には、絶対パス名と相対パス名のどちらでも指定することができます。
具体例 #
例えば、カレントディレクトリが /home01/0000000000/tex であったとしましょう。まず、絶対パス名で
/home01/0000000000/Documents/sample.txt
と表されているファイル(Finder でいうと、「書類」フォルダにある sample.txt になります)は、相対パス名では
../Documents/sample.txt
と表されます。
また、絶対パス名で
/opt/local/bin
/home01/0000000000/tex/other/hoge.tex
と表されるディレクトリやファイルは、それぞれ相対パス名では
../../../opt/local/bin
other/hoge.tex
のように表されることになります。
ディレクトリ自身を表すピリオド .
#
一見すると、「ディレクトリ自身」を示すピリオド (.) は余計なもののように見えますが、ちゃんと意味があります。
例えば、コマンドのオプションはよく – や –(ハイフン 1 つか 2 つ)で始まるので、-piyo.txt など、ハイフン (-) で始まるファイル名を指定する場合はそのままではうまくいかない場合があります。そのような場合、./-piyo.txt と ./ をつければ、(相対)パス名として正しく認識されることになります。
また、カレントディレクトリにある実行ファイルを実行する場合、Windows 環境では単にファイル名を入力すれば実行できますが、Mac OS X などの UNIX 系 OS ではうまくいかないようになっているのが習慣です( 25.6.4. パーミッションと実行ファイル )。そのような場合、./ を前につけて実行ファイル名を指定すればよいです。
ホームディレクトリ #
ホームディレクトリは、 11.2. ホーム において、ホームフォルダとして習ったものと同じです。ターミナルにおいては、自分のホームディレクトリを表すために(絶対パス名を書く代わりに)~ を使うことができます。例えば、自分の ID が 0000000000 であるとき、
/home01/0000000000/tex
と書く代わりに
~/tex
と書けます。
ターミナルウィンドウを開いた直後では、カレントディレクトリはホームディレクトリになっています。