history和.bash_history⽂件
系统所输⼊的命令历史记录:
(1)history查看bash历史记录2021年多少天
(2).bash_history⽂件
.bash_history⽂件会让你重⽤你使⽤过的命令(!+命令数字)
(1)每个⽤户的主⽬录下都定义了⼀个.bash_history⽂件
(2)许多发⾏版会记录⽤户前次输⼊的1000条命令
(3)可以使⽤cat ~/.bash_history 来查看历史记录
(4)shell能记住的命令的数⽬是定义在HISTSIZE变量中的。
“/etc/profile”⽂件中的“HISTFILESIZE”和“HISTSIZE”⾏确定所有⽤户的“.bash_history”⽂件中可以保存的旧命令条数。强烈建议把把“/etc/profile”⽂件中的“HIS TFILESIZE”和“HISTSIZE”⾏的值设为⼀个较⼩的数,⽐如 30。编辑profile⽂件(vi /etc/profile),把下⾯这⾏改为:
HISTFILESIZE=30
HISTSIZE=30
这表⽰每个⽤户的“.bash_history”⽂件只可以保存30条旧命令。
⽹管还应该在"/etc/skel/.bash_logout" ⽂件中添加下⾯这⾏"rm -f $HOME/.bash_history" 。这样,当⽤户每次注销时,“.bash_history”⽂件都会被删除.
excel如何合并单元格
history查看bash历史记录(把所有历史记录打印出来):
查看⽅法:
(1)!! (连续两个”!”),表⽰执⾏上⼀条命令;扩展:sudo !!
!- :执⾏上⼀条命令
眼袋细纹ctrl+P:执⾏上⼀条命令
设计结合自然(2)!n(n是数字),表⽰执⾏命令历史中第n条命令,例如”!10”表⽰执⾏历史命令中的第10条命令;
(3)!字符串(字符串⼤于等于1),例如!ta,表⽰执⾏历史命令中最近⼀次以ta为开头的命令。
(4)结合grep找历史命令 history|grep you_arch
(5)结合tail查看最近运⾏的命令 history|tail -5
(6)!:运⾏上⼀个命令扩展:!-2:运⾏您运⾏的第⼆个到最后⼀个命令
(7)! ⽂本:(! pi)找到之前以pi开头的运⾏过的命令,⽴即运⾏
(8)命令 !$:运⾏⼀个新命令,但是使⽤上⼀个命令的最后⼀个参数
例如:假设你运⾏了这个命令
touch /home/chris/some_long_file_name_you_dont_want_to_type_again。
你现在想要运⾏命令
nano /home/chris/some_long_file_name_you_dont_want_to_type_again。
⽽不是从头开始打字,你可以运⾏:
nano !$
(9)命令 !^:运⾏⼀个新命令,但是使⽤上⼀个命令的第⼀个参数
如果你运⾏ -c 4
然后运⾏ping !$,这将扩展到“ ping 4”。
福州订餐要解决这种情况,您可以使⽤以下技巧来展开第⼀个参数,⽽不是最后⼀个:
怀孕最早的信号
命令!^
所以,如果你跑了 -c 4 ,然后跑ping !^,
bash会把它扩展到“ "
(10)命令 !*:要填写上⼀个命令中使⽤的所有参数,⽽不是单个参数,您可以使⽤以下命令:
命令 !*
所以,如果你运⾏ping !* ,bash会⾃动填写你在上⼀个命令中使⽤的所有参数
(11)命令 !abc:#
例如,我们sudo hostname ubuntu以前运⾏命令。
如果我们运⾏以下命令,bash将通过历史记录向后搜索,以从我们键⼊的字母开始找到最后⼀个命令,并填写我们指定的参数。
运⾏echo !su:2,bash将会搜索到以“ su” 开始的最后⼀个命令,并填写第⼆个参数,即“ ubuntu”。
(12)命令!abc:*
使⽤星号(称为通配符)替换数字会导致bash从命令中填⼊所有参数
(13)^ ^ ABC XYZ
重新运⾏上⼀个命令并修改它
Bash还允许您重新运⾏上⼀个命令并指定应该更改的内容。这可以⽤于纠正命令中的打字错误。例如,以下命令将重新运⾏上⼀个命令,将⽂本“ abc” 替换为⽂本“ xyz”。
例如,如果你不⼩⼼跑了,你可以运⾏^gog^goog,bash会运⾏命令。
(14)history -c :删除⽂件⾥的内容(因为操作过的命令都被保存,密码易泄露)
默认情况下,bash shell将您在⽤户帐户的历史记录⽂件中运⾏的命令的历史记录存储在〜/ .bash_history。例如,如果你的⽤户名是bob,你会在/home/bob/.b ash_history找到这个⽂件。
由于您的历史记录存储在⽂件中,因此会在会话之间持续存在。您可以运⾏⼀些命令,退出,第⼆天回来,这些命令仍然可以在您的历史⽂件中准备查看和使⽤。每个⽤户帐户都有⾃⼰的具有单独命令历史的历史⽂件。
要清除您的bash历史记录,可以运⾏以下命令。这将擦除⽤户帐户的.bash_history⽂件的内容:
history-c
(15)Bash仅默认记住有限数量的命令,从⽽防⽌历史⽂件增长太⼤。历史条⽬bash记忆的数量由HISTSIZE变量控制。默认值通常为500或1000个条⽬。您可以运⾏以下命令来查看系统上bash历史记录的⼤⼩。
echo $ HISTSIZE
要将历史记录设置为零,请运⾏以下命令。
HISTSIZE = 0
对于当前会话,bash将不会存储任何历史记录条⽬,除⾮您运⾏命令HISTSIZE=1000将其设置回⼀定数量的条⽬
(16)操作的命令不显⽰在历史⽂件的办法:
Bash允许您忽略以空格开头的历史记录条⽬,
如果将HISTCONTROL变量设置为ignorespace.
HISTCONTROL = ignorespace
在命令⾏前输⼊⼀个空格,然后在bash shell中运⾏命令,命令将正常运⾏,但如果启⽤了此变量,则不会显⽰在历史记录中。这样可以让您的历史保持⼀点清洁,选择在没有出现在您的历史记录中的情况下运⾏命令。
(17)使得历史命令不存到.bash_profile⽂件⾥⾯
使⽤ HISTFILE 更改历史⽂件名称
默认情况下,命令历史存储在 ~/.bash_history ⽂件中。
添加下列内容到 .bash_profile ⽂件并重新登录 bash shell,
将使⽤ .commandline_warrior 来存储命令历史:
# vi ~/.bash_profile
HISTFILE=/root/.commandline_warrior
(18)Bash还允许您忽略可能会混淆您的历史记录的重复命令。
要这样做,设置HISTCONTROL 为ignoredups.
HISTCONTROL = ignoredups
例⼦:
#cd
#HISTCONTROL = ignoredups
#cd
#cd
#cd
#history|tail -4
cd
HISTCONTROL = ignoredups
cd
history|tail -4
要使⽤ignorespace 和ignoredups 功能,请将HISTCONTROL变量设置为ignoreboth.
HISTCONTROL = ignoreboth
请注意,您设置的bash变量只会持续存在于当前会话中。您需要将这些添加到⽤户帐户的.bashrc⽂件,以便在您启动的每个bash会话中⾃动设置这些值,如果您愿意的话。
(19)使⽤ HISTTIMEFORMAT 显⽰时间戳
当你从命令⾏执⾏ history 命令后,通常只会显⽰已执⾏命令的序号和命令本⾝。如果你想要查看命令历史的时间戳,那么可以执⾏:
文件夹如何设置密码# export HISTTIMEFORMAT='%F %T '
# history | more
1 2008-08-05 19:02:39 rvice network restart
2 2008-08-05 19:02:39 exit
3 2008-08-05 19:02:39 id
4 2008-08-0
5 19:02:39 cat /etc/redhat-relea
注意:这个功能只能⽤在当 HISTTIMEFORMAT 这个环境变量被设置之后,之后的那些新执⾏的 bash 命令才会被打上正确的时间戳。在此之前的所有命令,都将会显⽰成设置 HISTTIMEFORMAT
变量的时间。
(20)禁⽤history
使⽤ HISTSIZE 禁⽤ history
如果你想禁⽤ history,可以将 HISTSIZE 设置为 0:
# export HISTSIZE=0
# history
# [Note that history did not display anything]
(21)使⽤ HISTIGNORE 忽略历史中的特定命令
下⾯的例⼦,将忽略 pwd、ls、ls -ltr 等命令:
# export HISTIGNORE=”pwd:ls:ls -ltr:”
# pwd
# ls
# ls -ltr
# rvice httpd stop
# history | tail -3
79 export HISTIGNORE=”pwd:ls:ls -ltr:”
80 rvice httpd stop
81 history
[Note that history did not record pwd, ls and ls -ltr]
如果你经常使⽤Linux命令,那么使⽤history命令⽆疑会提升你的⼯作效率。
History命令主要⽤于显⽰历史指令记录内容, 下达历史纪录中的指令。
1>History命令语法:
[test@linux]# history [n]
[test@linux]# history [-c]
[test@linux]# history [-raw] histfiles
参数:
n :数字,要列出最近的 n 笔命令列表
-c :将⽬前的shell中的所有 history 内容全部消除
-a :将⽬前新增的history 指令新增⼊ histfiles 中,若没有加 histfiles ,
则预设写⼊ ~/.bash_history
-r :将 histfiles 的内容读到⽬前这个 shell 的 history 记忆中
-w :将⽬前的 history 记忆内容写⼊ histfiles
Linux系统当你在shell(控制台)中输⼊并执⾏命令时,shell会⾃动把你的命令记录到历史列表中,⼀般保存在⽤户⽬录下的.bash_history⽂件中。默认保存1000条,你也可以更改这个值。
如果你键⼊ history, history会向你显⽰你所使⽤的前1000个历史命令,并且给它们编了号,你会看到⼀个⽤数字编号的列表快速从屏幕上卷过。你可能不需要查看1000个命令中的所有项⽬, 当然你也可以加⼊数字来列出最近的 n 笔命令列表。
linux中history命令不仅仅让我们可以查询历史命令⽽已. 我们还可以利⽤相关的功能来帮我们执⾏命令。
2>运⾏特定的历史命令
history会列出bash保存的所有历史命令,并且给它们编了号,我们可以使⽤“叹号接编号”的⽅式运⾏特定的历史命令.
语法说明:
[test@linux]# [!number] [!command] [!!]
参数说明:
白石榴number :第⼏个指令的意思;
command :指令的开头⼏个字母
! :上⼀个指令的意思!
3>History命令实战
列出所有的历史记录:
[test@linux] # history
只列出最近10条记录:
[test@linux] # history 10 (注,history和10中间有空格)
使⽤命令记录号码执⾏命令,执⾏历史清单中的第99条命令
[test@linux] #!99 (!和99中间没有空格)
重复执⾏上⼀个命令
[test@linux] #!!
执⾏最后⼀次以rpm开头的命令(!? ?代表的是字符串,这个String可以随便输,Shell会从最后⼀条历史命令向前搜索,最先匹配的⼀条命令将会得到执⾏。) [test@linux] #!rpm
逐屏列出所有的历史记录:
[test@linux]# history | more
⽴即清空history当前所有历史命令的记录
[test@linux] #history -c
除了使⽤history命令,在 shell 或 GUI 终端提⽰下,你也可以使⽤上下⽅向键来翻阅命令历史(向下箭头会向前翻阅),直到你找到所需命令为⽌。这可以让我们很⽅便地编辑前⾯的某⼀条命令,⽽不⽤重复输⼊类似的命令。
History命令的⽤途确实很⼤!但需要⼩⼼安全的问题!尤其是 root 的历史纪录档案,这是⿊客们的最爱!因为不⼩⼼的 root 会将很多的重要资料在执⾏的过程中会被纪录在 ~/.bash_history 当中,如果这个档案被解析的话,后果不堪设想!
快捷键来查看bash历史记录:
ctrl+P:转到历史记录中上⼀个命令
ctrl+N:转到历史记录中下⼀个命令
Alt+R:如果在当前⾏进⾏了编辑,将任何更改还原为从历史记录中提取的命令bash 的召回模式:
Ctrl+R:调⽤与您提供的字符匹配的最后⼀个命令(按此快捷键,输⼊字符)Ctrl+O:运⾏ Ctrl+R召回的命令
Ctrl+G:保留历史搜索模式,不运⾏命令