history命令使用【转】

更新时间:2023-07-20 19:12:42 阅读: 评论:0

history命令使⽤【转】
今天我们来介绍⼀下,在 Linux 使⽤ history 来减少重复命令的⼏个实⽤技巧。
1 基本原理
Linux 命令的历史记录,会持久化存储,默认位置是当前⽤户家⽬录的.bash_history⽂件。
当 Linux 系统启动⼀个 Shell 时,Shell 会从.bash_history⽂件中,读取历史记录,存储在相应内存的缓冲区中。
我们平时所操作的 Linux 命令,都会记录在缓冲区中。包括history命令所执⾏的历史命令管理,都是在操作缓冲区,⽽不是直接操作.bash_history ⽂件。
当我们退出 Shell,⽐如按下 Ctrl+D 时,Shell 进程会把历史记录缓冲区的内容,写回到.bash_history⽂件中去。
2 使⽤详解
清楚了history的基本原理,我们来具体学习⼀下如何使⽤它。
(⼀)基础⽤法
重阳节别称
直接输⼊ history 命令,可以看到最近操作的所有命令都显⽰出来了
$ history
1  bash
2ls
3  vim .bash_history
4cat .bash_history
5  history
6  bash
有时候我不需要显⽰所有的历史命令,只显⽰最后的 10 条历史记录,可以在命令后加数字N即可
$ history 10
正常情况下,只有在 Shell 正常退出时,才会将缓冲区内容保存到⽂件。如果你想主动保存缓冲区的历史记录,执⾏-w选项即可$ history -w
当然,如果你执⾏了⼀些敏感的命令操作,可以执⾏-c将缓冲区内容直接删除
$ history -c
(⼆)重复执⾏命令
如果要重复执⾏⼀些命令,可以使⽤!来快速执⾏重复的命令。
沉浸的近义词举个例⼦,重复执⾏第 1024 历史命令,可以执⾏如下命令
$ !1024
1024这个编号可以通过 history 查看哦
想法的英文重复执⾏上⼀条命令
$ !!
重复执⾏倒数第 6 条历史命令,可以通过负数表⽰,-6表⽰倒数第 6 条记录
$ !-6
(三)搜索历史命令
有时候,需要重复执⾏某字符串开头的最后⼀个命令,同样可以通过 ! 来操作,然后按 Enter 执⾏即可
⽐如,刚才执⾏了⼀个很长命令,只记录命令开头是curl,这时就可以通过!curl快速执⾏该命令
$ !curl
这个⽤法很⾼效,但存在不安全因素,因为有可能执⾏的命令不是你想要执⾏的,那就坏事了。可以通过:p来安全地执⾏。
$ !curl:p
curl
加上:p后,只是打印出了搜索到的命令,如果要执⾏,请按 Up 键,然后回车即可。如果你只知道某条命令包含了x信息,不是以x开头,同样可以通过来执⾏包含字符串的命令
(四)交互式搜索历史命令
在 Linux 搜索历史命令,还可以通过交互式的搜索⽅式,简直⾼效直接。在命令⾏输⼊Ctrl+R后,进⼊交互界⾯,键⼊需要搜索的关键字,如果匹配到多条命令,可以多次键⼊Ctrl+R来切换上⼀条匹配的命令。
(rever-i-arch)`sina': echo sina
可以看到,我输⼊了 sina 后,就⾃动匹配到最近⼀次和 sina 匹配的命令,这时按下回车就可以执⾏该命令。
(五)重复执⾏上条命令
在这⾥总结下多种重复执⾏上条命令的⽅式,你可以选择⼀种⾃⼰喜欢的就可以啦
!!
!-1
Ctrl+p
Up
Ctrl+R
(六)显⽰时间戳
有时候需要对 Linux 系统做审计,那为历史记录添加时间戳,显⽰⾮常有⽤。
$ export HISTTIMEFORMAT='%F %T '
$ history 3
462021-04-1815:21:33
472021-04-1815:21:35pwd
482021-04-1815:21:39 history 3
青少年怎么治肾虚
可以看到,历史记录已经显⽰了时间戳。其实这些对于审计需求,还不够,可以加上更详细的信息:
$ export HISTTIMEFORMAT="%F %T `who -u am i 2>/dev/null| awk '{print $NF}'|d \-e 's/[()]//g'` `whoami` "
62021-04-1816:07:48113.200.44.237 root ls
72021-04-1816:07:59113.200.44.237 root pwd
82021-04-1816:08:14113.200.44.237 root history
海马怎么画(七)控制历史记录总数
默认情况下,Linux 系统最多存储 1000 条历史记录,可以通过HISTSIZE环境变量查看
$ echo $HISTSIZE1000
对于需要做审计的场景,1000 条历史记录可能会太少了,我们可以修改为合适的值
$ export HISTSIZE=10000
注意,HISTSIZE变量只能控制缓冲区中的历史记录数量,如果需要控制.bash_history⽂件存储的最⼤记录数,可以通过HISTFILESIZE进⾏控制
上述命令⾏修改只在当前 Shell 环境⽣效,如果需要永久⽣效,需要写⼊配置⽂件中国金鸡百花电影节
$ echo"export HISTSIZE=10000" >> ~/.bash_profile
$ echo"export HISTFILESIZE=200000" >> ~/.bash_profile
$ source ~/.bash_profile
(⼋)更改历史记录⽂件名
有时,为了⽅便管理和备份,需要更改历史记录⽂件的路径和名称。简单,同样可以通过环境变量HISTFILE更改它的⽂件名称
$ echo"export HISTFILE=/data/backup/chopin.bash_history" >> ~/.bash_profile
$ souce ~/.bash_profile
(九)禁⽤历史记录
处于某种特殊环境,我们需要禁⽤历史记录
$ echo"export HISTSIZE=0" >> ~/.bash_profile
$ echo"export HISTFILESIZE=0" >> ~/.bash_profile
$ source ~/.bash_profile
一轮红日
哈哈,直接把上述两个变量的值设置为0,就实现了禁⽤历史记录的功能
(⼗)⿊客必知的⼀个⼩技巧
最后分享⼀个不为⼈知的,⿊客必知的⼩技巧。
在命令前额外多加⼀个空格,这样的命令是不会被记录到历史记录的,感觉是不是很酷
这个技巧如果在你的系统不管⽤,请查看下环境变量HISTCONTROL是否包含ignorespace,貌似 centos 系统默认没有设置这个值。
3 总结时间
在 Linux 系统,history 命令可以⾮常⽅便,帮助我们管理历史命令,平时我们命令都会先记录在缓存区,在 Shell 退出时才会记录到⽂件中。
history 命令提供了很⽅便的管理功能,合理去配置和管理历史记录,可以让你的 Linux 系统更加健壮和安全。
好了,⽼规矩,贴⼼的肖哥还是来总结⼀下 history 命令常⽤⽅法
history n:只显⽰最近的 n 条历史记录
history -c:清除缓存区中的历史记录
history -w:将缓存区的历史记录保存到⽂件
history -d N:删除第 N 条历史记录
⼏种重复执⾏命令的⽅法:!!、!-1、!N、!string 等交互式历史命令搜索,请使⽤ Ctrl+R 快捷键合适使⽤⼏个相关的环境变量,让你的 Linux 系统更安全:
HISTSIZE:控制缓冲区历史记录的最⼤个数
HISTFILESIZE:控制历史记录⽂件中的最⼤个数思想政治教育
HISTIGNORE:设置哪些命令不记录到历史记录
HISTTIMEFORMAT:设置历史命令显⽰的时间格式
HISTCONTROL:扩展的控制选项
如果在⽣产环境,这些环境变量需要持久化到配置⽂件~/.bash_profile export HISTCONTROL=ignoreboth
# ignorespace: 忽略空格开头的命令
# ignoredups: 忽略连续重复命令
# ignoreboth: 表⽰上述两个参数都设置
# 设置追加⽽不是覆盖
shopt -s histappend
export HISTSIZE=1000
export HISTFILESIZE=200000
export HISTTIMEFORMAT="%F %T "
export HISTIGNORE="ls:history"
转⾃

本文发布于:2023-07-20 19:12:42,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/89/1089493.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:命令   历史记录   缓冲区   需要   历史   记录   控制
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图