Ich habe es mit Java-Projekten zu tun, die häufig zu tief verschachtelten Ordnern führen (/ path / to / project / com / java / lang / whatever usw.) und manchmal in der Lage sein möchten, beispielsweise 4 Verzeichnisebenen nach oben zu springen. Die Eingabe von cd ../../../ .. ist ein Schmerz, und ich möchte keinen Symlink erstellen. Gibt es ein Flag für cd, mit dem Sie mehrere Verzeichnisebenen hochgehen können (in meinem Kopf wäre es so etwas wie cd -u 4)? Leider kann ich keine Manpage für CD finden, sondern nur die nutzlose "builtins" -Seite.
linux
command-line
Tossrock
quelle
quelle
cd ...
wo die Nummer von '.' wäre die Anzahl der Ebenen zu steigen. Würde dies einen Konflikt verursachen, den ich nicht kenne?zsh
undOh My Zsh
das ist eine bessere Alternative zubash
und dann können Sie einfachcd ...
(mehrere Punkte) tun, wie es sein sollteAntworten:
Oder ... versuchen Sie Folgendes: (yay Google)
Siehe Hack # 2
quelle
..
,...
und....
da sie schneller zu geben, aber das Prinzip der Aliase ist das gleiche natürlich.cd ...
,cd ....
etc. Es war sehr praktisch.Eine einfache Funktion, auch mit einem Alias:
(Sie können dies in definieren,
~/.bashrc
wenn Sie es in jedem Fall möchten).Es ist einfach zu bedienen:
quelle
eval $(printf "cd ..;%.s" $(seq $1))
diecd
mehrfach, da~-
aka$OLDPWD
auf das Arbeitsverzeichnis vor dem Aufruf und nicht auf ein Zwischenverzeichnis festgelegt ist. PS - es vereinfacht sich,cd $(printf %.s../ $(seq "$1"))
wenn Sie wollen.Eine einfache Low-Tech-Lösung, die kein Setup benötigt. Funktioniert jedoch nur in Shells mit
bash
-style-Befehlsbearbeitung.cd ..
quelle
Es stellt sich heraus, dass die richtige Antwort 'cd + n' lautet, wobei n die Anzahl der Stufen ist, die Sie erreichen möchten. Schade, dass das nirgendwo dokumentiert ist!
quelle
dirs
, der [+ n] als Argument verwendet und das n-te eindeutige Verzeichnis ausgibt, das über hinzugefügt wurdepushd
. Wenn Siealias
cd
aufpushd
, dann können Sie diese verwenden. Beachten Sie jedoch, dass dies technisch gesehen keine Antwort auf die Frage des OP ist, da dies mit eindeutigen Verzeichnissen zu tun hat, was bedeutet, dass die Reihenfolge mit der Zeit durcheinander gerät, wenn Sie zu denselben Verzeichnissen zurückkehren.pushd
undpopd
nimm auch eine [+ n] Option, weshalb das funktionieren kann. Auch wenn es unvollkommen und indirekt ist, kann dies als Antwort auf die Frage verwendet werden. Häufig haben Sie in letzter Zeit die Verzeichnisse über Ihnen besucht, sodass sie sich in den letzten 10 vom Verzeichnisstapel gespeicherten Verzeichnissen befinden.Sie könnten eine Funktion schreiben (es muss eine Funktion sein, da Sie den Status Ihrer Shell selbst ändern möchten, nämlich das Arbeitsverzeichnis; ein externer Befehl würde nur ihren eigenen Prozess beeinflussen).
Hier ist eine Funktion , die eine Anzahl von Ebenen als Argument (default 1) in der übergebenen steigen wird physische Verzeichnisstruktur (so, wie
cd -P ..
, n - mal):Benutze es so:
quelle
up 4
gleichbedeutend mit dercd /some/dir/
Annahme$PWD = "/some/dir/that/is/deeply/nested/"
?Nicht genau das, wonach du fragst, aber du solltest nachsehen
pushd
undpopd
. Ich finde sie für die Ordnernavigation viel nützlicher als einigecd...
AliasnamenWenn Sie von ein paar festgelegten Bereichen aus hin und her gehen, ist es üblich, Aliase zu haben.
quelle
Anstelle von Aliasen können Sie auch die folgende Bash-Funktion verwenden:
(oder als eint liner:
function mcd() { up=""; for ((i=1; i<=$1;i++)); do up="${up}../"; done; cd $up; }
)Wenn Sie dies zu Ihrer
~/.bashrc
Datei hinzufügen, wird es in Ihrem Terminal verfügbar. Wenn Sie../../../../../../
vor dem Aufruf einen String erstellen, können Siecd
auchcd -
zum Startverzeichnis zurückkehren.Eine hilfreichere Implementierung könnte auch einige Benutzereingabeprüfungen enthalten:
quelle
Kennen Sie sich mit Autojump aus ? Es ist ein Hack von Drittanbietern, kann aber in Ihrem Szenario nützlich sein.
quelle
Probieren Sie den selten verwendeten Umgebungsparameter aus
CDPATH
. Dann müssen Sie den Pegel möglicherweise nicht explizit einstellen.Beispiel:
Wenn Sie an mehreren Projekten arbeiten, können Sie die CDPATH-Einstellung in eine projektspezifische Umgebungsdatei umwandeln. Und lösen Sie es mit einer Unterlegscheibe für zusätzliche Automatisierung aus.
Ich benutze oft pushd und popd. Ich verwende CDPATH eher, um mich zwischen Projektbäumen hin- und herhüpfen zu lassen, als in einem Projekt Subdir zu lassen - aber im Moment arbeite ich an vielen kleinen Projekten, nicht an einigen großen Projekten. :)
quelle
Wenn Sie sich zuvor im Zielverzeichnis befunden haben:
quelle
Schauen Sie sich DirB an . Es ist ein BASH-Skript, mit dem Sie Lesezeichen wie folgt erstellen können:
BETRIEB
Sehr einfach, sehr effektiv.
quelle
Einen Schritt weiter von @ Grigorys Antwort entfernt:
Das ist :
quelle
Ich hatte genau dasselbe Problem satt und habe daraufhin CD-Plus geschrieben . Ein einzelnes Datei-CLI-Dienstprogramm, mit dem Sie mehrere Verzeichnisse aufzeichnen können.
Verwendung
quelle
Hinzufügen der folgenden Code zu Ihrem
.bashrc
wird erweiterncd
‚s Abschluss zu Ehren drei PluspunktnotationSobald dieses Snippet in Ihrer Bash-Shell ausgeführt wird, vervollständigen Sie durch Tippen
cd .../
und Schlagen<TAB>
den Pfad zu../../
und listen die relativen Pfade aller Verzeichnisse auf, die z. B. zwei Ebenen höher sind.Update :
bash-completion
muss installiert sein, um auf die_cd
im obigen Code angegebene Methode zugreifen zu können . Es kann über die meisten Kommandozeilen-Paketmanager installiert werdenquelle