linux历史数据导出命令,Linux Bash history从入门到进阶
像所有shell一样,Linux命令行终端保留用户过去执行的命令的历史记录(bash history)。此历史记录是永久性的,即使重新启动系统也会保留在内存中。这些存储的命令可以自由重复使用。
使用bash历史记录(history)的命令是“history”。此命令是内置 bash命令,用于提取有关Linux用户在所有先前会话中已执行的命令的历史记录信息。在本教程中,我们将通过学习history命令的正确用法来使您充分利用shell历史。 Linux默认将特定用户的命令历史记录存储在〜/.bash_history文件中。
查看整个历史
用户可以使用以下简单命令,查看shell命令的整个历史记录:
$ history
历史记录将以以下默认格式打印在屏幕上:
在上图中,您可以看到所有命令的列表,并为每个命令分配了一个编号。数字1命令对应于您运行的第一个命令,最后一个编号的命令代表您执行的最新命令。
如果自从使用bash以来一直在运行许多命令,您会发现这里将显示成百上千个这样的命令。要访问一些相关命令,您可以过滤历史记录功能显示的结果。
过滤历史记录输出
如果要基于先前命令中可能使用的特定关键字过滤历史记录输出,则可以按以下方式使用history命令:
$ history | grep [keyword]
例:在此示例中,我只想查看在 shell 中运行过的ping命令。因此,我将使用以下命令:
$history | grep ping
您可以看到我的输出现在仅显示包含搜索关键字“ping”的命令
查看许多最近的命令
您还可以查看特定数量的命令,例如:
N个最近的命令
或者
N个最旧的命令
N最近的命令
您可以通过以下命令查看特定数量的最近运行的命令:
$ history | tail -n
例:
在此示例中,我想用关键字“ ping”查看我运行的最后3条命令:
$ history | grep ping |tail -3
输出仅显示3个最近的ping命令,而不是整个历史记录
N个最旧的命令
您可以通过以下命令查看特定数量的最早的运行命令:
$ history | head -n
例:
在此示例中,我想查看我运行的最旧的3条命令,关键字为“ ping”:
$ history | grep ping |head -3
输出仅显示3个最旧的ping命令,而不是整个历史记录
列出所有带有日期和时间戳的命令
如果要查看命令历史记录以及日期和时间戳,请使用以下导出命令:
$ export HISTTIMEFORMAT='%F, %T'
现在,当您希望查看历史记录时,只需运行history命令以以下格式查看输出:
请注意,此格式更改是临时的,关闭会话后将恢复为以前的标准。
从历史导航命令
在命令行上时,您可以浏览以前运行的命令,也可以通过提供关键字来调用一些最近使用的命令。
滚动浏览命令
您可以使用键盘命令浏览历史记录命令
向上箭头/Ctrl + P
显示以前使用的命令。您可以多次点击这些控件以返回到历史记录中的特定命令。
向下箭头/Ctrl + N
显示您使用的下一个命令。您可以多次点击这些控件以前进到历史记录中的特定命令。
ALT + R
如果在当前行上编辑从历史记录中拉出的命令,则可以使用此控件将其还原为原始命令。
调出命令
您可以使用以下组合键从历史记录中调用、运行或选择不运行特定命令:
CTRL + R
通过指定搜索字符串从历史记录中调用命令。
CTRL + O
运行通过Ctrl + R调用的命令
CTRL + G
退出历史记录,而无需运行通过Ctrl + R调用的命令
例:
在此示例中,我按了CTRL + R,然后提供了搜索字符串“ ar”。历史记录显示命令“ arch”。
通过按ctrl + O运行命令“ arch”时,它显示了我系统的CPU体系结构:
history进阶
bash历史记录的真正魅力在于使用各种命令并自定义history命令本身以充分利用历史记录功能:
从历史记录运行命令
如前所述,history命令通过将数字与每个命令相关联来显示命令。通过使用以下命令,您可以根据其历史记录从历史记录中运行某个命令:
$ !#
例:
在这里,我从历史记录中运行命令号95:
$ !95
输出显示“ lscpu”的结果,该结果在我的bash历史记录中列为命令编号95。此命令显示我的CPU和操作系统规格。
您可以使用以下命重新执行上一个命令:
$ !!
例:
在这里,您可以看到我运行了“ arch”命令。通过运行上述命令,我可以使用重新执行'arch'命令来查看我的CPU体系结构,如下所示:
为了从历史记录中搜索命令,然后运行它,请使用以下命令:
$ ![keyword]
例:
我将使用以下命令对最后一个带有关键字“ dconf”的命令重新执行:
$ !dconf
您可以在下图中显示,它的确是我运行的最后一个dconf命令。
使用先前命令中的参数
Linux bash使您可以使用上一个命令中的参数来运行新命令。当您要避免重新输入冗长或复杂的参数时,它特别有用。为此,可以使用以下命令:
使用上一个命令的最后一个参数
$ [Command] !$
变量!$中存储了前一个命令的最后一个参数。
例:
在此示例中,我将创建一个长名称的文件。
Nano [longnameOfaFile]
然后,通过避免再次按以下方式键入长名称,我将其复制到另一个位置:
Cp !$ [destinationfolder]
您可以看到我可以使用变量!$复制文件而无需重新输入文件名!
使用上一个命令的第一个参数
有时,只有前一个命令的第一个参数对当前命令有帮助。
在这种情况下,可以使用以下命令:
$ [command] !^
例:
在以下示例中,我通过指定主机名和计数作为参数来运行ping命令。现在,我想在新命令中使用主机名(第一个参数)而不是2(最后一个参数)。为此,我将使用以下命令:
$ ping !^
使用上一个命令的所有参数
您还可以通过使用以下命令来使用上一命令中的所有参数:
$ !*
使用历史命令中的一个参数
您还可以使用历史记录中的命令的某个参数。为此,请使用以下命令:
$ [command] ![keyword]:#
例:
$ echo !cp:2
该命令将采用以下参数:
命令:echo
关键字:cp [搜索的历史命令的关键词,取最后一个匹配的命令]
#:2(命令的第二个参数)
以下输出显示了我运行的最后一个cp命令的第二个参数:
使用历史命令中的所有参数
以下命令将存储搜索到的history命令中的所有参数,并在当前命令中使用它们:
$ command ![keyword]:*
例:
在以下命令中,我将使用echo命令打印最后一个cp命令的所有参数,如下所示:
$ echo ![cp]:*
修改和运行以前的命令
如果您键入了错误的命令,或者想通过更改其中的一些文本来对命令再次执行;以下是这样做的方法:
$ ^[previoustext]^[newtext]
例:
我将命令“ grep”错误键入为“ gep”,现在我想通过更正文本来运行命令:
$ ^gep^grep
现在您可以看到我的更正命令将按如下所示正确运行:
清楚history记录
为了清除bash的历史记录,请使用以下命令:
$ history -c
此命令将清除您的历史记录并从文件〜/.bash_history中删除所有内容
在本教程中,我们了解到,虽然打印整个历史记录内容可能没有用,但通过我们学到的命令优化输出还是非常有用的。
linux历史数据导出命令,Linux Bash history从入门到进阶相关推荐
- 第二周 Linux文件管理类命令及bash基本特性
第二周 Linux文件管理类命令及bash基本特性 摘要 1.描述Linux上的文件管理类命令并详解. 2.描述Bash的工作特性. 3.描述文件的元数据信息详解. 4.描述命令别名的使用. 5.详解 ...
- linux模块builtin是什么意思,使用linux的builtin命令执行bash内建命令
使用linux的builtin命令执行bash内建命令 发布时间:2020-07-17 09:07:55 来源:亿速云 阅读:69 作者:清晨 栏目:服务器 这篇文章将为大家详细讲解有关使用linux ...
- linux shell 未找到命令,未找到linux问题setenv命令(linux issue setenv command not found)
未找到linux问题setenv命令(linux issue setenv command not found) 我在Linux中开发了一个Tcl / Tk脚本工具. 为了运行该工具,每次需要在she ...
- linux新建自定义命令,Linux 创建自定义命令
Linux 创建自定义命令 Linux 可以创建自定义使用命令 这里我们采取使用"alias"命令.这里我们首先了解两个文件,通过这两个文件我们可以根据环境配置相应的自定义命令. ...
- Linux(11)--(历史命令)Ctrl+r, history,!
日常用到的指令 1.Ctrl+r--匹配查找历史命令 2.history [n] --列出历史命令 3.!--执行历史命令 1.Ctrl+r–匹配查找历史命令 按照模糊印象查询历史命令:就用Ctrl+ ...
- 在Linux中head命令,Linux 中 head 命令实例
原标题:Linux 中 head 命令实例 head命令将每个文件的前10行打印到标准输出.对于多个文件,在每个文件前面加上一个给出文件名的头.如果没有文件,或者文件为-,则读取标准输入. 如何使用h ...
- 在linux中which命令,Linux 中 which 命令怎么用?
在Linux中which命令的作用是在PATH变量指定的路径中,搜索某个系统命令的位置,并且返回第一个搜索结果,其用法为"which [文件...]",其参数有"-n&q ...
- linux挂移动硬盘命令,linux挂载命令mount及U盘、移动硬盘的挂载
一.mount的命令格式是(注意mount只能在root权限下运行) mount dervice dir dervice是要挂载的设备,dir是挂载点 二.查看当前磁盘列表的设备 fdisk -l 显 ...
- linux设备授权命令,# Linux命令
主目录 / 根 每个文件和目录都从根目录开始. 只有root用户拥有这个目录下的写权限. 请注意/ root是root用户的主目录,与/不一样. /bin 用户二进制文件 包含二进制可执行文件. 您需 ...
- linux远程date命令,linux之date命令详解
date命令的用处 1.用于显示特殊的时间格式,可以用于对日志文件的命名 2.用于设置时间 ,不过这方面用的比较少,因为一般的服务器都设置的有自动同步网络时间 用法: date [OPTION]... ...
最新文章
- linux学 java_[操作系统]Linux学习第二步(Java环境安装)
- dis的前缀单词有哪些_玩转英语词汇--词汇积累策略之前缀dis
- Linux包管理器apt/apt-get发现远程代码执行漏洞
- 3.8	采购协议管理
- 关于预付卡,您需要知道的事儿
- Python-OpenCV 处理视频(四): 运动检测
- Java中List的父类与子类如何转换
- 【OpenCV 例程200篇】40. 图像分段线性灰度变换
- 1017.UML类图笔记
- 搜索引擎下拉食云速捷详细_详细解析关键词与搜索引擎之间的霸屏关系
- npm换成国内源 npm换源 npm换淘宝源镜像
- Python网络爬虫
- Java对象转Map的解决办法_java对象转map怎么操作?map如何转化成Java对象?
- iOS下86版五笔输入法练习程序(作为备忘,最基本功能的演示demo,版本:0.99版)
- 从Mac远程控制Windows
- 差评回复话术,拿来吧你!
- 使用docker和jenkins简单部署springboot项目
- TCP/IP层次模型
- 全国首个海洋大数据交易服务平台交易额破百万
- 什么叫刀片式服务器跟其它服务器有何区别?
热门文章
- 微信文章数据 API数据接口
- 数学建模模型_浅谈对数学建模,数据挖掘,数据分析和数据模型的区别
- BugKu-CTF(杂项misc)--YST的小游戏/easy_python
- 云计算与虚拟化技术发展编年史
- win7升级win10正式版_如何在win7系统中升级win10
- OceanBase数据库大赛
- mindmanager2020许可密钥永久激活破解安装教程非破解手机版下载
- FieldTrip toolbox教程系列(1)-预处理-读取连续的EEG和MEG数据
- YARN 作业执行流程
- [CTF]-NepCTF2022