我想预处理所有发送给fish的命令。我知道这可以通过fish_preexec
来完成,因为它会将文字命令作为参数传递。但是,在某些条件下,我也想完全阻止执行该命令。我不想放弃鱼壳;我想保留当前的shell,只打印一条"command not executed"
消息。
鱼支持这样的事情吗?
答案 0 :(得分:4)
这很棘手,但是您可以通过将Enter键重新绑定到自定义函数来实现,例如:
SIGCHLD
产生:
function execute_ifnotls
if test (commandline) = 'ls'
echo
echo "No"
commandline ""
commandline -f repaint
else
commandline -f execute
end
end
bind \r execute_ifnotls
bind \n execute_ifnotls