Ich schreibe oft ccclear
anstelle von clear
.Wie Regex in Bash Aliase zu verwenden
Ist es möglich, Regex in einem Alias zu verwenden? Etwas wie:
alias c\+lear='clear'
Ich schreibe oft ccclear
anstelle von clear
.Wie Regex in Bash Aliase zu verwenden
Ist es möglich, Regex in einem Alias zu verwenden? Etwas wie:
alias c\+lear='clear'
Nr
Aliases einfache Präfix Substitution laufen und sind nicht stark genug, um für viel mehr.
In Bash 4 können Sie jedoch eine Funktion namens command_not_found_handle
verwenden, um in diesem Fall auszulösen und eine Logik Ihrer Wahl auszuführen.
command_not_found_handle() {
if [[ $1 =~ ^c+lear$ ]]; the
clear
else
return 127
fi
}
Wenn Sie wollen dynamisch neue Zuordnungen hinzufügen können:
declare -A common_typos=()
common_typos['^c+lear$']=clear
command_not_found_handle() {
local cmd=$1; shift
for regex in "${!common_typos[@]}"; do
if [[ $cmd =~ $regex ]]; then
"${common_typos[$regex]}" "[email protected]"
return
fi
done
return 127
}
Mit der oben können Sie auch triviale neue Zuordnungen hinzu:
common_typos['^ls+$']=ls
Autsch! Ich hatte hier einen kleinen Fehler, bei dem ich anstelle von Regex Ersatz durchsetzte. Eine korrigierte Version ist jetzt vorhanden. –
ich denke, es ist nicht möglich. –
@AvinashRaj, ... nicht mit einem Alias, nein. Das gewünschte Verhalten kann jedoch auf andere Arten erreicht werden. –
Verwenden Sie eine Tastenkombination für 'clear'. Es ist eine häufig genug Operation. 'Strg + L' sollte mit den Standardeinstellungen funktionieren. – PSkocik