bash历史命令数

Bash历史悠久。 也就是说,它是一个老祖先的外壳(Bourne外壳),但是它还有一个很棒的history命令,它根据其功能数量超过了所有其他外壳历史接口。 Bash版本的history允许反向搜索,快速调用,重写历史记录等。

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

$ which history

which: no history in [ PATH ]


相反, history是Shell本身的内置功能:

$ type history
history is a shell builtin
$ help history
history: history [ -c ] [ -d offset ] [ n ] or
history -anrw [ filename ] or
history -ps arg [ arg... ]

Display or manipulate the history list.
[ ... ]


因此,每个shell中的历史记录功能都是唯一的,因此您在Bash中使用的内容可能无法在Tcsh,Fish或Dash中使用,而在Bash中使用的内容可能无法在Bash中使用。 在某些情况下,了解Bash的功能可能会激发其他shell的用户创建有趣的骇客来克隆Bash的行为,并且可能会解锁您从未知道的Bash功能。

查看您的Bash历史记录

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

$ echo "hello"
hello
$ echo "world"
world
$ history
1  echo "hello"
2  echo "world"
3  history

活动代号

在这种情况下, event是记录在您的历史记录中的命令,以换行符表示。 换句话说,它是一行,由索引号标记以供参考。

事件指示符大多以感叹号开头,有时也称为“ 爆炸”! )。

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

$ ! 1
echo "hello"
hello

您可以通过从历史记录中的当前位置开始提供负数的行来使用相对定位。 例如,返回历史记录中的三个条目:

$ echo "foo"
foo
$ echo "bar"
bar
$ echo "baz"
baz
$ ! - 3
echo "foo"
foo

如果您只返回一行,则可以使用速记!! 代替!-1 。 这节省了整个按键时间!

$ echo "foo"
$ !!
echo "foo"
foo

字符串搜索

您也可以反过来通过条目搜索特定的字符串以运行命令。 要搜索以特定字符串开头的命令,请使用感叹号,然后紧跟(无空格)后跟要搜索的字符串:

$ echo "foo"
$ true
$ false
$ ! echo
echo "foo"
foo

您还可以搜索在任意位置(不仅是开头)包含字符串的命令。 为此,请使用! 像往常一样,加上您要搜索的字符串,但在字符串的两端都用问号括起来。 如果您知道该字符串后面紧跟一个换行符,则可以省略结尾的问号(这意味着这是您在按Return键之前输入的最后一个内容):

$ echo "foo"
$ true
$ false
$ ! ?foo?
echo "foo"
foo

字符串替换

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

$ echo "hello"
hello
$ echo "world"
world
$ ^hello^foo
echo "foo"
foo

使历史有用

在Bash中,history命令的功能远远超过此处介绍的内容,但这是习惯使用您的历史记录而不只是将其作为参考的一个良好的开始。 经常使用history命令,并查看无需键入命令即可执行的操作。 您可能会感到惊讶!

翻译自: https://opensource.com/article/20/6/bash-history-commands

bash历史命令数

