
Ich gehe oft cd -
dorthin zurück, wo ich war. Wie kann ich das in Bash mehrmals tun? Oder würde zsh oder ein anderes Tool dies unterstützen?
Antwort1
In zsh gibt es eine auto_pushd
Option. Diese Option bewirkt cd
ein Verhalten wie pushd
. Dann können Sie einfach verwenden, popd
um zu vorherigen Verzeichnissen zurückzukehren.
~ $ setopt auto_pushd
~ $ cd /
/ $ cd /var
/var $ cd /usr
/usr $ dirs
/usr /var / ~
/usr $ popd
/var $ popd
/ $ popd
~ $
In Bash können Sie einen Alias cd
für verwenden pushd
.
alias cd=pushd
Der einzige Nachteil dabei ist, dass Sie cd
die drei Flags verlieren. Aus dem cd
Hilfeeintrag:
-L erzwingt das Folgen symbolischer Links.
-P verwendet die physische Verzeichnisstruktur, ohne symbolischen Links zu folgen.
-e Wenn die Option -P angegeben ist und das aktuelle Arbeitsverzeichnis nicht erfolgreich ermittelt werden kann, beendet man das Programm mit einem Status ungleich Null.
cd
Wenn Sie jemals das tatsächliche integrierte Element anstelle des Alias verwenden müssen , können Sie eines der folgenden verwenden:
'cd'
- Das Zitieren des Befehls führt dazu, dass die Shell den Alias nicht auflöst und die normale CD verwendet.\cd
- Backslashs setzen Buchstaben in Anführungszeichen. Wenn Sie einen Buchstaben eines Wortes in Anführungszeichen setzen, behandelt die Shell das ganze Wort als Anführungszeichen.builtin cd
– Dies weist die Shell direkt an, das integrierte Element anstelle des Alias zu verwenden.
Antwort2
Hier ist eine schnelle und einfache Möglichkeit, Verzeichnisse bequem mit Lesezeichen zu versehen und zu ihnen zurückzuspringen:
$ a() { alias $1="cd $PWD"; }
Gehen Sie irgendwo hin und geben Sie ein:
$ a 1
Sie haben jetzt einen Befehl, der das aktuell aktuelle Verzeichnis 1
ausführt . Geben Sie später einfach Folgendes ein:cd
$ 1
Und presto, zurück in dieses Verzeichnis. Ich finde das sehr nützlich.
Antwort3
Schlag
Ich habe ein Skript gefunden, verfügbarHier, das hat dieses Problem für mich gelöst. Damit können Sie cd --
die letzten 10 Verzeichnisse anzeigen, die Sie verwendet haben. Es sieht ungefähr so aus:
0 ~/Documents/onedir
1 ~/Music/anotherdir
2 ~/Music/thirddir
3 ~/etc/etc
Um zu gelangen, geben Sie ~/Music/thirddir
einfach eincd -2
zsh
oh-my-zsh bietet hierfür einige wirklich nette Funktionen (zumindest glaube ich, dass es oh-my-zsh ist, das dies festlegt).
Im Grunde d
ist es ein Alias fürdirs -v | head -10
dirs
ist ein in zsh integrierter Befehl und zeigt die letzten Verzeichnisse an, in denen Sie waren.
Außerdem 1
wird cd -1
für alle Nummern ein Alias zu verwendet und so weiter 9
.
In der Praxis funktioniert es so:
$ pwd
/home/me/Documents/gems/java_regex/lib
$ d
0 ~/Documents/gems/java_regex/lib
1 ~/Documents/gems/java_regex
2 ~/Documents/gems
3 ~/Documents
4 ~
$ 2
~/Documents/gems
$ pwd
/home/me/Documents/gems
Antwort4
Ja. Wir können Ihren cd
Befehl leistungsfähiger machen. Mit dem Bash-Profil können wir ihn nach Wunsch anpassen.
Anstatt mehrere Schritte zu unternehmen, cd
um im Verzeichnis nach oben zu navigieren, können wir verwendenalias
Zum Beispiel :
alias ..5="cd ../../../../.."
Dadurch gelangen Sie fünf Verzeichnisse höher in der Ebene.