'命令未找到'后shell可以运行特定的命令

时间:2017-06-23 08:05:43

标签: bash shell zsh

我想在运行某些无法找到的命令后自动执行预设命令。有没有解决方案?

让我清楚我的问题。设置一个命令,当我在shell中键入一些命令并获得“command not found”结果时,该命令将自动执行。

3 个答案:

答案 0 :(得分:4)

使用zsh,使用函数 command_not_found_handler

command_not_found_handler () {
  echo Oups
}

使用bash,使用函数 command_not_found_handle

command_not_found_handle () {
  echo Oups
}

使用这种机制,Archlinux有一个工具可以为您提供包含丢失命令的包。此工具称为 command_not_found ,可在AUR和Github上使用。其他发行版也存在类似的应用程序。

答案 1 :(得分:1)

只有先前使用逻辑and运算符成功执行才能将命令链接起来的方式相同:

command1 && command2

只有在or失败时才能使用逻辑command2运算符才能运行command1

command1 || command2

然而,这将从command1捕获所有错误状态,而不仅仅是not found条件。

答案 2 :(得分:0)

尝试使用命令来实现目标,

cmd1 2>&1 | grep "command not found" > /dev/null && cmd2

简要说明,

  1. cmd1:您的系统中找不到该命令
  2. cmd2:如果cmd1的错误消息是“找不到命令”,请执行cmd2