Wenn Sie bash verwenden, würde ich Ihnen empfehlen Um eine Funktion wie folgt zu erstellen:
function custom_cd() { custom_command $1; cd $1; }
alias cd='custom_cd'
Hier kann Ihr benutzerdefinierter Befehl alles sein, was bestimmte Befehle ausführen wird zu dem Verzeichnis, das Sie eingeben.
Der später deklarierte Alias stellt sicher, dass die Eingabe von "cd" die Funktion und den Befehl "real cd" aufruft.
bearbeiten: Ein Beispiel für die Notwendigkeit
function custom_cd() {
if [ -z "$1" ];
then
target=~
else
target=$1
fi
target=${target%/}
parent=$(dirname `readlink -f $target`)
grand_parent=`dirname $parent`
script=$grand_parent/`basename $target`.sh
if [ -x $script ];
then
`$script`
fi
cd $1
}
Erläuterung:
Wir schaffen eine Variable, die die Eltern des Verzeichnisses enthält, die Sie eingeben möchten. Dann rufen wir die Eltern der Eltern ab. Dann erstellen wir den Skriptnamen im Großelternverzeichnis.
Dann wird die Ausführbarkeit dieses Dateinamens überprüft, wenn dies der Fall ist, wird das Skript ausgeführt, und schließlich wird der echte CD-Befehl ausgeführt.
Seien Sie vorsichtig, die Funktion vor dem Alias zu definieren, sonst wird es eine unendliche Rekursion verursachen!
Für die Sicherheit verwenden Sie in der Funktion 'eingebaute CD', um sicherzustellen, dass Sie nicht den Alias treffen. Wenn Sie den Befehl "builtin" verwenden, benötigen Sie den Alias nicht. Sie können die Funktion "cd" nennen. –
@Glennjackman wusste nicht über BuiltIn, ich vermutete, dass so etwas existiert, schön! – SirDarius
Das hat super funktioniert. Ich habe etwas in diesem Stil implementiert, das auf C-Shell portiert wurde, aber ich werde auch eine Bash-Version machen. Vielen Dank! – devshans