Gibt es eine Möglichkeit, in Bash mehrmals per CD zurück zu wechseln?

Gibt es eine Möglichkeit, in Bash mehrmals per CD zurück zu wechseln?

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_pushdOption. Diese Option bewirkt cdein Verhalten wie pushd. Dann können Sie einfach verwenden, popdum 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 cddie drei Flags verlieren. Aus dem cdHilfeeintrag:

-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.

cdWenn 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 1ausfü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/thirddireinfach 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 dist es ein Alias ​​fürdirs -v | head -10

dirsist ein in zsh integrierter Befehl und zeigt die letzten Verzeichnisse an, in denen Sie waren.

Außerdem 1wird cd -1fü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 cdBefehl leistungsfähiger machen. Mit dem Bash-Profil können wir ihn nach Wunsch anpassen.

Anstatt mehrere Schritte zu unternehmen, cdum 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.

verwandte Informationen