我在自己的目錄中有一個項目:
/目錄/到/項目/
我在桌面上有一個指向該目錄的符號連結:
/home/使用者/桌面/專案/
當我雙擊該連結時,打開的目錄視窗是:
/home/使用者/桌面/專案/
而不是真正的,/dir/to/project
。
命令列 (Bash) 也會發生同樣的情況。
是否有可能得到我想要的東西,即轉到指向的目錄,而不是符號目錄?
注意:我現在使用的Windows環境是Xfce,但我也對通用答案感興趣。
答案1
在內建用途和bash
開關;以同樣的方式理解它們:cd
-P
-L
pwd
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
。請注意,您可能還有一個類似的可執行檔(即不是內建的 shell),/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`
在這裡,readlink
解析連結名稱,然後傳遞給cd
using代換。
如果您已經在Desktop資料夾中,則無需指定絕對路徑,只需project
指定即可
cd `readlink project`
如果你經常存取這個資料夾,你可以在 bash 中為其編寫一行函數:
function cdproject
{
cd `readlink home/user/Desktop/project`;
}