これは標準的な Unix の動作です。
/
パスの先頭にある は、ディスクのルート (またはファイルシステム ツリーの開始/最上位レベル) を表します。 Documents
として ルートから外れていない、/Documents
見つかりません。
/Users
はルート ディレクトリから離れているため、この問題は発生しません。
cd /Users/lukas/Documents
を使用できます そのパスに変更します。
または、相対アドレス指定を使用することもできます。 Unix ベースのファイルシステムには、2 つの特別なディレクトリがあります:
.
これは「このディレクトリ」を意味します..
これは親ディレクトリを意味します。
/Users/lukas
にいる場合 、 cd ./Documents
正しい場所に連れて行ってくれます。
あなたが /Users/Lukas/Documents
にいたとしましょう /Users/Janes/Documents
に行きたかった 、コマンド cd ../../Janes/Documents
を発行できます - ..
を使用 レベルを戻すため、新しい相対パスに入る前に 2 回実行します。
/Users/lukas
「絶対」パスです。先頭の /
ファイルシステムのルート ディレクトリを表します。
lukas
「相対」パスです。ルートに固定されていないため、「current でこれを探す」ことを意味します ディレクトリ」。現在のディレクトリが /Users
でない限り (または lukas
を持つ他のディレクトリ )、これは失敗します。
それでは、あなたが /Users/lukas
にいると仮定して、あなたの例を調べてみましょう :
$ cd Documents/
/Users/lukas/Documents
指定された相対パス => /Users/lukas
内のディレクトリ「Documents」に変更 .
$ cd /Documents
-bash: cd: /Documents: No such file or directory
指定された絶対パス => ディレクトリ /Documents
に変更 .
$ pwd
/
これは、作業ディレクトリをルート ディレクトリ /
に変更したことを示しています。 (ただし cd
これを行うコマンドは示されていません)。
$ cd Users
/Users
指定された相対パス => /
内のディレクトリ「Users」に変更 .
$ cd /Users
/Users
指定された絶対パス => ディレクトリ /Users
に変更 .
毎回重要なのは、先頭の /
です .これでパスは絶対です。それがなければ、パスは相対です。すべての絶対パスが /
で始まるため、このルールは明確です。 (ルートディレクトリは常に /
と呼ばれるため ).
以下は、そのアルゴリズムを大まかに記述した疑似コードです:
MakePathAbsolute(path):
if <path> starts with '/'
return <path>
else
return <current directory>/<path>
cd
に渡す引数 このアルゴリズムを通過します。最終的に変更するディレクトリは、アルゴリズムが返すパスです。
さらに読む:
- Unix ファイルとディレクトリのチュートリアル
ジョセフ・L・ザカリー
「科学的プログラミング入門」