命令历史:history
删除一条命令历史记录:history -d
显示历史中最近的n条命令:history n
手动追加当前会话缓存区的命令历史至历史文件中:history -a
重复执行历史中的第n条命令:!n
最近一共以指定字符串开头的命令:!string
调用上一条命令的最后一个参数:!$
控制历史命令的记录方式
需要使用到一个环境变量:HISTCONTROL
这个变量有几个值:
ignoredups:忽略重复的命令
ignorespace:忽略空白开头的命令
ignoreboth:以上两种都生效
可以看到我现在使用的值为ignoredups,值得注意的是,这个忽略重复的命令指的是命令连续且相同
更改变量值的方法
export HISTCONTROL='ignorespace'
命令补全
输入命令的前几个字符,按TAB键就可以自动命令补全了,但是有时候命令比较多,前几个字符的重复性很高,这时候就需要按两次TAB键,就可以把对应的命令列表显示出来以供选择
至于为什么会这样,因为bash执行命令有两种,内部命令和外部命令,其中外部命令,bash会根据PATH环境变量定义的路径,从左到右去搜寻以给定命令命名的文件,第一次找到的即为要找到的命令
这个功能的存在不只是为了方便省事,更多的是为了避免出错,所以这里建议多使用TAB键
路径补全
用法和命令补全一样,但是它的补全机制和命令补全有些不同
它是把用户给出的字符串当作路径的开头,并在其指定的目录下搜寻以指定的字符串开头的文件名,如果唯一就会自动补全,如果不唯一,再次按下TAB就会把路径列表显示出来