bash历史命令数_如何使用Bash历史记录命令相关推荐

  1. bash脚本创建变量_创建一个Bash脚本模板

    bash脚本创建变量 在本系列的第一篇文章中,您创建了一个很小的单行Bash脚本,并探讨了创建Shell脚本的原因,以及为什么它们是系统管理员而非编译程序最有效的选择. 在第二篇文章中,您将开始创建一 ...

  2. bash 运行程序 下一步_怎样用 Bash 编程:语法和工具

    让我们通过本系列文章来学习基本的 Bash 编程语法和工具,以及如何使用变量和控制运算符,这是三篇中的第一篇. -- David Both(作者) Shell 是操作系统的命令解释器,其中 Bash ...

  3. linux 命令大全_干货分享:Linux命令大全

    Linux是一个免费的操作系统,主要是用来进行程序开发,是不少电脑工程师所钟爱的系统.相较于Windows系统,Linux需要用到更多的命令来进行控制调配.下面小编将网络上可以找到的命令收集了起来,让 ...

  4. ubuntu 命令卡住_解决出现无法使用sudo命令情况

    解决出现无法使用sudo命令情况 无法使用sudo命令通常是在修改sudoers文件时出现的语法错误,导致出现解析错误.这里给出几种解决方法. 一.知道root密码 在终端输入命令 su root输入 ...

  5. cad快捷命令大全_最全CAD快捷键命令大全(图文版、文字版、键盘版)

    在 CAD操作中我们常用一些快捷键来代替鼠标操作从而提高绘图效率,以下是小编为大家整理的常用快捷键大全,涵盖图文版.文字版.键盘版. 图文版: 文字版: 一.常用功能键 F1: 获取帮助 F2:实现作 ...

  6. 链接mysql服务器的命令是_连接 MySQL服务器的命令是什么?( )_学小易找答案

    [单选题]两块平玻璃构成空气劈尖,左边为棱边,用单色平行光垂直入射,若上面的平玻璃慢慢地向上平移,则干涉条纹 [计算题]迎面而来的两辆汽车的车头灯相距1.0m,问汽车离人多远时它们刚能为人眼所分辨? ...

  7. linux 控制台输入命令无效_在控制台输入什么命令都提示commandnotfound原因是什么?suselinux...

    {"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],&q ...

  8. linux ksh 历史命令,防止Linux中的bash(和ksh)历史记录更改

    这是一个将所有执行的命令发送到syslog服务器的解决方案. 以下是将用户执行的所有命令的副本发送到Syslog服务器的两种方法.第一个将使用Bash"陷阱"功能.第二个是在Bas ...

  9. ansys参数化编程与命令手册_查看Bash手册--man命令

    大多数linux发行版都有用来查找shell命令和其他GNU工具信息的在线手册,有的书中把这个手册叫做bash手册,可以通过man命令来查找shell命令或者GNU工具的手册页面.阅读手册页面最好有一 ...

最新文章

  1. 没想到这家聪明的公司,正在用AIoT让机器对话
  2. 同一公司代码下工厂间的库存转储 (轉載)
  3. kettle大于0的转换成1_第一期实训周:基于Python+MySQL+Kettle+R的某网站数据采集分析...
  4. C/C++ 交换两个数,不使用第三个变量, 函数模板来实现
  5. [蓝桥杯2018初赛]分数-找规律
  6. LeetCode 84. 柱状图中最大的矩形(单调递增栈)
  7. 教育类网页设计灵感|容易阅读,条理清晰!
  8. dev-mysql_GitHub - intergrate-dev/mysql-elasticsearch
  9. bitmap位图详解
  10. 2003系统企业版镜像服务器,Windows Server 2003 R2/SP2简体中文企业版原版镜像
  11. 图文混盘之---仿微博表情键盘Objective-C版
  12. 盘点淘宝、腾讯、百度内部使用的JavaScript库
  13. 【微信小程序】图片选择、转码、压缩、预览、上传,file与base64
  14. python 活体检测_基于Python+Keras+OpenCV实现实时人脸活体检测 | 文末送书
  15. SNAT和DNAT简介
  16. 《Python编程:从入门到实践》读书笔记:第6章 字典
  17. 版本更新 | 极狐 GitLab 15.2 发布飞书通知机器人、多层史诗调整至专业版、实时 Wiki 图表预览和全新设计的合并请求报告
  18. zynqMP LINUX 移植
  19. 展讯/北京移动--笔试题
  20. 屏幕太大?来试试分屏吧

热门文章

  1. 阿里云OSS云存储平台
  2. LRU的两种实现方案
  3. 学习Java之前的一些话
  4. DNS递归查询与迭代查询
  5. Netty新连接接入与NioSocketChannel分析
  6. Win7-其中的文件夹或文件已在另一个程序中打开
  7. OpenStack Keystone v3 API新特性
  8. 没有绝对的技术,只有不停的创新
  9. linux命令(实用)
  10. 似乎是发现了asp.net ajaxToolkit中TAB控件的一个BUG