![如何在 bash oneliner 中执行 grep 历史记录中的第一个匹配](https://linux22.com/image/171076/%E5%A6%82%E4%BD%95%E5%9C%A8%20bash%20oneliner%20%E4%B8%AD%E6%89%A7%E8%A1%8C%20grep%20%E5%8E%86%E5%8F%B2%E8%AE%B0%E5%BD%95%E4%B8%AD%E7%9A%84%E7%AC%AC%E4%B8%80%E4%B8%AA%E5%8C%B9%E9%85%8D.png)
在命令上
history | grep vgh804
我得到以下结果。
26 ssh -l vgh804 ssh-blah-blah
29 ssh -l vgh804 ssh-blah-blah
30 ssh -l vgh804 ssh-blah-blah
103 ssh -l vgh804 ssh-blah-blah
501 history | grep vgh804
我想执行第 26 行。但我想要一个通用且单行的解决方案。
var=$(history | grep vgh804 | head -n1 | awk {'print $1'}) && echo $var
给我
26
有什么办法可以将其与感叹号结合起来吗?就像是
history | grep vgh804 | head -n1 | awk {'print $1'} | !
然而,这不起作用,因为我无法通过管道传输!
答案1
仅当建立相同的 ssh 连接时,您才可以使用如下:
$!ssh
或者
$!26