web-dev-qa-db-ja.com

「cd ../」と「cd / ..」の違いは何ですか?

これら2つのコマンドの意味は何ですか?

cd ../
cd /..

最初のコマンドではツリーの2つのディレクトリに、2番目のコマンドではルートディレクトリになります。なぜそれが起こるのですか?

7
Fazlan

ディレクトリ/フォルダの名前のendにある/オプションです。ほとんどの場合、ディレクトリ名の最後のスラッシュを含めたり省略しても、コマンドの効果は変わりません。

したがって、cd ../cd ..と同等です。

start/でないパスは相対パスです。 現在のディレクトリに関連して解決されます。

すべてのディレクトリには2つの特別なエントリがあります。

  • ディレクトリ自体に解決される.というディレクトリエントリ
  • ディレクトリの(つまり、そのディレクトリを含むディレクトリ)に解決される..というディレクトリエントリ

したがって、cd ../およびcd ..は、ディレクトリを現在のディレクトリに変更します。したがって、/home/fazlanで開始してcd ..またはcd ../を実行すると、/homeになります。

対照的に、/..絶対パス(異常ではありますが)です。 /はファイルシステムのルートです。ディレクトリ階層をずっと上に行くと到達するディレクトリです。 (同じの比phorを使用すると、/はファイルシステム内のすべての祖先であると言います。)

..は「このディレクトリの親ディレクトリ」を意味し、/は「ファイルシステムの最上部」を意味するため、/..は「ファイルシステムの最上部の親ディレクトリ」を意味します。

しかし、含む/というディレクトリについて話すとはどういう意味ですか?さて、/は例外です。 ディレクトリに含まれていないなので、/の親はそれ自身であると言います。したがって、/では、../です。したがって、/../と同じです。

cd ../を使用すると、開始した場所から1つのディレクトリが表示され、cd /..を使用すると最上部に移動します。これらのことを行うよりエレガントで読みやすい方法は、それぞれcd ..cd /です。

12
Eliah Kagan

最初は相対パスです。 2番目は絶対パスです。

その引数の..演算子は、1つ上に移動することを意味します。

先頭にない場合のスラッシュは、サブディレクトリ名の分割を意味します。

先頭にあるスラッシュは、「これは絶対パスです。ルートディレクトリから開始してください」という意味です。 ..はこれ以上バックアウトできないため、破棄されます。 (これらの多くがchrootを破ることを許した時代がありました)

2
RobotHumans

単一のドット(。)は、現在のディレクトリを表します。実際、cd .を実行すると、現在のディレクトリに移動します(何も実行されないように見えます)。/dir1から現在のディレクトリに何かをコピーする場合、次のようにできます。

cp /dir1/somefile.txt .

cd ..を実行すると、ディレクトリレベルが1つ上がります。 cd ../も同様です。 twoレベルを上げたい場合、次のように最後にさらに2つのドットを追加します。

cd ../..

ルートディレクトリに戻るには、cd /を実行できます。今、私が次を実行したとしましょう:

cd /dir1/dir2/dir3/..

(上記で設定したように)..は1レベル上に移動するように指示するため、/ dir1/dir2ディレクトリに移動します。そのため、dir3に移動してから上昇します。

cd /..を呼び出すことで、ルートディレクトリ/に移動してから1レベル上に移動するように指示していますが、それはできません。そのため、代わりにルートディレクトリに効率的に移動します。

1
Aaron