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


32

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

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

私がする時

cd ~/link
cd ..    

それは私を連れて行く

~

でも行きたい

~/a/really/long

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

私はbashを使用しています。


1
あなたは意味しcd ~/a/really/long/path、その後cd ..に入ります~現時点では?再現できません。
ミケル

1
@Mikel:いいえ、最初にシンボリックリンクを作成してから~/a/really/long/path、そのシンボリックリンクにcdしてからに移動し..ます。〜に戻る必要があります(それがあなたが始めたところだと仮定して)。
Xodarap

編集は正確ですか?以前は質問を理解できませんでした。
ミケル

回答:


38

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

cd -P ..

参照してください。help cdまたはman builtins、bashの組み込みのマニュアルについてcd。ディレクトリトラッキング機能が本当に嫌いな場合はset -P、bash(set -o no_chase_linkzsh)で無効にできます。


1
質問の読み方、OPの設定、-Pまたは-o physical設定済みですか?
ミケル

+1、ただし、manページへのリンクを提案します
ファヒムミタ

@Mikel:いいえ、質問は彼が物理ディレクトリ構造ではなくシンボリックリンクをたどっていると言います。
ファヒムミタ

申し訳ありませんが、実際に投稿を編集しようとしませんでした。提案された編集は現在送信されています。
ファヒムミタ

4

readlinkを使用してこのディレクトリへの物理パスを検索し、1つ上のディレクトリに移動することもできます。

cd $(readlink -f .)/..

3

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.