cdを使用する場合の/の使用


12

私はMacのホームディレクトリにいます:

$ pwd
/Users/lukas

私がcd周りにいるとき、私はパスを開始しません(できません)/

$ cd Documents/
/Users/lukas/Documents

$ cd /Documents
-bash: cd: /Documents: No such file or directory

私がいるときを除いて/

$ pwd
/
$ cd Users
/Users

$ cd /Users
/Users

なぜ私が使用することができます/から行くときのパスの前に//Users、後続のレベルではなく?これはmacOS固有のものですか、それともこの標準的なUnixの動作ですか?


11
私は、相対パスと絶対パスについての質問がされていると思う尋ね befofre
adamczi

6
@adamczi OPは相対パスが何であるか、またはその構文がどのようになっているかを知らないため、検索できません。
モニカを

12
@ K.Gkinisこれは重複として閉じない理由ではありません。質問者が正しい回答を得るのに役立ち(回答が良いと仮定する)、回答者が同じコンテンツのより少ないバージョンを維持するのに役立ちます。
user202729

9
@ K.Gkinisそして、ある意味では、それは重複として閉じるポイントの大部分です:人々は多くの異なる方法で質問をするので、単一の答えを指す多くの質問(それらの方法に一致する)は良いこと。このような場合(OPが検索する用語を知らない場合)、クロージングとしてのクロージングは​​それらに対する批判ではなく、人々が質問する多くの方法を処理する最良の方法です。
TripeHound

1
@adamczi彼らは(リンクをありがとう!)の前に尋ねたが、私の質問とここに与えられた特に素晴らしい答えがあるされている方法より詳細でリンクされた答えより良い概念を説明します。重複としてクローズする必要があるかどうかはわかりませんが、考慮事項になる場合があります。
ルーカスカウェラウ

回答:


45

これはUnixの標準的な動作です。

/パスの先頭には、ディスク(またはファイルシステムのツリーの開始/最上段)のルートを表します。Documentsルートから外れないで、/Documents見つけることができません。

/Users ルートディレクトリ外にあるため、この問題は発生しません。

cd /Users/lukas/Documentsそのパスに変更するために使用できます。

または、相対アドレス指定を使用できます。Unixベースのファイルシステムには、2つの特別なディレクトリがあります。

  • . これは「このディレクトリ」を意味し、
  • .. これは親ディレクトリを意味します。

あなたがしている場合は/Users/lukascd ./Documents正しい場所に連れて行くでしょう。

あなたがに/Users/Lukas/Documentsいて/Users/Janes/Documents、そこに行きたいと仮定すると、コマンドを発行できますcd ../../Janes/Documents-を使用..するとレベルが戻ります-したがって、新しい相対パスに入る前に2回実行します。


1
注:@davidgoはときに、前記のようにUsers/lukascd Documentsのコール相対パス絶対パスをcd /Users/Lukas/Documents呼び出します(このコマンドを呼び出すときに、どのレパートリーでも機能します)。
シャンx

1
質問はUnixシステムであるMacについてですが、これはDOS /がUnixから(長い、複雑な歴史を経て)それを借用しているため、これは標準のMS-DOS / Windowsの動作(`\`に置き換え)です。
フリーマン

2
また、使用するシェルに応じて、cd $ HOME / Documentsまたはcd〜/ Documentsも機能します。シェル変数HOME($ HOMEでアクセス)は、ホームディレクトリの通常の保存場所です(〜は$ HOMEの特別なエイリアスです)。
pboss3010

13

/Users/lukas「絶対」パスです。先頭/はファイルシステムのルートディレクトリを表します。

lukas「相対」パスです。ルートに固定されていないため、「現在のディレクトリでこれを探す」ことを意味します。現在のディレクトリ/Users(またはその他のディレクトリが含まれるディレクトリlukas)でない限り、これは失敗します。

だから、あなたがいると仮定して、例を探ってみましょう/Users/lukas

$ cd Documents/
/Users/lukas/Documents

指定された相対パス=>内部の「Documents」ディレクトリに変更し/Users/lukasます。

$ 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このアルゴリズムを通過します。最終的に変更するディレクトリは、アルゴリズムが返すパスです。


参考文献:


また、これは優れたウォークスルーであり、この動作を理解するのに本当に役立ちます。ありがとうございました!:)
LukasKawerau
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.