我不记得无需运行即可获取最后一个命令的技巧:
假设我希望能够在按向上箭头键时访问命令 !1255 并修改命令。那么调用该命令的技巧是什么,使其显示在命令行中但不执行,然后可以通过向上箭头键访问呢?
我尝试添加回显,但随后在命令之前有回显,我不记得如何正确执行此操作。
答案1
!1255:p
会做这个
!
是历史调用
1255
是行号
:p
打印但不执行
然后,您可以使用向上箭头获取之前的(未执行的)命令,并且可以根据需要更改它。
我经常将其与hg
(“History Grep”)-我最喜欢的别名结合起来。
$ alias hg # Maybe use hgr instead if you are a Mercurial CLI user.
alias hg='history | tail -200 | grep -i'
这将搜索最近历史记录行上的文本,无论大小写,并以如下方式使用:
当我想搜索最近的 vi 命令来编辑某个文件,然后我想重复使用其中一个命令来编辑同一文件但具有不同的文件扩展名时。
$ hg variables
6153 vi Variables/user-extensions.js
6176 vi Variables/user-extensions.js
6178 vi Variables/user-extensions.js
6190 vi Variables/user-extensions.js
6230 hg variables
$ # Notice the difference in case with V and v is ignored
$ !6190:p
vi Variables/user-extensions.js
$ ["up-arrow"]
$ vi Variables/user-extensions.[now change .js to .html]
我还定义hga
(“History Grep All”)来搜索我的整个历史记录:
$ alias hga
alias hga='history | grep -i'
但我不经常使用它,因为我的历史记录(故意)非常大,并且我得到了太多的输出,这些输出后来影响了终端中页面的向后滚动。
答案2
答案3
在 bash 中Ctl+alt+e
进行 shell 扩展,因此键入!1255
然后按此组合将用历史记录条目 1255 的内容替换当前行
答案4
您想在指定列表时使用 fc 命令而不是执行 (-l)
fc -ln -1