如何为终端创建自定义的“未找到命令”提示?

Cam*_* R. 5 bash command-not-found

我要让提示,如终端定制的“未找到命令”这一项。我设置了模板:

   ___________________________________________
  / 我看到你正在尝试使用终端...... \
 | 未找到命令: |
 | |
 | xxx |
 | |
  _____ ____________________________________/
        v
       ???
       ? ?
       ???
       ???

我希望将“xxx”替换为不正确的命令。我怎么能做到这一点?

Gil*_*il' 5

当 bash 找不到命令名称时,它会command_not_found_handle使用原始命令及其参数作为参数执行该函数。所以定义你自己的。这进入您的~/.bashrc. 确保打印到标准错误,而不是标准输出,并返回相同的退出状态,否则这可能会破坏在该 bash 实例中执行的 shell 脚本片段。

command_not_found_handle () {
  local cmd
  printf -v cmd "%-40s" "${cmd:0:40}"
  cat >&2 <<EOF
   ___________________________________________
  / I see you're trying to use the terminal … \
 | Command not found:                        |
 |                                           |
 |  $cmd |
 |                                           |
  _____ ____________________________________/
        v
       ???
       ? ?
       ???
       ???

EOF
  return 127
}
Run Code Online (Sandbox Code Playgroud)