在shell中,当你只是按Enter而没有输入任何内容时,有没有办法运行默认命令

时间:2017-01-17 18:16:44

标签: bash zsh fish

我认为只要在命令行输入而不输入任何内容就会运行一些东西会很酷。这样做有点不寻常,我不知道在哪里看,以及如何接近它。

你知道我怎么能这样做吗?也许在提示中运行一些东西......但只有当没有输入时。

希望有人有一个想法或者知道。我个人使用鱼,但我会对任何主流贝壳,bash,zsh感到好奇。

谢谢!

P.S。或者,有没有办法建立像ctrl-R这样的设施,你输入搜索字符串。你能为ctrl-something添加一个钩子吗?

2 个答案:

答案 0 :(得分:5)

在fish中,您可以通过为返回设置自定义绑定来执行此操作,如果命令行为空,则修改命令行:

function replace_command
    string length --quiet (commandline)
    or commandline "echo hello world"
    commandline -f execute
end

bind \n replace_command
bind \r replace_command

如果按下带有空命令行的返回,则会运行echo hello world

(如果您不确定fish_user_key_bindings语句应该去哪里,请查看bind

答案 1 :(得分:1)

您可以设置" PS1"或" PROMPT_COMMAND" shell变量实现你想要的。

例如,我在.bashrc中设置PS1来控制我的提示:

export PS1='`date +%H:%M:%S` `echo $PWD | sed "s@$HOME@~@"` -> '

显示当前时间,后跟当前目录(取消HOME部分),' - > '

当我点击返回时,确实会更新时间:

10:50:19 ~ -> cd /tmp    # cd changes the date & directory part in prompt
10:50:51 /tmp ->         # I just hit return key
10:50:52 /tmp ->         # Now the prompt shows updated date