我怎样才能在bash中通过正则表达式解析命令然后用预先设置的正确替换它?
让我们说,在将回购网址粘贴到终端之前,我总是忘记键入"git clone".
现在bash将解析输入包含字符串"git"和"@"并以".git"结尾的任何命令,并用之前添加的"git clone"替换整行.
这将使一千个命令变得更容易.任何的想法?
您可以提供一个名为command_not_found_handle哪个进程的函数,以及尚未找到的命令.
command_not_found_handle() {
local cmd_str
# change the argument-list array back to a string
printf -v cmd_str '%q ' "$@"
# process that string:
case $cmd_str in
"git@"*".git") eval "git clone $cmd_str" ;;
*) echo "No alternative for command found" >&2; return 1 ;;
esac
}
Run Code Online (Sandbox Code Playgroud)
使用case语句评估glob样式而不是正则表达式; 你可以允许更灵活的语法通过启用extglob 选项,或使用一堆if [[ $str =~ $pattern ]]测试,而不是case如果你真的,真的不希望正则表达式.