当你从命令行执行 history 命令后,通常只会显示已执行命令的序号和命令本身。如果你想要查看命令历史的时间戳,那么可以执行:
[root@localhost ~]# export HISTTIMEFORMAT='%F %T '
[root@localhost ~]# history | more
1 2012-05-20 17:45:04 history
2 2012-05-20 17:45:16 tail -n 100 /var/log/messages
3 2012-05-20 17:46:18 export HISTCONTROL=ignorespace
4 2012-05-20 17:46:19 ls
快速重复执行上一条命令
从命令历史中执行一个指定的命令
在下面的例子中,如果你想重复执行第 4 条命令,那么可以执行 !4:
[root@localhost ~]# history | more
1 2012-05-20 17:45:04 history
2 2012-05-20 17:45:16 tail -n 100 /var/log/messages
3 2012-05-20 17:46:18 export HISTCONTROL=ignorespace
4 2012-05-20 17:46:19 ls
5 2012-05-20 17:46:22 history
[root@localhost ~]# !4
ls
anaconda-ks.cfg Desktop install.log install.log.syslog
在下面的例子,输入 !ps 并回车,将执行以 ps 打头的命令:
[root@localhost ~]# history
1 2012-05-20 18:51:56 top -d 1
2 2012-05-20 18:52:05 ps aux
3 2012-05-20 18:52:19 ls -l /var/log/messages
4 2012-05-20 18:52:21 history
[root@localhost ~]# !ps
ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.1 2164 608 ? Ss 17:15 0:02 init [3]
root 2 0.0 0.0 0 0 ? S< 17:15 0:00 [migration/0]
使用 HISTSIZE 控制历史命令记录的总行数
将下面两行内容追加到 .bash_profile 文件并重新登录 bash shell,命令历史的记录数将变成 450 条:
# vi ~/.bash_profile
HISTSIZE=450
HISTFILESIZE=450
[root@localhost ~]# ps
PID TTY TIME CMD
4086 pts/0 00:00:02 bash
12885 pts/0 00:00:00 ps
[root@localhost ~]# ps
PID TTY TIME CMD
4086 pts/0 00:00:02 bash
12886 pts/0 00:00:00 ps
[root@localhost ~]# ps
PID TTY TIME CMD
4086 pts/0 00:00:02 bash
12888 pts/0 00:00:00 ps
[root@localhost ~]# ps
PID TTY TIME CMD
4086 pts/0 00:00:02 bash
36 2012-05-20 18:56:36 ps
37 2012-05-20 18:56:43 history
使用 HISTCONTROL 强制 history 不记住特定的命令
[root@localhost ~]# ps
PID TTY TIME CMD
4086 pts/0 00:00:02 bash
12893 pts/0 00:00:00 ps
[root@localhost ~]# ps
PID TTY TIME CMD
4086 pts/0 00:00:02 bash
12894 pts/0 00:00:00 ps
[root@localhost ~]# history
42 2012-05-20 18:57:46 export HISTCONTROL=ignorespace
43 2012-05-20 18:57:49 ps
如果你想清除所有的命令历史,可以执行:
# history -c
命令替换
在下面的例子里,!$ 将为当前的命令获得上一条命令的参数:
[root@localhost ~]# ls /var/
account cvs empty gdm local log nis preserve run tmp
ls /var/
account cvs empty gdm local log nis preserve run tmp