これら2つのコマンドの意味は何ですか?
cd ../
cd /..
最初のコマンドではツリーの2つのディレクトリに、2番目のコマンドではルートディレクトリになります。なぜそれが起こるのですか?
ディレクトリ/フォルダの名前のendにある/
はオプションです。ほとんどの場合、ディレクトリ名の最後のスラッシュを含めたり省略しても、コマンドの効果は変わりません。
したがって、cd ../
はcd ..
と同等です。
startが/
でないパスは相対パスです。 現在のディレクトリに関連して解決されます。
すべてのディレクトリには2つの特別なエントリがあります。
.
というディレクトリエントリ..
というディレクトリエントリしたがって、cd ../
およびcd ..
は、ディレクトリを現在のディレクトリの親に変更します。したがって、/home/fazlan
で開始してcd ..
またはcd ../
を実行すると、/home
になります。
対照的に、/..
は絶対パス(異常ではありますが)です。 /
はファイルシステムのルートです。ディレクトリ階層をずっと上に行くと到達するディレクトリです。 (同じ親と子の比phorを使用すると、/
はファイルシステム内のすべての祖先であると言います。)
..
は「このディレクトリの親ディレクトリ」を意味し、/
は「ファイルシステムの最上部」を意味するため、/..
は「ファイルシステムの最上部の親ディレクトリ」を意味します。
しかし、含む/
というディレクトリについて話すとはどういう意味ですか?さて、/
は例外です。 ディレクトリに含まれていないなので、/
の親はそれ自身であると言います。したがって、/
では、..
は/
です。したがって、/..
は/
と同じです。
cd ../
を使用すると、開始した場所から1つのディレクトリが表示され、cd /..
を使用すると最上部に移動します。これらのことを行うよりエレガントで読みやすい方法は、それぞれcd ..
とcd /
です。
最初は相対パスです。 2番目は絶対パスです。
その引数の..演算子は、1つ上に移動することを意味します。
先頭にない場合のスラッシュは、サブディレクトリ名の分割を意味します。
先頭にあるスラッシュは、「これは絶対パスです。ルートディレクトリから開始してください」という意味です。 ..はこれ以上バックアウトできないため、破棄されます。 (これらの多くがchrootを破ることを許した時代がありました)
単一のドット(。)は、現在のディレクトリを表します。実際、cd .
を実行すると、現在のディレクトリに移動します(何も実行されないように見えます)。/dir1から現在のディレクトリに何かをコピーする場合、次のようにできます。
cp /dir1/somefile.txt .
cd ..
を実行すると、ディレクトリレベルが1つ上がります。 cd ../
も同様です。 twoレベルを上げたい場合、次のように最後にさらに2つのドットを追加します。
cd ../..
ルートディレクトリに戻るには、cd /
を実行できます。今、私が次を実行したとしましょう:
cd /dir1/dir2/dir3/..
(上記で設定したように)..
は1レベル上に移動するように指示するため、/ dir1/dir2ディレクトリに移動します。そのため、dir3に移動してから上昇します。
cd /..
を呼び出すことで、ルートディレクトリ/
に移動してから1レベル上に移動するように指示していますが、それはできません。そのため、代わりにルートディレクトリに効率的に移動します。