侧边栏壁纸
Linux入门自学网博主等级

每日学一条Linux命令,终成Linux大神

  • 累计撰写 725 篇文章
  • 累计创建 143 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

Linux下history命令用法详解

history命令介绍

history命令是用来显示或操作历史命令的一个内置命令。它可以显示用户在当前会话中执行过的所有命令,也可以对历史命令进行搜索、删除、修改等操作。history命令可以帮助用户快速地重复执行之前的命令,或者查看之前执行过的命令有没有错误。history命令还可以通过设置环境变量来控制历史命令的保存方式和数量。

使用权限

history命令是一个普通用户和超级用户都可以使用的命令。

适用的linux版本

history命令是一个通用的linux命令,几乎所有的linux发行版都支持这个命令。但是不同的linux发行版可能会有一些细微的差别,比如历史命令文件的存放位置和默认保存数量等。因此,在使用history命令之前,建议用户先查看自己的linux版本和shell类型,以避免出现意外的结果。

linux history命令的语法格式

history命令的基本语法格式如下:

history [选项] [历史记录数目]

其中,选项可以用来指定对历史命令进行不同的操作,比如搜索、删除、修改等。历史记录数目可以用来指定显示或操作的历史命令的数量。如果不指定选项和历史记录数目,那么history命令默认会显示所有的历史命令。

linux history命令的常用参数

history命令有很多参数可以用来对历史命令进行不同的操作,这里只介绍20个最常用的参数,如果想了解更多参数,请参考[history手册页]。

参数说明
-c清空当前会话中的所有历史记录
-d offset删除指定偏移量(从1开始)处的一条历史记录
-a将当前会话中新增加的历史记录追加到历史文件中
-n从历史文件中读取新增加的历史记录到当前会话中
-r从历史文件中读取所有的历史记录到当前会话中
-w将当前会话中所有的历史记录写入到历史文件中
-p对每个参数进行单独展开,并打印结果
-s将每个参数作为一条新的历史记录,并追加到当前会话中
-p对每个参数进行单独展开,并打印结果
-s将每个参数作为一条新的历史记录,并追加到当前会话中
-C清除重复出现过的最后一条历史记录
-D offset删除指定偏移量(从0开始)处及其之后所有重复出现过的历史记录
-L列出所有可用选项和其含义
-M从多个文件中读取或写入历史记录
-O file将当前会话中所有或指定数量(如果有)的历史记录写入到指定文件中
-R file从指定文件中读取所有或指定数量(如果有)的历史记录到当前会话中
-S file将当前会话中新增加或指定数量(如果有)的历史记录追加到指定文件中
-T timefmt设置时间戳格式,timefmt是一个符合strftime函数要求的字符串
-E启用扩展的历史记录功能,可以使用正则表达式等高级特性
-F禁用扩展的历史记录功能,恢复默认的历史记录功能

linux history命令的实例

下面给出一些常见的history命令的使用实例,结合最后给出的关键词举例子。

  • 显示所有的历史命令
history
  • 显示最近10条历史命令
history 10
  • 搜索包含"grep"的历史命令
history | grep grep
  • 删除第5条历史命令
history -d 5
  • 清空所有的历史命令
history -c
  • 将当前会话中新增加的历史命令追加到历史文件中
history -a
  • 从历史文件中读取所有的历史记录到当前会话中
history -r
  • 将当前会话中所有的历史记录写入到历史文件中
history -w
  • 将"ls -l"作为一条新的历史记录,并追加到当前会话中
history -s ls -l
  • 对"!"进行展开,并打印结果(!表示上一条命令的最后一个参数)
history -p !$
  • 清除重复出现过的最后一条历史记录
history -C
  • 删除第10条及其之后所有重复出现过的历史记录
history -D 10
  • 列出所有可用选项和其含义
history -L
  • 从多个文件中读取或写入历史记录(假设有file1和file2两个文件)
history -M file1 file2 # 从file1和file2中读取历史记录到当前会话中,如果有重复,则保留最新的一条
history -M file1 file2 20 # 从file1和file2中读取最近20条历史记录到当前会话中,如果有重复,则保留最新的一条
history -M file1 file2 -w # 将当前会话中所有的历史记录写入到file1和file2中,如果有重复,则覆盖旧的一条
history -M file1 file2 20 -w # 将当前会话中最近20条历史记录写入到file1和file2中,如果有重复,则覆盖旧的一条
  • 将当前会话中所有或指定数量(如果有)的历史记录写入到指定文件中(假设有file3这个文件)
history -O file3 # 将当前会话中所有的历史记录写入到file3中,如果有重复,则覆盖旧的一条
history -O file3 10 # 将当前会话中最近10条历史记录写入到file3中,如果有重复,则覆盖旧的一条
  • 从指定文件中读取所有或指定数量(如果有)的历史记录到当前会话中(假设有file4这个文件)
history -R file4 # 从file4中读取所有的历史记录到当前会话中,如果有重复,则保留最新的一条
history -R file4 10 # 从file4中读取最近10条历史记录到当前会话中,如果有重复,则保留最新的一条
  • 将当前会话中新增加或指定数量(如果有)的历史记录追加到指定文件中(假设有file5这个文件)
history -S file5 # 将当前会话中新增加的历史记录追加到file5中

linux history命令的常见技巧

除了基本用法外,linux history命令还有一些常见的技巧,可以让用户更方便地使用历史命令。这里介绍几个常见的技巧:

  • 使用"!"符号来重复执行历史命令。"!"符号后面可以跟一个数字、一个字符串或者一个特殊字符,表示要重复执行的历史命令。例如:

    • !10表示重复执行第10条历史命令。
    • !grep表示重复执行最近一条包含"grep"的历史命令。
    • !!表示重复执行上一条历史命令。
  • 使用"^"符号来修改并执行历史命令。"^"符号后面可以跟两个字符串,表示要将第一个字符串替换为第二个字符串,并执行修改后的历史命令。例如:

    • ^ls^ps表示将上一条历史命令中的"ls"替换为"ps",并执行修改后的历史命令。
    • ^a^b^:g表示将上一条历史命令中所有出现的"a"替换为"b",并执行修改后的历史命令。
  • 使用环境变量来控制历史记录的保存方式和数量。linux系统中有一些环境变量可以影响history命令的行为,比如:

    • HISTFILE表示保存历史记录的文件名,默认是~/.bash_history
    • HISTSIZE表示保存在当前会话中的历史记录数量,默认是1000。
    • HISTFILESIZE表示保存在文件中的历史记录数量,默认是2000。
    • HISTCONTROL表示控制是否保存重复或空白的历史记录,默认是空值。如果设置为ignorespace,则不保存以空格开头的历史记录;如果设置为ignoredups,则不保存与上一条相同的历史记录;如果设置为ignoreboth,则同时应用以上两个规则。
    • HISTTIMEFORMAT表示显示或保存带有时间戳的历史记录,默认是空值。如果设置为一个符合strftime函数要求的字符串,例如%Y-%m-%d %H:%M:%S,则可以显示或保存带有时间戳的历史记录。

用户可以通过修改这些环境变量来自定义history命令的行为,例如:

export HISTSIZE=500 # 设置当前会话中的历史记录数量为500
export HISTCONTROL=ignoreboth # 设置不保存重复或空白的历史记录
export HISTTIMEFORMAT="%Y-%m-%d %H:%M:%S " # 设置显示或保存带有时间戳的历史记录
0

评论区