文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

如何使用Bash history命令

2024-12-11 21:13

关注

Bash 的 history 命令在它提供的功能数量上超过了所有其他 Linux Shell 历史接口。

Bash 有丰富的历史。也就是说,它是一个古老的的 shell,还有一个更古老的 Shell (Bourne shell)的前辈,但是它还有一个很棒的 history 命令,它提供的功能数量超过了所有其他 shell 的历史接口。 Bash 版本的 history 可进行反向搜索、快速调用、重写历史记录等。

history 命令与许多其他命令不同。你可能习惯于将命令作为可执行文件放在常见的系统级位置,例如 /usr/bin/usr/local/bin 或者 ~/bin。 内置的 history 命令不在你的 PATH 中并且没有物理位置:

  1. $ which history
  2.  
  3. which: no history in [PATH]

相反,history 是 shell 本身的内置函数:

  1. $ type history
  2. history is a shell builtin
  3. $ help history
  4. history: history [-c] [-d offset] [n] or
  5. history -anrw [filename] or
  6. history -ps arg [arg...]
  7.  
  8. Display or manipulate the history list.
  9. [...]

出于这个原因,每个 shell 中的历史功能都是独特的,因此你在 Bash 中使用的功能可能无法在 Tcsh 或 Fish 或 Dash 中使用,而在这些 shell 中使用的功能可能也无法在 Bash 中使用。在某些情况下,了解 Bash 可以做什么可能会激发其他 shell 的用户创建有趣的改造来复制 Bash 行为,并且可能会解锁你从未知道的 Bash 功能。

查看你的 Bash 历史

history 命令最基本、最频繁的用法是查看 shell 会话的历史记录:

  1. $ echo "hello"
  2. hello
  3. $ echo "world"
  4. world
  5. $ history
  6.   1  echo "hello"
  7.   2  echo "world"
  8.   3  history

事件指示器

事件指示器Event designator按事件搜索你的历史记录。在这里,“事件”是指记录在历史中的命令,以换行符划定。换句话说,一行一个事件,以索引号来标记。

事件指示器大多以感叹号开头,有时也称为 “bang”(!)。

要从你的历史记录中重新运行命令,请使用感叹号,之后紧跟(之间没有空格)所需命令的索引号。例如,假设第 1 行包含命令 echo "hello",你想要想再次运行它:

  1. $ !1
  2. echo "hello"
  3. hello

你可以使用相对定位,提供基于你历史中当前位置向后的负数行号。例如,返回到历史中倒数第三个条目:

  1. $ echo "foo"
  2. foo
  3. $ echo "bar"
  4. bar
  5. $ echo "baz"
  6. baz
  7. $ !-3
  8. echo "foo"
  9. foo

如果只想回去一行,那么可以使用速记 !! 代替 !-1。这节省了按键时间!

  1. $ echo "foo"
  2. $ !!
  3. echo "foo"
  4. foo

字符串搜索

你也可以对条目搜索特定的字符串,反过来搜索要运行命令。要搜索以指定字符串开始的命令,请使用感叹号,之后紧跟(没有空格)要搜索的字符串:

  1. $ echo "foo"
  2. $ true
  3. $ false
  4. $ !echo
  5. echo "foo"
  6. foo

你还可以在任意位置(不仅是开头)搜索包含该字符串的命令。为此,请像之前一样使用 ! 加上要搜索的字符串,但在字符串的两端都用问号(?)围绕起来。如果你知道该字符串后紧跟一个换行符,那么可以省略最后的问号(就是在按回车之前输入的最后字符):

  1. $ echo "foo"
  2. $ true
  3. $ false
  4. $ !?foo?
  5. echo "foo"
  6. foo

字符串替换

类似于在行首搜索字符串,你可以搜索字符串并用新字符串替换它,以更改命令:

  1. $ echo "hello"
  2. hello
  3. $ echo "world"
  4. world
  5. $ ^hello^foo
  6. echo "foo"
  7. foo

让 history 有用

在 Bash 中,history 命令的功能远远超过此处介绍的内容,但这是一个很好的开始, 可以让你习惯使用你的历史记录, 而不是仅仅把它当作一个参考。经常使用 history 命令,并试试无需输入命令即可执行的操作。你可能会感到惊讶!

来源:Linux中国内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