在Linux中使用history命令的方法
用强大的 history 命令使你的命令行提示符更有效率。
随着我在终端中花费越来越多的时间,我感觉就像在不断地寻找新的命令,以使我的日常任务更加高效。GNU 的 history 命令是一个真正改变我日常工作的命令。
GNU history 命令保存了从该终端会话运行的所有其他命令的列表,然后允许你重放或者重用这些命令,而不用重新输入它们。如果你是一个老玩家,你知道 history 的力量,但对于我们这些半吊子或新手系统管理员来说, history 是一个立竿见影的生产力增益。
历史 101
要查看命令历史,请在 Linux 中打开终端程序,然后输入:
$ history
这是我得到的响应:
clear ls -al sudo dnf update -y history
history 命令显示自开始会话后输入的命令列表。 history 有趣的地方是你可以使用以下命令重放任意一个命令:
$ !3
提示符中的 !3 告诉 shell 重新运行历史列表中第 3 个命令。我还可以输入以下命令来使用:
linuser@my_linux_box: !sudo dnf
history 将搜索与你提供的模式相匹配的最后一个命令,并运行它。
搜索历史
你还可以输入 !! 重新运行命令历史中的最后一条命令。而且,通过与 grep 配对,你可以搜索与文本模式相匹配的命令,或者通过与 tail 一起使用,你可以找到你最后几条执行的命令。例如:
$ history | grep dnf
sudo dnf update -y
history | grep dnf
$ history | tail -n 3
history
history | grep dnf
history | tail -n 3
另一种实现这个功能的方法是输入 Ctrl-R 来调用你的命令历史记录的递归搜索。输入后,提示变为:
(reverse-i-search)`':
现在你可以开始输入一个命令,并且会显示匹配的命令,按回车键执行。
更改已执行的命令
history 还允许你使用不同的语法重新运行命令。例如,如果我想改变我以前的命令 history | grep dnf 成 history | grep ssh ,我可以在提示符下执行以下命令:
$^dnf^ssh^
history 将重新运行该命令,但用 ssh 替换 dnf ,并执行它。
删除历史
有时你想要删除一些或全部的历史记录。如果要删除特定命令,请输入 history -d <行号> 。要清空历史记录,请执行 history -c 。
历史文件存储在一个你可以修改的文件中。bash shell 用户可以在他们的家目录下找到 .bash_history 。
下一步
你可以使用 history 做许多其他事情:
- 将历史缓冲区设置为一定数量
- 记录历史中每行的日期和时间
- 防止某些命令被记录在历史记录中
有关 history 命令的更多信息和其他有趣的事情,请参考 https://www.gnu.org/software/bash/manual/ 。
总结
以上所述是小编给大家介绍的在Linux中使用history命令的方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对ZaLou.Cn网站的支持!
- Elasticsearch聚合 之 Date Histogram聚合
- Elasticsearch聚合 之 Terms
- Elasticsearch聚合初探——metric篇
- AngularJS API之$injector ---- 依赖注入
- AngularJS API之extend扩展对象
- AngularJS API之equal比较对象
- Elasticsearch之_default_—— 为索引添加默认映射
- Elasticsearch 动态映射——自动检测
- Elaticsearch REST API常用技巧
- C++拷贝构造函数
- 记录安装oracle的那些事(一)之oracle我很大
- Elasticsearch 连接查询
- 小程序加戏成功!变身游戏成新版微信最大主角,用户玩得不亦乐乎
- 堆实例
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- VS2017中使用QT Chart图表
- C++核心准则T.81:不要混用继承层级和数组
- C++核心准则T.83:不要将成员函数定义为模板虚函数
- C++核心准则T.84:使用非模板核心实现提供稳定的ABI接口
- C++核心准则T.120:只在确实有需要时使用模板元编程
- C++核心准则T.121:模板元编程主要用于模仿概念
- C++核心准则T.122:使用模板在编译时计算类型
- C++核心准则T.123:使用常量表达式函数在编译时求值
- Java基础 【类之间的关系】
- MySql 学习之路-基础
- (有趣的)项目实战:Java实现计算机自动关机
- 猜生日 Java小游戏
- KDD Cup 2020多模态召回比赛亚军方案与搜索业务应用
- 一文快速入门分库分表(必修课)
- MySQL · 物理备份 · XtraBackup备份原理