ディレクトリへのシンボリックリンクの使用方法

ディレクトリへのシンボリックリンクの使用方法

シンボリックリンクを試してみると、いくつかの問題が発生します。 1つ目は、シンボリックリンクに関連付けられているディレクトリの代わりにディレクトリへのシンボリックリンクをたどった後に実際の作業ディレクトリを表示する方法です(pwdたとえば、次のような場合)。 2番目は、シンボリックリンクではなく、ファイルシステムの物理ディレクトリに「バックアップ」する方法です。

答え1

あなたが望むものですpwd -P

man pwdCentOS 6から:

   -L, --logical
          use PWD from environment, even if it contains symlinks

   -P, --physical
          avoid all symlinks

または、BSDのpwdマニュアルページで少し役に立つ単語を使用してください。

 -L      Display the logical current working directory.

 -P      Display the physical current working directory (all symbolic
         links resolved).

「バックアップ」が何を意味するのかを100%確信することはできませんが、「ディレクトリを現在のディレクトリの親ディレクトリに変更」を意味すると仮定すると、次のようになります。

cd "$(dirname "$(pwd -P)")"

cd ..これはシンボリックリンクを含まない現在の作業パスと同じです。

あるいは、cd "$(pwd -P)"現在の論理ディレクトリの物理パスに移動し、cd ..必要に応じて使用することもできます。

答え2

man pwd私のUbuntuから:

シェルに独自のバージョンのpwdがある可能性があります。

私は使用しますbash。単純なpwdコマンドはシンボリックリンクのパスを提供しますが、/bin/pwd実際のパスを返します。このcdコマンドはbash組み込みコマンドでもあります。

つまり、これはシェルによって異なります。

編集:thrigのコメント(以下を参照)は、私がこの行の下に書いたものよりも優れた選択肢であるようです。

物理ディレクトリに「バックアップ」するには、cd "$(/bin/pwd)/.."またはcd "$(/bin/pwd)"; cd ..2番目の形式を使用してエイリアスを作成できると思いますcd

alias cd='cd "$(/bin/pwd)"; cd'

同様の方法でbashの組み込みを削除することができますpwd

alias pwd=`/bin/pwd`

関連情報