有没有办法捕获用户命令bash找不到并用它做一些事情?

时间:2012-03-27 18:37:29

标签: bash shell scripting

假设我在bash中键入saklfjsklj,我得到:

bash: saklfjsklj: command not found

有没有办法拦截并执行脚本?

3 个答案:

答案 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。*

我也发现了这篇关于这个主题的文章,

http://www.linuxjournal.com/content/bash-command-not-found