Kann ich eine Verknüpfung hinzufügen, um einen Pfad in Linux zu ersetzen?


33

Zum Beispiel gehe ich immer auf diesen Pfad:

/ user / something / somefolders / irgendwo

aber ich will nicht tippen

cd / user / something / somefolders / irgendwo

Kann ich die ganze Zeit im Terminal eine kurze Hand dazu haben? kann ich zum beispiel sowas machen

cd commandPlace

den Weg zu ersetzen?

Antworten:


32

Hierfür können Sie die Umgebungsvariable verwenden CDPATH. Von der Bash-Manpage:

CDPATH

Der Suchpfad für den Befehl cd. Dies ist eine durch Doppelpunkte getrennte Liste von Verzeichnissen, in denen die Shell nach Zielverzeichnissen sucht, die vom Befehl cd angegeben werden. Ein Beispielwert ist ".: ~: / Usr".

In Ihrem Fall können Sie einstellen

export CDPATH=.:/user/something/somefolders

in ~/.bashrc, und geben Sie dann ein cd somewhere, um zu gelangen /user/something/somefolders/somewhere(vorausgesetzt, somewhereim aktuellen Verzeichnis ist kein Verzeichnis vorhanden).

Wenn Sie den Ordner nicht somewheremit seinem tatsächlichen Namen referenzieren möchten , können Sie auch ein verstecktes Verzeichnis erstellen, das einen symbolischen Link zu /user/something/somefolders/somewheredem Namen enthält, den Sie verwenden möchten. Es kann auch Links zu anderen Verzeichnissen enthalten, die Sie häufig besuchen. Stellen Sie dann CDPATHden Pfad zu diesem versteckten Verzeichnis ein. Beachten Sie jedoch, dass Sie mit dieser Methode in das versteckte Verzeichnis gelangen , wenn Sie cd somewhereund dann cd ... Das kann für Sie ein Problem sein oder auch nicht.


41

Zwei Abkürzungen, die ich ständig für solche Dinge benutze:

Aliase

alias somedir = 'cd / home / john / www / irgendwas /'

Dann können Sie eingeben somedir, um in dieses Verzeichnis zu gelangen. Fügen Sie diese zu Ihrem hinzu .bashrc.

Symbolische Links

In -s / long / path / to / some / other / folder / shortcut

Dadurch wird eine Datei erstellt, auf /shortcutdie verlinkt wird /long/path/to/some/other/folder. Dann können Sie /shortcutstattdessen cd eingeben. Die Einschränkung dabei ist, dass es Ihr Stammverzeichnis (oder das Verzeichnis, in das Sie die Links einfügen) ziemlich schnell füllt. Ich bevorzuge Aliase.


Netter John!
Gob00st

Es soll sein, dass ln -s /long/path/to/some/other/folder /shortcutich die Verknüpfung an der Stelle erstellt habe, zu der ich den Link erstellen wollte, als ich es umgekehrt gemacht habe. Ich habe eine Änderung eingereicht, um sie zu aktualisieren.
Elias

1
Wie wäre es mit einem Verzeichnis im Stammverzeichnis mit einem Kurznamen, z. B. /slund dort Verknüpfungen erstellen? (dh ln -s /long/path/to/some/other/folder /sl/shortcut? Keine Unordnung in der Wurzel sowie eine visuelle Erinnerung, dass der Pfad Ihrer Eingabeaufforderung ein Symlink ist.
RolfBly

14

Ich neige dazu, die bash interaktive Suche die ganze Zeit zu verwenden. Versuch es. Rufen Sie es mit Strg + R auf und beginnen Sie, einen Teil Ihres Pfades wie irgendwo einzugeben . Wahrscheinlich wird Ihr CD-Befehl auftauchen. :)


9

Sehen Sie sich den Befehl "alias" an.

In csh:

alias commandplace "cd /user/something/somefolders/somewhere"

In sh:

alias commandplace="cd /user/something/somefolders/somewhere"

Aber ich mag die Symlink-Lösung:

ln -s /user/something/somefolders/somewhere ~/commandplace 

Anmerkung: ln nimmt Argumente in derselben Reihenfolge wie cp entgegen.


9

Sie können den betreffenden Pfad auch in einer Umgebungsvariablen speichern. Fügen Sie diese Zeilen zu Ihrer ~/.profileDatei hinzu:

somedir=/user/something/somefolders/somewhere
export somedir

Sie können dann mit auf das Telefonbuch zugreifen

cd "$somedir"

1
Dies ist bei weitem die beste Lösung, da Sie die Variable für jeden Befehl verwenden können. Wenn Sie einen Alias ​​zuweisen, ist dieser Alias ​​immer an einen Befehl wie cd ... gebunden
BdN3504

Dies ist die Lösung, von der ich gehofft hatte, dass sie existiert und nach der ich gesucht habe. Aus den angegebenen Gründen hat BdN3504.
Inspirednz

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.