【问题标题】:What is the unix history command "!$" in bash?bash中的unix历史命令“!$”是什么?
【发布时间】:2015-04-20 19:09:16
【问题描述】:

我正在尝试了解 unix 命令!$ 是什么。

比如我知道!1这个命令是用来运行历史命令号1的。

似乎!$ 运行在 bash 中键入的最后一个命令。

例如,如果我写了mv folder12 folder123,然后我会写cd !$,我实际上会执行cd folder123

!$ 运行 bash 中最后输入的命令是否正确?

【问题讨论】:

标签: linux bash shell unix command-line


【解决方案1】:

!$ 匹配上一条命令的最后一个参数。

来自man bash

yank-last-arg (M-., M-_)

将最后一个参数插入上一个命令(最后一个字) 上一个历史条目)。有一个论点,行为准确 就像 yank-nth-arg 一样。对 yank-last-arg 的连续调用后退 通过历史列表,将每一行的最后一个参数插入 转动。 历史扩展工具用于提取最后一个 参数,就像指定了“!$”历史扩展一样。

示例

$ vi a
$ ls -l !$ # expands to "ls -l a"
-rw-rw-r-- 1 me me 30 18 abr.  22:00 a

另见What is your single most favorite command-line trick using Bash?

我是 !$、!^ 和 !* expandos 的粉丝,从最 最近提交的命令行:最后一项,第一个非命令项, 和所有非命令项目。也就是说(请注意,shell 会打印出 命令优先)。

还有一个很好的阅读:The Definitive Guide to Bash Command Line History

【讨论】:

  • 所以要回答最后一个问题,!$ 只有在不带任何参数的情况下才会运行最后一个命令。
  • 虽然 M-。如果您必须只选择一个,可能会更好地学习。它复制上一个命令的最后一个参数进行编辑。
  • @EricRenouf 如果有一个没有参数的命令,它将扩展到该命令。试试看。
  • 是的。如果你单独做ls!$ 将扩展到那个。
猜你喜欢
  • 2015-06-27
  • 2013-06-06
  • 1970-01-01
  • 1970-01-01
  • 2016-05-30
  • 2014-05-11
  • 1970-01-01
  • 2012-05-08
  • 2019-10-22
相关资源
最近更新 更多