Questions tagged «history-expansion»

5
我怎么能别名!!
我正在尝试sudo !!在Bash中设置别名。我尝试过alias sbb='sudo !!',但是它将其解释为文字 !!并打印 sudo: !!: command not found 如果我使用双引号,它将代替字符串本身中的双引号,因此不起作用。 有什么办法可以使这项工作吗?还是其他别名?`

1
$ _ vs!$。前面命令和输出重定向的最后一个参数
问题是关于特殊变量。文档说: !!:$ 指定前面命令的最后一个参数。可以将其缩短为!$。 ($_,下划线。)在shell启动时,设置为用于调用在环境或参数列表中传递的正在执行的shell或shell脚本的绝对路径名。随后,扩展到扩展后的上一个命令的最后一个参数。还设置为用于调用每个执行的命令的完整路径名,并将其放置在导出到该命令的环境中。 我一定无法捕捉到一些差异,因为: $ echo "hello" > /tmp/a.txt $ echo "!$" echo "/tmp/a.txt" /tmp/a.txt $ echo "hello" > /tmp/a.txt $ echo $_ hello 有什么不同?

5
在Bash中键入单个感叹号有什么作用?
Bash使用惊叹号扩展历史记录,如对此问题的答案所述(例如,使用来sudo !!运行先前的命令行sudo)。但是,我找不到任何地方可以解释运行以下命令(即单个感叹号)的作用: ! 它似乎什么也没打印,并以1退出,但是我不确定为什么要这样做。我已经在网上和Bash手册页中进行了查找,但是除了它是一个“保留字”这一事实外,什么都找不到,但是},并运行以下命令: } 打印错误: bash: syntax error near unexpected token `}'

4
为什么默认情况下仍启用bash历史记录替换?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 去年关闭。 有人知道为什么默认情况下bash仍启用历史记录替换吗?我.bashrc已经加入set +H了很多年,但其他一些人仍被该功能所困扰。 鉴于几乎每个人都在使用具有复制粘贴功能的终端,并且使用readline库编译的bash 和默认情况下仅在交互式shell中启用了历史替换,是否真的有理由完全使用该功能?即使默认情况下所有外壳程序都禁用了此脚本,也不会破坏现有脚本。 如果您不知道为什么历史替换被破坏,请尝试以下操作: $ set +H # disable feature history substitution $ echo "WTF???!?!!?" WTF???!?!!? $ set -H # enable feature history substitution $ echo "WTF???!?!!?" echo WTF???echo WTF???!?!!? WTF???echo WTF???!?!!? (很明显,如果默认情况下所有脚本都禁用了该功能,并且存在在执行之前验证结果的功能,则该功能存在重大问题shopt -s histverify。) 也可以看看: 为什么感叹号`!`有时会使bash烦躁? 为什么Bash历史记录不记录此命令? 如何回响一声巨响! Bash:在同一行中的双引号之后,单引号内的历史记录扩展

5
如何调用前一个命令(不执行)以进行更改?
我不记得在不运行命令的情况下可以获得最后一个命令的技巧: 假设我希望能够在按向上箭头键并修改命令时访问命令!1255。那么,调用该命令,使其在命令行中显示但不执行,然后通过向上箭头键进行访问的诀窍是什么呢? 我尝试放置回显,但是在命令之前有一个回显,我不记得如何正确执行它。

2
如何从历史记录中的最后一个命令访问第二个参数?
我开始学习一些正则表达式,因此我反复使用此命令: grep pattern /usr/share/dict/american-english 只有带有模式的部分会发生变化,因此我不得不一次又一次写出长表达式“ / usr / share / dict / american-english ”。 有人说,可以通过键入隐含的字符组合而不是完整的表达式从命令历史中扩展命令的自变量。你能告诉我那些神秘的字符组合吗?
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.