返回介绍

Hack-52 History 命令

发布于 2025-03-08 17:38:41 字数 2140 浏览 0 评论 0 收藏 0

History 命令

你敲的每一个命令都会被忠实地记录下来 --- 我。

上面说的也不完全对啦,因为这个"忠实"会被各种方法破解...

首先你要有一个历史记录的概念,然后你要知道这些记录存放到哪儿,最后你要知道这些记录可以被删除,修改。

搜索历史命令

快捷键 Ctrl + r

非常建议你使用这个命令,因为当你曾经输过一个很长的命令之后,当你再次想输入这个命令的时候,你就可以按下这个快捷键,然后键入那条长命令的关键词,然后就会显示出含有那个关键词的命令,每次按下这个键都会再往上搜一个。

( 还有一些其他的快捷键,在我的博客上: HERE )

重复上一次的命令

  1. 向上的方向键
  2. 两个叹号: !!
  3. 还有这个: !-1
  4. 快捷键 Ctrl+p

最好用的还是方向键,不是么~

从历史记录中执行某个命令

还是沿袭上一个中的 !-n 模式,其中 n 是一个编号。

# history | more
1 service network restart
2 exit
3 id
4 cat /etc/redhat-release
# !4
cat /etc/redhat-release

作者给出的例子中,执行了编号为 4 的命令。

执行曾经的命令中特定开头的

假设你的部分历史命令如下:

 1719  find . -type f 
 1720  find . -type f | cpio -o > test.cpio
 1721  find .  | cpio -o > test.cpio
 1722  ls
 1723  l
 1724  du -h

那么,怎样重复执行 1721 条呢? 除了利用 !-1721 这么麻烦的方法,我们还可以用 !f 这样的姿势。

因为开头的 f 是离着最后一条命令最近的,所以 !f 就执行了它。

清空历史记录

 history -c

从历史记录中截取参数

在下面的例子中, !!:$ 等价于上一条命令的最后一个参数:

# ls anaconda-ks.cfg
anaconda-ks.cfg
# vi !!:$
vi anaconda-ks.cfg

下面的例子中, !^ 则等价于上一条命令的第一个参数:

# cp anaconda-ks.cfg anaconda-ks.cfg.bak
anaconda-ks.cfg
# vi !^
vi anaconda-ks.cfg

从特定的历史记录中截取特定的参数

下面的例子中, !cp:2 等价于当前历史记录中,最后一个以 cp 开头的命令的第二个参数; !cp:$ 则等价于当前历史记录中最后一个以 cp 开头的命令的最后一个参数。

是不是有点啰嗦...

# cp ~/longname.txt /really/a/very/long/path/long-
filename.txt
... ... ...
# ls -l !cp:2
ls -l /really/a/very/long/path/long-filename.txt
# ls -l !cp:$
ls -l /really/a/very/long/path/long-filename.txt

本书简介:

  • Linux 进阶技巧
  • 巧妙的命令组合
  • Bash 某些技巧
  • 一共一百零一个(包括充数的)
  • 最后有个奖励章(额外技巧)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文