我经常写ccclear
而不是clear
。
是否可以在别名中使用正则表达式?类似的东西:
alias c\+lear='clear'
答案 0 :(得分:6)
没有
别名运行简单的前缀替换,并且对其他许多东西都不够强大。
但是,在Bash 4中,您可以使用名为command_not_found_handle
的函数触发此案例并运行您选择的逻辑。
command_not_found_handle() {
if [[ $1 =~ ^c+lear$ ]]; then
clear
else
return 127
fi
}
如果您正在使用zsh,则必须将该函数调用command_not_found_handler
。
如果您希望能够动态添加新映射:
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]}" "$@"
return
fi
done
return 127
}
通过上述内容,您可以轻松添加新映射:
common_typos['^ls+$']=ls