|
在使用linux的时候,经常使用命令行控制操作系统,linux shell具有history功能,即会记录已经执行过的命令,那么有效的使用命令历史机制将会使工作效率得到极大的提升。 Linux系统当你在shell(控制台)中输入并执行命令时,shell会自动把你的命令记录在缓存中,可以用它来重复执行命令,这些命令会在用户退出时追加至历史文件中,一般保存在用户家目录下.bash_history文件中。默认保存1000条,也可以更改这个值。当用户再次登录shell时,会自动读取历史文件中记录下来的命令
history命令主要用于显示历史指令记录内容 ,下达历史记录中的指令。
语法: history [-c] [-d offset] [n]
history -anrw [filename]
history -ps arg [arg...]
选项: -c: 清空命令历史
-d: 删除历史中指定的命令;
#: 显示最近的#条历史
-a: 追加本次会话新执行的命令历史列表至历史文件
-n: 读历史文件中未读过的行到历史列表
-r: 读历史文件附加到历史列表
-w: 保存历史列表到指定的历史文件
-p: 展开历史参数成多个行,但不存在历史列表中
-s: 展开历史参数成一行,附加在历史列表后
命令行的历史记录有许多快捷使用的方法,熟练使用这些方法将极大提高工作效率:
重复使用命令:
重复前一个命令,有4种方法:
- 重复前一个命令使用上方向键,并回车执行。
- 按 !! 并回车执行。
- 输入 !-1 并回车执行。
- 按 Ctrl+p 并回车执行。
!字符串 :重复前一个以“字符串”开头的命令
!num :按照history命令输出中的序号重复对应命令
!?字符串 :重复前一个包含"字符串"的命令
!-n :重复n个命令之前的那个命令
使用up(向上)和down(向下)键来上下浏览从前输入 的命令
键入ctrl-r来在命令历史中搜索命令
(reverse-i-search)`’:
重复使用参数:
要重新调用前一个命令中最后一个参数:
- !$ ($表示最后)
- Esc, .(点击Esc键后松开,然后点击 . 键)
- Alt+ .(按住Alt键的同时点击 . 键)
调用历史参数:
#cmd !^ : 利用上一个命令的第一个参数做cmd的参数
#cmd !$ : 利用上一个命令的最后一个参数做cmd的参数
#cmd !* : 利用上一个命令的全部参数做cmd的参数
#cmd !:n : 利用上一个命令的第n个参数做cmd的参数
调用历史命令中的历史参数
!n:^ 调用第n条命令的第一个参数
!n:$ 调用第n条命令的最后一个参数
!m:n 调用第m条命令的第n个参数
!n:* 调用第n条命令的所有参数
!string:^ 从命令历史中搜索以 string 开头的命令,并获取 它的第一个参数
!string:$ 从命令历史中搜索以 string 开头的命令,并获取它 的最后一个参数
!string:n 从命令历史中搜索以 string 开头的命令,并获取 它的第n个参数
!string:* 从命令历史中搜索以 string 开头的命令,并获取 它的所有参数
历史命令也有很多环境变量,这些变量一般都存放在/etc/profile文件或用户家目录下的.bash_profile文件中。这些变量分别为:
HISTSIZE:命令历史记录的条数;
HISTFILE:指定历史文件,默认为~/.bash_history;
HISTFILESIZE:命令历史文件记录历史的条数;
HISTTIMEFORMAT="%F %T" 显示时间
HISTIGNORE="str1:str2:… " 忽略string1,string2历史
控制命令历史的记录方式:环境变量:HISTCONTROL
ignoredups:忽略重复的命令;连续且相同方为“重复”
ignorespace:忽略所有以空白开头的命令
ignoreboth:ignoredups, ignorespace
erasedups:删除重复命令
如/etc/profile文件中定义了一些变量
可以修改这些变量以达到自己想要的结果
如:想要历史命令记录时间,就可以在定义HISTTIMEFORMAT="%F %T"
若要变量永久生效就要写入配置文件中,如,我们可以写在自己家目录下的.bash_profile中。这样就永久生效。当然写入/etc/profile中也是永久生效,但是是对服务器上所有用户都生效。
能够熟练的使用历史命令,可以让我们很方便地编辑前面的某一条命令,而不用重复输入类似的命令。History命令的用途确实很大!但需要小心安全的问题!尤其是 root 的历史纪录档案,这是黑客们的最爱!因为不小心的 root 会将很多的重要资料在执行的过程中会被纪录在 ~/.bash_history 当中,如果这个档案被解析的话,后果不堪设想!
|
|