我曾经看到过一条我不记得/找到的快捷方式。 ping 一个 IP 后,然后尝试 ssh 进入它 - 该 IP 会自动保存到一个变量中。
就像是:
ping 10.1.23.4
...
ssh root@$!
并且在第二行中复制了 ip,替换 $!无需再费周折。
那么这是否让我们知道实际的语法是什么?或者这是一些特殊的配置?我相信这正在运行 centos 如果相关的话。蒂亚
答案1
这是一种 bashism——bash 是 CentOS 中的默认 shell 语言。 (Csh 有类似的东西。)查看有关的部分历史扩展在手册中;您可能对 感兴趣!*
,它是“上一个命令的所有参数”,或者!^
,它会给您第一个参数,或者!$
,它会给您最后一个参数。
请注意,这些不是变量。它们被扩展并被历史上的重置值所取代。
答案2
另一种选择,如果您在 emacs 编辑模式(默认)下使用 bash,那么您可以执行以下操作:
$ ping x.x.x.x
Ctrl- wCtrl-y
-Ctrl将w删除最后一个单词(IP 地址),将其放入杀环, Ctrl-y将粘贴 Kill Ring 的内容。
然后您可以运行任意数量的命令,然后在您再次需要 IP 时只需重复使用Ctrl-y
$ ssh root@
Ctrl-y
请注意,在新命令行上发出任何与终止相关的函数将替换终止环的内容:
$ ping x.x.x.x
Ctrl- wCtrl-y
$ touch /tmp/example.file
Ctrl- wCtrl-y
$ ssh root@
Ctrl-y
将导致:
$ ssh root@/tmp/example.file