假设我在bash中键入saklfjsklj,我得到:
bash: saklfjsklj: command not found
有没有办法拦截并执行脚本?
答案 0 :(得分:5)
bash有一个command_not_found_handle
回调:http://www.gnu.org/software/bash/manual/bashref.html#Command-Search-and-Execution
this answer on askubuntu.com有关于弄乱默认情况的信息。
答案 1 :(得分:2)
定义名为command_not_found_handle
的函数。命令和参数将作为参数传递给函数。
$ command_not_found_handle() { echo "$@"'!'; }
$ zounds
zounds!
答案 2 :(得分:1)
来自bash手册页,
*如果搜索不成功,shell将搜索名为command_not_found_handle的已定义shell函数。如果该函数存在,则使用原始命令和原始命令的参数作为其参数调用它,函数的退出状态将成为shell的退出状态。如果未定义该函数,则shell将输出错误消息并返回退出状态127。*
我也发现了这篇关于这个主题的文章,