从man中可以获得主要用法,如下:
! Start a history substitution, except when followed by a blank, newline, = or (.
!n Refer to command line n.
!-n Refer to the current command minus n.
!! Refer to the previous command. This is a synonym for `!-1’.
!string Refer to the most recent command preceding the current position in the history list starting with string.
!?string[?]
Refer to the most recent command preceding the current postition in the history list containing string.
The trailing ? may be omitted if string is followed immediately by a newline.
^string1^string2^
Quick substitution. Repeat the last command, replacing string1 with string2. Equivalent to
``!!:s/string1/string2/‘’ (see Modifiers below).
!# The entire command line typed so far.
################end###################
下面的内容来自csdn
现在大多数的Linux系统都使用bash作为默认的shell吧,下面就介绍一下bash的history命令管理功能吧,history命令可以回顾,修改和重用之前使用过的历史命令。
1.一些变量说明:
$HISTFILE bash启动的时候会读取~/.bash_history文件并载入到内存中,这个变量就用于设置.bash_history文件,bash退出时也会把内存中的历史回写到.bash_history文件
$HISTSIZE 设置bash会员期间历史包含的命令数量
$HISTFILESIZE 设置历史文件中实际存储的命令数量
2.显示历史命令
history 显示全部历史
history 数字 显示之前执行过的若干命令,例:history 2 显示执行过的上两条命令
使用上下箭头键也可以查看上一条根下一条命令,
3.运行历史命令
!! 运行上一条命令
!88 运行第88条命令
!88 /test 运行第88条命令并在命令后面加上/test
!?CF? 运行上一个包含CF字符串的命令
!ls 运行上一个ls命令
!ls:s/CF/l 运行上一个ls命令,其中把CF替换成l
fc 编辑并运行上一个历史命令
fc 66 编辑并运行第66个历史命令
fc -e /usr/bin/vim 66 使用vim编辑第66个命令并运行
4.搜索历史命令
使用ctrl+r搜索历史中的字符串,重复按ctrl+r可以在历史命令列表中不断的向前搜索包含字符串的命令,回车就会执行查找的命令
5.清空历史命令
history -c
6.写history
history -w 让bash将历史命令立即从内存写到.bash_history文件
history -a 将目前新增的 history 历史命令写入.bash_history文件
7.history历史命令记录删除
修改/etc/profile将HISTSIZE=1000改成0或1
清除用户home路径下.bash_history
8.history配置
运行 set | grep HISTFILE
显示:HISTFILE=/root/.bash_history
HISTFILESIZE=1000
在.bash_profile文件中添加
HISTFILE=/root/history
export HISTFILE
重新登录后历史命令都会写入到/root/history文件中
其余的一些设置可以在.bashrc文件中设置
export HISTCONTROL=ignoredups #忽略重复的命令
export HISTIGNORE=”[ ]*:&:bg:fg:exit” #忽略由冒号分割的这些命令
export HISTFILESIZE=1000 #设置保存的历史命令的文件大小
export HISTSIZE=100 #设置保存的历史命令的条数
技巧:
shopt -s histappend 在shell中执行这个命令可以使shell保存历史命令的时候使用追加的方式,因为默认是覆盖,在多终端的清空下,最后退出的终端灰覆盖以前的历史记录
在history历史记录中显示时间和执行命令的用户 echo ‘export HISTTIMEFORMAT=”%F %T `whoami` “‘ >> /etc/profile