![Linux シンボリック リンク: 指定されたディレクトリに移動するにはどうすればよいでしょうか?](https://rvso.com/image/1558038/Linux%20%E3%82%B7%E3%83%B3%E3%83%9C%E3%83%AA%E3%83%83%E3%82%AF%20%E3%83%AA%E3%83%B3%E3%82%AF%3A%20%E6%8C%87%E5%AE%9A%E3%81%95%E3%82%8C%E3%81%9F%E3%83%87%E3%82%A3%E3%83%AC%E3%82%AF%E3%83%88%E3%83%AA%E3%81%AB%E7%A7%BB%E5%8B%95%E3%81%99%E3%82%8B%E3%81%AB%E3%81%AF%E3%81%A9%E3%81%86%E3%81%99%E3%82%8C%E3%81%B0%E3%82%88%E3%81%84%E3%81%A7%E3%81%97%E3%82%87%E3%81%86%E3%81%8B%3F.png)
独自のディレクトリにプロジェクトがあります:
/dir/to/project/
デスクトップにそのディレクトリへのシンボリック リンクがあります。
/home/user/Desktop/project/
そのリンクをダブルクリックすると、次のディレクトリ ウィンドウが開きます。
/home/user/Desktop/project/
本物ではなく、/dir/to/project
。
コマンドライン (Bash) でも同じことが起こります。
私が望むこと、つまりシンボリックディレクトリではなく、指定されたディレクトリに移動することは可能ですか?
注: 現在使用している Windows 環境は Xfce ですが、一般的な回答にも興味があります。
答え1
bash
組み込みではcd
、uses-P
と-L
switchespwd
は同じように理解されます。
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`
ここで、readlink
linknameを解決し、次にに渡しますcd
。代替。
すでにデスクトップフォルダにいる場合は、絶対パスを指定する必要はありませんproject
。
cd `readlink project`
このフォルダに頻繁にアクセスする場合は、bash で 1 行の関数を記述できます。
function cdproject
{
cd `readlink home/user/Desktop/project`;
}