Ich arbeite viel in Magento und auch viele Leute, mit denen ich arbeite, und es wird ärgerlich, Folgendes eingeben zu müssen:
cd ../../../../../../
Um nur zu finden, dass Sie noch ein paar Verzeichnisse in Ihrem Stammordner "httpdocs" haben, versuche ich, ein Skript zu erstellen, das diesem Pseudocode folgt:
while lowest level directory != httpdocs
cd ../
end while;
Scheint ziemlich einfach zu sein, ich nehme an, ich müsste in irgendeiner Form prüfen, ob der letzte Teil des aktuellen Arbeitsverzeichnisses httpdocs ist, wenn nicht einfach so lange, bis es wahr ist.
Ich habe versucht, Bash dafür zu lernen, obwohl es den Anschein hat, dass es da draußen schon etwas gibt, das ähnlich ist, und die Syntax verwirrt mich bis zum Äußersten.
quelle
cd -
Schritt später zu tun, um dorthin zurückzukehren, wo Sie waren.Ich habe eine Funktion, die
upto
in meinem .bashrc aufgerufen wird und es Ihnen ermöglicht, mit Namen in ein beliebiges Verzeichnis auf dem aktuellen Pfad zu gelangen:Ich habe auch Abschluss für diese Funktion, so dass es mir gültige Verzeichnisnamen und Abschluss gibt, wenn ich die Tabulatortaste drücke:
Zusätzlich habe ich eine weitere Funktion
jd
, mit der ich in ein beliebiges Verzeichnis unterhalb des aktuellen Verzeichnisses springen kann:Beispiel:
quelle
upto httpdocs
.jd
scheint nicht in jedem Fall zu funktionieren. Würde es Ihnen etwas ausmachen zu erklären, wie es funktioniert?**
). Um diese Funktion in Ihrer Bash-Shell zu aktivieren, verwenden Sieshopt -s globstar
.jd
Funktion aufgenommen, siehe gist.github.com/Rob--W/5888648 . Ich habe es nur mit Bash 4.2.45 getestet, also YMMV.Die einfachste Bash-Funktion, die Sie in Ihre einfügen können,
.bashrc
die mir einfällt (einfach, weil sie keine Schleifen oder externen Prozesse verwendet), ist:Dies verwendet die Pattern Substitution Parameter Expansion alles zu ersetzen , nachdem
/httpdocs/
in$PWD
mit `/ httpdocs'. Es sieht sehr chaotisch aus, da wir die Schrägstriche im Pfad umgehen müssen, um sie von den Schrägstrichen in der Bash-Erweiterungssyntax zu unterscheiden. Vermeiden Sie außerdem Schrägstriche in der Ersetzungszeichenfolge, sodass diese ebenfalls inkonsistent aussieht.Wenn
/httpdocs/
der aktuelle Pfad keine enthält, werden keine Ersetzungen durchgeführt, und es wird nur in das aktuelle Verzeichnis gewechselt.Zum Beispiel ersetzt die Substitution
/a/b/c/httpdocs/e/f/g
mit/a/b/c/httpdocs
undcd
in dieses Verzeichnis.Die Funktion muss sich in Ihrer aktuellen Shell-Umgebung befinden (entweder als Funktion oder als Alias), da ein untergeordneter Prozess das aktuelle Verzeichnis seines übergeordneten Prozesses nicht ändern kann. Aus diesem Grund sage ich, dass Sie es in Ihr
.bashrc
und nicht in ein Shell-Skript einfügen sollen.quelle
Sie könnten auch so etwas in Ihr Profil aufnehmen:
Durch einfaches Eingeben
cdh
gelangen Sie zum oberstenhttpdocs
Verzeichnis in Ihrem aktuellen Pfad.quelle
Es wird Ihr Problem nicht vollständig lösen, aber es wird
cd ../../../../../../
ein wenig Zeit sparen . Ich habe dies von dem Beitrag des Benutzers unknown hier ausgeliehen .bis N
N Verzeichnisse im Verzeichnisbaum nach oben springen
Anstatt zu tippen
du tippst einfach
und ein
bringt dich zurück
Fügen Sie die Funktion in Ihr .bashrc ein, um sie zu verwenden.
quelle