Linux cd .. Befehl

9

Sagen Sie, wenn ich das oft tun muss:

cd ../../../../foo/sub1/bar/dest/
cd ../../../../foo2/sub1/bar/dest/
cd ../../../../foo3/sub1/bar/dest/
cd ../../../../foo/sub1/bar/dest/

Gibt es eine schnellere Möglichkeit, nicht immer ../../../../so oft zu tippen ? Irgendwelche kreativen Ideen?

Stan
quelle
2
warum nicht einfach ausführen cd ../../../..und damit fertig sein?
Red Cricket
8
Sie können genießen pushdund popdoder sogar cd -.
Jscott
1
Wenn Sie so weit zurückgehen, ist es möglicherweise sinnvoll, nur cd / actual / path / you / want zu verwenden, je nachdem, wie tief die Ordner sind.
Drew Khoury
Dies ist viel mehr Aufwand als es wert ist. Wenn Sie zwischen Verzeichnissen wechseln, ist die vollständige Pfadangabe oder die Verwendung cd -( zum letzten Verzeichnis ) einfacher. Ich normalerweise, alias h="history|grep"damit ich stattdessen die Verknüpfungen für den Verlaufseintrag verwenden kann. So etwas wie h foo3, gefolgt von !450diesem Befehl zu wiederholen.
ewwhite
Öffnen Sie ein anderes Terminalfenster und geben Sie cd ../../../ .. überhaupt nicht ein
Matt

Antworten:

18

Die klassische Methode hierfür ist das Festlegen der CDPATHVariablen. In Ihrem Fall könnte es auf .:../../../../oder eingestellt werden .:/path/to/the/parent/of/foo, um den gewünschten Effekt zu erzielen. Sie können dann einfach tun cd foo/sub1/bar/destund dorthin gelangen, wo Sie möchten.

Dies hat den Vorteil, dass die Tab-Vervollständigung cdauch $CDPATHmagisch aussieht und funktioniert.

Dennis Kaarsemaker
quelle
9

Sie können Autojump verwenden, das automatisch aus dem vorherigen CD-Befehl lernt, und Sie müssen beim nächsten Mal nur eine eindeutige Zeichenfolge aus dem vollständigen Pfad angeben. Ex. j foo, j foo1, j foo2

pragnesh
quelle
7

Sie können Verknüpfungen für diese Befehle erstellen, indem Sie der Bash-Konfigurationsdatei Aliase hinzufügen (~ / .bashrc oder /etc/bash.bashrc).

alias cdd="cd ../../../../"

Wenn Sie cdddann eingeben, wird dieser Befehl ausgeführt.

Jason
quelle
3
Ja, oder function cdd () { cd ../../../../$1/bar/dest ; }, so können Sie nur geben Sie zB cdd foo, cdd foo2.
Andrew Schulman
0

Ich bin kürzlich auf https://github.com/rupa/z gestoßen , mit dem Sie per Regex zu einem kürzlich verwendeten Verzeichnis springen können. Sie könnten also so etwas tun wie:

z foo3.*dest

anstatt:

cd ../../../../foo3/sub1/bar/dest/

(Solange Sie dieses Verzeichnis bereits besucht haben und nichts neueres / häufig verwendetes mit diesem regulären Ausdruck übereinstimmt)

rjmunro
quelle