history命令在linux的系统管理中经常用到,是个使用率超高的命令。
1.使用 HISTTIMEFORMAT 显示时间戳
# export HISTTIMEFORMAT='%F %T '
# history | more 1 2008-08-05 19:02:39 service network restart 2 2008-08-05 19:02:39 exit 3 2008-08-05 19:02:39 id 4 2008-08-05 19:02:39 cat /etc/redhat-release 注意:这个功能只能用在当 HISTTIMEFORMAT 这个环境变量被设置之后,之后的那些新执行的 bash 命令才会被打上正确的时间戳。在此之前的所有命令,都将会显示成设置HISTTIMEFORMAT 变量的时间。
2.使用 Ctrl+R 搜索历史
# [Press Ctrl+R from the command prompt, which will display the reverse-i-search prompt]
(reverse-i-search)`red‘: cat /etc/redhat-release [Note: Press enter when you see your command, which will execute the command from the history] # cat /etc/redhat-release Fedora release 9 (Sulphur)
3.快速重复执行上一条命令
4.从命令历史中执行一个指定的命令
# history | more
1 service network restart 2 exit 3 id 4 cat /etc/redhat-release # !4 cat /etc/redhat-release Fedora release 9 (Sulphur)
5.通过指定关键字来执行以前的命令
# !ps
ps aux | grep yp root 16947 0.0 0.1 36516 1264 ? Sl 13:10 0:00 ypbind root 17503 0.0 0.0 4124 740 pts/0 S+ 19:19 0:00 grep yp
6.使用 HISTSIZE 控制历史命令记录的总行数
复制代码代码如下:
# vi ~/.bash_profile
HISTSIZE=450 HISTFILESIZE=450
7.使用 HISTFILE 更改历史文件名称
# vi ~/.bash_profile
HISTFILE=/root/.commandline_warrior
8.使用 HISTCONTROL 从命令历史中剔除连续重复的条目
# pwd
# pwd # pwd # history | tail -4 44 pwd 45 pwd 46 pwd [Note that there are three pwd commands in history, after executing pwd 3 times as shown above] 47 history | tail -4 # export HISTCONTROL=ignoredups # pwd # pwd # pwd # history | tail -3 56 export HISTCONTROL=ignoredups 57 pwd [Note that there is only one pwd command in the history, even after executing pwd 3 times as shown above] 58 history | tail -4
9.使用 HISTCONTROL 清除整个命令历史中的重复条目
# export HISTCONTROL=erasedups
# pwd # service httpd stop # history | tail -3 38 pwd 39 service httpd stop 40 history | tail -3 # ls -ltr # service httpd stop # history | tail -6 35 export HISTCONTROL=erasedups 36 pwd 37 history | tail -3 38 ls -ltr 39 service httpd stop [Note that the previous service httpd stop after pwd got erased] 40 history | tail -6
10.使用 HISTCONTROL 强制 history 不记住特定的命令
# export HISTCONTROL=ignorespace
# ls -ltr # pwd # service httpd stop [Note that there is a space at the beginning of service, to ignore this command from history] # history | tail -3 67 ls -ltr 68 pwd 69 history | tail -3
11.使用 -c 选项清除所有的命令历史
复制代码代码如下:
# history -c
12.命令替换
在下面的例子里,!!:$ 将为当前的命令获得上一条命令的参数:
# ls anaconda-ks.cfg
anaconda-ks.cfg # vi !!:$ vi anaconda-ks.cfg
补充:使用 !$ 可以达到同样的效果,而且更简单。
# cp anaconda-ks.cfg anaconda-ks.cfg.bak
anaconda-ks.cfg # vi -5 !^ vi anaconda-ks.cfg
13.为特定的命令替换指定的参数
# cp ~/longname.txt /really/a/very/long/path/long-filename.txt
# ls -l !cp:2 ls -l /really/a/very/long/path/long-filename.txt
下例里,!cp:$ 获取 cp 命令的最后一项参数:
# ls -l !cp:$
ls -l /really/a/very/long/path/long-filename.txt
14.使用 HISTSIZE 禁用 history
# export HISTSIZE=0
# history # [Note that history did not display anything]
15.使用 HISTIGNORE 忽略历史中的特定命令
# export HISTIGNORE=”pwd:ls:ls -ltr:”
# pwd # ls # ls -ltr # service httpd stop # history | tail -3 79 export HISTIGNORE=”pwd:ls:ls -ltr:” 80 service httpd stop 81 history [Note that history did not record pwd, ls and ls -ltr] (责任编辑:IT) |