Linux シンボリック リンク: 指定されたディレクトリに移動するにはどうすればよいでしょうか?

Linux シンボリック リンク: 指定されたディレクトリに移動するにはどうすればよいでしょうか?

独自のディレクトリにプロジェクトがあります:

/dir/to/project/

デスクトップにそのディレクトリへのシンボリック リンクがあります。

/home/user/Desktop/project/

そのリンクをダブルクリックすると、次のディレクトリ ウィンドウが開きます。

/home/user/Desktop/project/

本物ではなく、/dir/to/project

コマンドライン (Bash) でも同じことが起こります。

私が望むこと、つまりシンボリックディレクトリではなく、指定されたディレクトリに移動することは可能ですか?

注: 現在使用している Windows 環境は Xfce ですが、一般的な回答にも興味があります。

答え1

bash組み込みではcd、uses-P-Lswitchespwdは同じように理解されます。

user@host:~$ ln -s /bin foobar
user@host:~$ cd -L foobar      # follow link
user@host:~/foobar$ pwd -L     # print $PWD
/home/user/foobar
user@host:~/foobar$ pwd -P     # print physical directory
/bin
user@host:~/foobar$ cd -       # return to previous directory
/home/user
user@host:~$ cd -P foobar      # use physical directory structure
user@host:/bin$ pwd -L         # print $PWD
/bin
user@host:/bin$ pwd -P         # print physical directory
/bin

さらにcd ..注意が必要なのは:

user@host:/bin$ cd
user@host:~$ cd -L foobar
user@host:~/foobar$ cd -L ..   # go up, to ~/
user@host:~$ cd -L foobar
user@host:~/foobar$ cd -P ..   # go up, but not to ~/
user@host:/$

help cdおよび を参照してくださいhelp pwd。同様に動作する実行可能ファイル (つまり、シェル組み込みではないファイル) もあることに注意してください/bin/pwd。私の Kubuntu での違いは、pwdオプションなしの組み込みでは が使用され-L/bin/pwdデフォルトでは が使用されることです-P

cd組み込みのデフォルトの動作は、set -P(cdとして動作しますcd -P) とset +P(cdとして動作しますcd -L) によって調整できます。help set詳細については、 を参照してください。

答え2

readlinkリンクをターゲットに解決するために使用します。

cd $(readlink thelink)

bash プロファイルで関数を定義することもできます:

function cdl { local dir=$(readlink -e $1); [[ -n "$dir" ]] && cd $dir; }

答え3

GUI でこれを実現する方法はわかりませんが、コマンド ラインでは回避策があります。

シンボリックリンクが次の通りだとします:

/home/user/Desktop/project/

次に、読むリンク解決されたシンボリック リンクまたはその正規のファイル名を取得するコマンド。その後はcdそれを実行するだけです。

cd `readlink /home/user/Desktop/project`

ここで、readlinklinknameを解決し、次にに渡しますcd代替

すでにデスクトップフォルダにいる場合は、絶対パスを指定する必要はありませんproject

cd `readlink project`

このフォルダに頻繁にアクセスする場合は、bash で 1 行の関数を記述できます。

function cdproject
{
    cd `readlink home/user/Desktop/project`;
}

関連情報