shell 会保存您 ping 的 IP 地址吗?

shell 会保存您 ping 的 IP 地址吗?

我曾经看到过一条我不记得/找到的快捷方式。 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.xCtrl- wCtrl-y

-Ctrlw删除最后一个单词(IP 地址),将其放入杀环, Ctrl-y将粘贴 Kill Ring 的内容。

然后您可以运行任意数量的命令,然后在您再次需要 IP 时只需重复使用Ctrl-y

$ ssh root@Ctrl-y

请注意,在新命令行上发出任何与终止相关的函数将替换终止环的内容:

$ ping x.x.x.xCtrl- wCtrl-y

$ touch /tmp/example.fileCtrl- wCtrl-y

$ ssh root@Ctrl-y

将导致:

$ ssh root@/tmp/example.file

相关内容