Ich habe ein Projekt in einem eigenen Verzeichnis:
/dir/to/project/
Ich habe einen symbolischen Link zu diesem Verzeichnis auf dem Desktop:
/home/Benutzer/Desktop/Projekt/
Wenn ich auf diesen Link doppelklicke, wird folgendes Verzeichnisfenster geöffnet:
/home/Benutzer/Desktop/Projekt/
anstelle des echten, /dir/to/project
.
Dasselbe passiert mit der Kommandozeile (Bash).
Ist es möglich, das zu bekommen, was ich möchte, also in das angegebene Verzeichnis zu gehen, statt in das symbolische?
Hinweis: Die Windows-Umgebung, die ich jetzt verwende, ist Xfce, aber ich bin auch an einer allgemeinen Antwort interessiert.
Antwort1
In bash
den cd
integrierten Verwendungen -P
und -L
Schaltern pwd
versteht sie auf die gleiche Weise:
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
Außerdem cd ..
kann es schwierig sein:
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:/$
Siehe help cd
und help pwd
. Beachten Sie, dass Sie möglicherweise auch eine ausführbare Datei haben (also keine integrierte Shell), /bin/pwd
die sich ähnlich verhalten sollte. In meinem Kubuntu besteht der Unterschied darin, dass die pwd
integrierte Datei ohne Option verwendet, -L
während /bin/pwd
standardmäßig verwendet wird -P
.
Sie können das Standardverhalten von cd
Builtin durch set -P
( cd
fungiert als cd -P
) und set +P
( cd
fungiert als cd -L
) anpassen. help set
Weitere Informationen finden Sie unter.
Antwort2
Verwenden Sie readlink
zum Auflösen des Links zu seinem Ziel:
cd $(readlink thelink)
Möglicherweise möchten Sie in Ihrem Bash-Profil eine Funktion definieren:
function cdl { local dir=$(readlink -e $1); [[ -n "$dir" ]] && cd $dir; }
Antwort3
Ich weiß nicht, wie ich das in der GUI erreichen kann, aber es gibt einen Workaround in der Befehlszeile.
Angenommen, Ihr symbolischer Link lautet:
/home/user/Desktop/project/
dann können Sie verwendenLink lesenBefehl zum Auflösen des symbolischen Links oder seines kanonischen Dateinamens. Dann einfach cd
los.
cd `readlink /home/user/Desktop/project`
Hier readlink
wird der Linkname aufgelöst und dann zur cd
Verwendung weitergeleitet.Auswechslung.
Wenn Sie sich bereits im Desktop-Ordner befinden, müssen Sie keinen absoluten Pfad angeben project
.
cd `readlink project`
Wenn Sie diesen Ordner häufig besuchen, können Sie in Bash eine einzeilige Funktion dafür schreiben:
function cdproject
{
cd `readlink home/user/Desktop/project`;
}