任何帮助将不胜感激。
基本上,我想替换:
~]$ obvfake
bash: obvfake: command not found
使用:
~]$ obvfake
[*] command not found
感谢。
答案 0 :(得分:8)
bash
版本4引入了一个用于处理缺失命令的钩子;将以下内容添加到.bashrc
文件中。
command_not_found_handle () {
printf "[*] command not found\n"
return 127
}
答案 1 :(得分:3)
您可以将此内容写入.bashrc
:
function error_handler {
if [ $? -eq 127 ]; then
echo "[*] command not found"
fi
}
trap 'error_handler' ERR
但仍会显示bash: obvfake: command not found
。您可以通过执行以下操作来抑制此操作:
obvfake 2> /dev/null
答案 2 :(得分:0)
我只是将错误重定向到/dev/null
。如果obvfake
返回大于0的退出代码,则它将回显您的自定义错误消息。
obvfake 2>/dev/null || echo "[*] command not found"
这可能有点过于笼统,因为它不会区分错误代码。所以我们可以检查一下特定的退出代码。
obvfake 2>/dev/null || {
if (( $? == 127 )); then
echo "[*] command not found"
fi
}
如果我想检查很多错误代码,我会用if
语句替换case
表达式。
为了便于使用,您可以将该功能集成到脚本中,并将其包装到一个函数中,以便在各种故障点重用它。
您非常希望了解bash
中有关redirection的更多信息。 :)
obvfake
是一个自定义脚本,抱怨在系统上调用但未找到的命令。
答案 3 :(得分:-1)
正如chepner所建议的......您可以通过将bash函数(处理Signal 127或命令未找到的功能)替换为您设计的函数来自定义默认消息,并将该函数包含在.bashrc脚本中。
# function that handles command-not-found message.
command_not_found_handle() {
echo -e "My Friend, '$1' is a typo. Please correct it and re-enter the command."
return 127
}
您也可以在以下位置查看:http://bitdiffferent.com/command-not-found/