大家好,我是 bash/zsh 用户(Linux)。我想实现以下事情。
首先,在 bash/zsh shell 中输入命令,例如:
$ 精彩的:
事实上,名为“wonderful:”的程序并不存在。我想要的是在 shell 执行命令之前用函数(或程序)处理输入字符串更具体地说,当命令输入是“wonderful:”时,shell 会将输入传递给我的函数/程序,这就是 shell 所做的全部。
有办法实现吗?bash 或 zsh 都可以。非常感谢您的关注!
答案1
您可以定义一个名为的函数command_not_found_handle
,当输入的命令未找到时,该函数将被调用。bash 4.0 或更高版本支持此功能;等效zsh
函数是名称类似的command_not_found_handler
。
这是一个简单的例子,它拦截了 的拼写错误printf
,但将任何其他未知命令保留为未知。
command_not_found_handle () {
if [[ $1 == pirntf ]]; then
printf "${@:2}"
else
printf "Command not found: $1"
return 127
fi
}