Linux符號連結:如何前往指向的目錄?

Linux符號連結:如何前往指向的目錄?

我在自己的目錄中有一個項目:

/目錄/到/項目/

我在桌面上有一個指向該目錄的符號連結:

/home/使用者/桌面/專案/

當我雙擊該連結時,打開的目錄視窗是:

/home/使用者/桌面/專案/

而不是真正的,/dir/to/project

命令列 (Bash) 也會發生同樣的情況。

是否有可能得到我想要的東西,即轉到指向的目錄,而不是符號目錄?

注意:我現在使用的Windows環境是Xfce,但我也對通用答案感興趣。

答案1

在內建用途和bash開關;以同樣的方式理解它們:cd-P-Lpwd

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 cdhelp pwd。請注意,您可能還有一個類似的可執行檔(即不是內建的 shell),/bin/pwd其行為應該類似。在我的 Kubuntu 中,差異在於pwd內建沒有任何選項使用-L,而/bin/pwd預設使用-P

您可以透過(充當) 和(充當)來調整cd內建的預設行為。詳情請參閱。set -Pcdcd -Pset +Pcdcd -Lhelp 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`

在這裡,readlink解析連結名稱,然後傳遞給cdusing代換

如果您已經在Desktop資料夾中,則無需指定絕對路徑,只需project指定即可

cd `readlink project`

如果你經常存取這個資料夾,你可以在 bash 中為其編寫一行函數:

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

相關內容