独自のディレクトリにプロジェクトがあります。
/ dir/to/project /
デスクトップ上のそのディレクトリへのシンボリックリンクがあります。
/ home/user/Desktop/project /
そのリンクをダブルクリックすると、開くディレクトリウィンドウは次のようになります。
/ home/user/Desktop/project /
本物の代わりに、/dir/to/project
。
同じことがコマンドライン(Bash)でも起こります。
シンボリックなディレクトリの代わりに、私が望むものを取得すること、つまり、ポイントされたディレクトリに移動することは可能ですか?
注:現在使用しているWindows環境はXfceですが、一般的な答えにも興味があります。
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
を参照してください。同様に動作する/bin/pwd
のような実行可能ファイル(つまり、シェルが組み込まれていない)もある可能性があることに注意してください。私のKubuntuでの違いは、オプションなしのpwd
ビルトインは-L
を使用し、/bin/pwd
はデフォルトで-P
を使用することです。
組み込みのcd
のデフォルトの動作は、set -P
(cd
はcd -P
として機能します)とset +P
(cd
はcd -L
)。詳細については、help set
を参照してください。
ターゲットへのリンクを解決するには、readlink
を使用します。
cd $(readlink thelink)
Bashプロファイルで関数を定義することができます:
function cdl { local dir=$(readlink -e $1); [[ -n "$dir" ]] && cd $dir; }
GUIでそれを実現する方法はわかりませんが、コマンドラインで回避策があります。
あなたのシンボリックリンクは:
/home/user/Desktop/project/
次に、readlinkコマンドを使用して、解決されたシンボリックリンクまたは正規のファイル名を取得できます。次に、それにcd
します。
cd `readlink /home/user/Desktop/project`
ここで、readlink
はリンク名を解決し、次に substitution を使用してcd
に渡します。
すでにデスクトップフォルダにいる場合は、絶対パスを指定する必要はありません。project
だけで十分です。
cd `readlink project`
このフォルダーに頻繁にアクセスする場合は、bashで1行の関数を記述できます。
function cdproject
{
cd `readlink home/user/Desktop/project`;
}