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

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

我想为终端制作一个自定义的“命令未找到”提示,例如这个。我已经设置了模板:

   ___________________________________________
  / 我看到你正在尝试使用终端... \
 |未找到命令: |
 | |
 | xxx |
 | |
  _____ ____________________________________/
        v
       ╭─╮
       ⌾ ⌾
       │▕│
       ╰─╯

我希望“xxx”被错误的命令替换。我怎样才能做到这一点?

答案1

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

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

EOF
  return 127
}

相关内容