Wie gehe ich n Ebenen von Verzeichnissen über die Befehlszeile zurück?

7

Zum Beispiel mache ich die folgenden cds nacheinander-

cd /tmp
cd /home/admin
cd /root/
cd /some_other/directory

Jetzt bin ich in /some_other/directory. Gibt es überhaupt einen Weg /tmp, über die Befehlszeile zu dem Verzeichnis zurückzukehren, in dem ich angefangen habe? Genau wie wir in Verzeichnissen mit der Zurück-Schaltfläche in der GUI navigieren?

cd - bringt mich nur eine Ebene zurück.

Pavan Manjunath
quelle

Antworten:

6

Dies ist Shell-spezifisch. In einer reinen POSIX-Shell können Sie nicht ohne erneute Eingabe von cd / tmp. In csh, tcsh, bash oder zsh können Sie pushdstatt cdVerzeichnisse ändern und dann popd +1in das erste Verzeichnis cd, das Sie auf den Stapel verschoben haben.

Jordanm
quelle
4

Lesen Sie diesen Artikel von LinuxGazette über das Hinzufügen eines Verlaufs cdmit ein paar einfachen Skripten. Es ist ziemlich brauchbar.

Wenn Sie Lust haben möchten, gibt es ein Programm namens autojump(Homepage hier ), das den Verlauf der besuchten Verzeichnisse speichert, Verknüpfungen bereitstellt und im Allgemeinen "intelligent" unterstützt cd.

Autojump ist eine schnellere Möglichkeit, in Ihrem Dateisystem zu navigieren. Es funktioniert, indem eine Datenbank der Verzeichnisse verwaltet wird, die Sie am häufigsten über die Befehlszeile verwenden. Der Befehl jumpstat zeigt Ihnen den aktuellen Inhalt der Datenbank. Sie müssen ein wenig arbeiten, bevor die Datenbank verwendet werden kann. Sobald Ihre Datenbank einigermaßen vollständig ist, können Sie zu einem allgemein "cd" -verzeichneten Verzeichnis "springen", indem Sie Folgendes eingeben:j dirspec

Januar
quelle
1

Ich habe nach dem gleichen Problem gesucht und bin auf die folgende Problemumgehung / Verknüpfung zum Ändern von n Verzeichnissen gestoßen.

Fügen Sie dem bash_profile einfach Folgendes hinzu, wenn Sie eine bash-Shell verwenden. Für andere Shell's verwenden Sie es entsprechend ihrer Syntax.

    alias ..="cd .."
    alias ..2="cd ../.."
    alias ..3="cd ../../.."
    alias ..4="cd ../../../.."
    alias ..5="cd ../../../../.."

    # cd /tmp/very/long/directory/structure/that/is/too/deep
    #..4
    [Note: use ..4 to go up 4 directory level]
    # pwd
    /tmp/very/long/directory/structure/

Sie können auch nur Punkte anstelle von Punkten gefolgt von einer Zahl verwenden. Eine ausführliche Beschreibung finden Sie unter dem folgenden Link.

Quelle: http://www.thegeekstuff.com/2008/10/6-awesome-linux-cd-command-hacks-productivity-tip3-for-geeks/

MVSR
quelle
Das haben sie aber nicht gefragt ... Sie können es auch mit einem Unterprogramm einfacher machen: back () { for i in `seq 0 $1`; do cd ../; done }und dann back 3zum Beispiel aufrufen . Aber der Fragesteller wollte wissen, wie man mehrere Schritte in der CD-Geschichte zurücktritt.
Matt Fletcher
Vielen Dank für das Heads-up. Ich dachte, dies ist eine Möglichkeit, vom aktuellen Verzeichnis zu seinem Ausgangspunkt zu springen, wenn er sich daran erinnert, wie viele Verzeichnisse er passiert hat. Ihr Unterprogrammaufruf ist nett, es ist viel einfacher zu definieren und zu verwenden.
MVSR