本文最后更新于 427 天前,其中的信息可能已经过时,如有错误请发送邮件到 wuxianglongblog@163.com
保存你输入的命令历史。可以用它来重复执行命令
登录 shell 时,会读取命令历史文件中记录下的命令~/.bash_history
登录进 shell 后新执行的命令只会记录在缓存中;这些命令会用户退出时 “追加” 至命令历史文件中。
| 重复前一个命令使用上方向键,并回车执行 |
| |
| 按 !! 并回车执行 |
| |
| 输入 !-1 并回车执行 |
| |
| 按 Ctrl+p 并回车执行 |
| history [-c] [-d offset] [n] |
| history -anrw [filename] |
| history -ps arg [arg...] |
| -c: 清空命令历史 |
| -d offset: 删除历史中指定的第offset个命令 |
| n: 显示最近的n条历史 |
| -a: 追加本次会话新执行的命令历史列表至历史文件 |
| -r: 读历史文件附加到历史列表 |
| -w: 保存历史列表到指定的历史文件 |
| -n: 读历史文件中未读过的行到历史列表 |
| -p: 展开历史参数成多行,但不存在历史列表中 |
| -s: 展开历史参数成一行,附加在历史列表后 |
| !:0 #执行前一条命令(去除参数) |
| Ctrl + n #显示当前历史中的下一条命令,但不执行 |
| Ctrl + j #执行当前命令 |
| command !^ #利用上一个命令的第一个参数做cmd的参数 |
| command !$ #利用上一个命令的最后一个参数做cmd的参数 |
| command !* #利用上一个命令的全部参数做cmd的参数 |
| command !:n #利用上一个命令的第n个参数做cmd的参数 |
| command !n:^ #调用第n条命令的第一个参数 |
| command !n:$ #调用第n条命令的最后一个参数 |
| command !n:m #调用第n条命令的第m个参数 |
| command !n:* #调用第n条命令的所有参数 |
| command !string:^ #从命令历史中搜索以 string 开头的命令,并获取它的第一个参数 |
| command !string:$ #从命令历史中搜索以 string 开头的命令,并获取它的最后一个参数 |
| command !string:n #从命令历史中搜索以 string 开头的命令,并获取它的第n个参数 |
| command !string:* #从命令历史中搜索以 string 开头的命令,并获取它的所有参数 |
| HISTSIZE:命令历史记录的条数 |
| HISTFILE:指定历史文件,默认为~/.bash_history |
| HISTFILESIZE:命令历史文件记录历史的条数 |
| HISTTIMEFORMAT=“%F %T “ 显示时间 |
| HISTIGNORE=“str1:str2*:… “ 忽略str1命令,str2开头的历史 |
| 控制命令历史的记录方式: |
| 环境变量:HISTCONTROL |
| ignoredups 默认,忽略重复的命令,连续且相同为“重复” |
| ignorespace 忽略所有以空白开头的命令 |
| ignoreboth 相当于ignoredups, ignorespace的组合 |
| erasedups 删除重复命令 |
| export 变量名="值“ |
| #存放在 /etc/profile 或 ~/.bash_profile(想要永久生效,把修改的变量放在这个两个文件中的一个) |
| |
| [root@localhost ~]# echo $HISTSIZE |
| 1000 |
| [root@localhost ~]# echo $HISTFILE |
| /root/.bash_history |
| [root@localhost ~]# echo $HISTFILESIZE |
| 1000 |
| [root@localhost ~]# echo $HISTCONTROL |
| ignoredups |
| [root@localhost ~]# ll /etc/profile |
| -rw-r--r--. 1 root root 1819 Oct 31 2018 /etc/profile |
| [root@localhost ~]# ll .bash_profile |
| -rw-r--r--. 1 root root 176 Dec 29 2013 .bash_profile |
| [root@localhost ~]# |