要获取我可以输入的所有先前ssh
命令的列表:
$ history | grep ssh
1234 ssh x@y.z
1235 ssh y@z.a
1236 ssh z@a.b
…
但是我正在寻找一种方法来获取所有ssh
命令的列表,然后是rsync
命令。所以结果应该是这样的:
1234 ssh x@y.z
1235 rsync y@z.de …
…
4321 ssh y@z.a
4322 rsync z@a.b …
所以我基本上试图在后续行中找到后续的词......
答案 0 :(得分:2)
一种选择是使用:
history | grep -A 1 ssh | grep -B 1 rsync
这是非最佳的,因为它会匹配你在同一行中运行rsync和ssh的情况。
你可以尝试更好:
history | cut -c 8- | grep -A 1 ^ssh | grep -B 1 ^rsync
这里我正在使用历史命令(因为另一种选择是使用历史文件)。
然后我用cut
删除行号。 (这可能不是很优雅,因为考虑到历史输出中的行号列总是有8个字符,您可能必须检查8是否是正确的数字(对于我可以检查的版本,它是:) ))。
然后我使用ssh开始(grep
)的^
行,我要求在(-A 1
)之后打印该行和一行
然后我grep
表示使用rsync启动(^
)的行,我打印前一行(-B 1
)