シンボリックリンク(../)を使用して親ディレクトリを変更します。

シンボリックリンク(../)を使用して親ディレクトリを変更します。

シンボリックリンクがあります

~/link -> ~/a/really/long/path

私がするとき

cd ~/link
cd ..    

私はそこまで連れて行きます。

~

しかし、私は行きたいです。

~/a/really/long

これを行う方法はありますか?

バッシュを使っています。

答え1

Bash(およびksh、zsh、ash)はディレクトリの変更を追跡し、常にシンボリックリンクにもcd /foo/bar && cd ..戻ることができます。追跡された変更を無視し、「物理」ディレクトリ構造に従うオプションを渡します。/foobar-Pcd

cd -P ..

bash 組み込みコマンドのドキュメントをhelp cd参照してください。ディレクトリトレースが本当に気に入らない場合は、bash(zsh)でそれをオフにできます。man builtinscdset -Pset -o no_chase_link

答え2

readlink を使用してディレクトリの実際のパスを見つけて、以前のディレクトリに移動することもできます。

cd $(readlink -f .)/..

答え3

使用できるアプローチの1つは、シンボリックリンクの代わりにエイリアスを使用して〜/ a / really / long / pathに移動することです。これが私の使用方法であり、それからcdシンボリックリンクの代わりに単純な1/2 /et cetera文字コマンドを入力できます。

関連情報