我可以在 '&&' 之后引用 '&&' 之前的命令吗

jkt*_*vis 10 bash zsh

不知道如何表达这个问题,但基本上,我经常发现自己运行一个命令vagrant来启动虚拟机,然后像下面这样 ssh 进入它:

vagrant up && vagrant ssh
Run Code Online (Sandbox Code Playgroud)

没有编写我自己的函数或脚本,有没有办法“重用”vagrant命令第二部分中的部分?

gle*_*man 23

使用(t)csh,bash或zsh历史扩展,您可以编写:

vagrant up && !#:0 ssh
Run Code Online (Sandbox Code Playgroud)

但是,说真的,你不会

  • http://www.gnu.org/software/bash/manual/bashref.html#History-Interaction -- `!#` 指的是你当前输入的行,`:0` 是第一个单词行(“流浪者”)。所以`!#:1` 会“向上”,等等 (4认同)
  • 圣牛人。不要再给我的答案点赞了。考虑一下 a) 重新键入“vagrant”,或 b) 首先记住“!#:0”然后键入它所需的脑力劳动。 (4认同)

Sté*_*las 13

你可以这样做:

eval vagrant\ {'up &&',ssh}
Run Code Online (Sandbox Code Playgroud)

但这不会使它变得更容易。

你总是可以做一个功能

doall() {
  cmd=$1; shift
  for arg do
    "$cmd" "$arg" || return
  done
}
Run Code Online (Sandbox Code Playgroud)

进而:

doall vagrant up ssh
Run Code Online (Sandbox Code Playgroud)