shell 我可以防止终端命令连续运行两次吗?

68de4m5k  于 2022-11-16  发布在  Shell
关注(0)|答案(1)|浏览(112)

我有一个脚本可以做很多事情,设置一个新的开发服务器,将源代码推送到服务器上,将示例数据放在服务器上,将服务器的名称与我当前的git分支同步。
然后,一旦它被设置,我有一个别名,推新的源代码到它。
我每天都会运行第一个命令几次。我一直都在运行别名。我的肌肉记忆让我对源代码进行更改,进入终端,按下向上箭头,然后按下返回。90%的时间里,这正是我想要的。
但是,在设置好服务器,然后修改代码之后,肌肉记忆背叛了我,我最终开始启动一个新的开发服务器。是的,我只是按下Ctrl-C来停止它,但它仍然很烦人。
是否有任何方法可以防止服务器安装命令连续运行两次?

c90pui9n

c90pui9n1#

如果你想冒险,你可以重新绑定你的回车键来使用这个小部件

  • 如果当前缓冲区为空,则重复上一个命令。
  • 但是,如果最后一个命令是“ls”(替换为您的命令),则不会重复该命令。
  • 如果当前缓冲区不为空,则它只运行标准的接受行小部件(.accept-line)来执行您在提示符中键入的任何内容。
accept-line() { 
  if [ -z "$BUFFER" ]; then
    local prevCommand=$(fc -ln -1)
    if [ $prevCommand = "ls" ]; then
      # do nothing
    else
      zle up-history
    fi
  fi
  zle ".accept-line"; 
}
zle -N accept-line

In zsh how do I bind a keyboard shortcut to run the last command?

相关问题