当bash
运行某些不存在的命令时,会出现相应的错误消息:
$ non-existent-command
non-existent-command: command not found
是否可以定制此行为?
我想实现以下功能。当输入的命令匹配时,例如模式s\d\d\d
,应该进行特殊处理:
s
应该被提取出来并用作命令,\d\d\d
应该被提取并用作命令的参数s
。- 应该运行通过解析上述内容创建的命令。
这通常可以通过一个名为的函数来实现s
,该函数采用所需的参数。使用正常调用来运行此类函数。例如:
s 123
但我想自定义行为bash
以便能够运行这样的函数,例如以下调用:
s123
s500
man bash
我尝试通过以下关键词在 中查找相关信息:overload
,,,但没有成功。custom
override
据我了解,我需要以某种方式自定义bash
用于处理输入的处理程序。我没有研究bash
源代码来了解这是否可行。
最好能找到一个适用于任何 shell 的解决方案。
也许创建一个bash
具有所需逻辑的自定义包装器/适配器并使用它来代替标准bash
二进制文件可以解决这个问题。
在
bash
:FYI
127
是标准的“未找到命令”退出状态。有关更多信息,请参阅https://www.gnu.org/software/bash/manual/bash.html#Command-Search-and-Execution 。我仅使用
BASH_REMATCH[]
如上所述进行调用,s
因为我知道这样做是安全的,因为它$*
包含单个字母的命令并且其参数只有 3 位数字,对于更复杂的内容,请参阅https://mywiki.wooledge.org/BashFAQ/050。不存在适用于所有 shell 的解决方案,请参阅如何定义处理“未找到命令”的函数?以查找有关其他一些 shell 的上述方法的信息。