Ich versuche, etwas auf einem von mir ausgeführten Server einzurichten. Immer wenn ich mich cd
in public_html
95% der Fälle in einem Ordner befinde, gibt es einige Befehle, die ich immer ausführen werde, um bestimmte Dinge zu überprüfen.
Gibt es überhaupt eine Möglichkeit, in die ich mich einbinden kann? cd
Wenn das Verzeichnis a ist public_html
, werden die Befehle automatisch für mich ausgeführt?
Wenn ich mich nicht an den cd
Befehl anschließen kann, gibt es noch andere Dinge, die ich tun könnte, um das gewünschte Ergebnis zu erzielen?
Ich verwende CentOS 5.8.
bash
shell
cd-command
TMH
quelle
quelle
echo "Testing..."
Ausgabe direkt über der if-, aber nothings-Ausgabe hinzugefügt. Muss ich etwas tun, um diese Änderungen anzuwenden?. ~/.bash_profile
/bin/cd
in meinem CentOS gibt, also wird diese Lösung möglicherweise nicht funktionierencd -P public_html
odercd ~/public_html
oder unerwartetes Verhalten haben, wenn Sie nichtcd
in könnenpublic_html
.Mit
ksh
oderbash
(oderzsh
):Mit
zsh
:(
chpwd
Ist eine Haken - Funktion , die aufgerufen wird , wenn das aktuelle Arbeitsverzeichnis ändert (haftcd
,pushd
,popd
...)).quelle
Wrapping
cd
, ein vorhandener Befehl, wird nicht empfohlen.Eine universellere Lösung wäre das Definieren eines benutzerdefinierten
chpwd
Hooks in Bash. (Laut Tags dieser Frage gehe ich davon aus, dass Sie Bash verwenden.)Im Vergleich zu anderen modernen Schalen gibt es in Bash kein komplettes Hakensystem.
PROMPT_COMMAND
Die Variable wird als Hook-Funktion verwendet, die demprecmd
Hook in ZSHfish_prompt
in Fish entspricht. Derzeit ist ZSH die einzige mir bekannte Shell, in die einchpwd
Haken eingebaut ist.chpwd
Haken Sie Bash einEs wird ein Trick bereitgestellt, um einen
chpwd
äquivalenten Hook in Bash basierend auf einzurichtenPROMPT_COMMAND
.Da wir Erfassung
PWD
direkt ändern, funktioniert die Lösung mitcd
,pushd
undpopd
.Hinweis : Der Hauptunterschied zwischen unserer
chpwd
Implementierung in Bash und derchpwd
in ZSH besteht darin, dassPROMPT_COMMAND
sie in einer nicht interaktiven Bash-Shell nicht unterstützt wird.Verwendungszweck
Quelle: Erstellen Sie chpwd Equivalent Hook in Bash aus meinem Kern.
Für alle, die eine Antwort für ZSH wollen. Verwenden Sie den
chpwd
Haken in ZSH. Funktion nicht direkt definierenchpwd()
. Mehr Details hier .quelle
Ich bin kein Bash-Experte, aber ich würde die Antwort von @ UVV nehmen und sie nur ein wenig ändern, damit dies geschieht:
public_html
, würde ich einfach nach einerhook-script
Datei im Zielverzeichnis suchen$1
, sagen wircd_hook.sh
.hook-script
vorhanden ist, führen Sie es aus und fahren Sie mit dem fortcd
Dies scheint allgemeiner zu sein, da Sie den
cd
-hook dann auf jedes Verzeichnis anwenden können, wenn Sie dies wünschen, indem Sie einfach eincd_hook.sh
in dieses Verzeichnis einfügen .quelle
cd
irgendwo bin , suche nach einer.bashcd
Datei und führe sie aus, falls sie existiert.Verwenden des leistungsstarken zsh-Ansatzes in bash:
Zunächst eine einfache Möglichkeit, Bash zu verlängern:
~ / .runscripts
In .bashrc aufnehmen:
Sie können ~ / .bashrc.d / cdhook erstellen mit:
Jetzt liegt es an Ihnen, die Funktion zu ersetzen:
quelle