Symbolische Links unter Linux: Wie gelangt man zum angegebenen Verzeichnis?

Symbolische Links unter Linux: Wie gelangt man zum angegebenen Verzeichnis?

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 bashden cdintegrierten Verwendungen -Pund -LSchaltern pwdversteht 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 cdund help pwd. Beachten Sie, dass Sie möglicherweise auch eine ausführbare Datei haben (also keine integrierte Shell), /bin/pwddie sich ähnlich verhalten sollte. In meinem Kubuntu besteht der Unterschied darin, dass die pwdintegrierte Datei ohne Option verwendet, -Lwährend /bin/pwdstandardmäßig verwendet wird -P.

Sie können das Standardverhalten von cdBuiltin durch set -P( cdfungiert als cd -P) und set +P( cdfungiert als cd -L) anpassen. help setWeitere Informationen finden Sie unter.

Antwort2

Verwenden Sie readlinkzum 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 cdlos.

cd `readlink /home/user/Desktop/project`

Hier readlinkwird der Linkname aufgelöst und dann zur cdVerwendung 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`;
}

verwandte Informationen