!#:再一次执行历史列表中的第#条命令;
# history .... 72 cat test 73 history # !72 cat test Hello World!!:再一次执行上一条命令;
# cat test Hello World # !! cat test Hello World!STRING:再一次执行命令历史列表中最近一个以指定的STRING开头的命令;
# !cat cat test Hello World显示最近的n条件命令历史:
history #控制命令历史的记录方式:
通过HISTCONTROL环境变量进行,其取值:
ignoredups:忽略重复的命令;重复是指连续且相同的令;
ignorespace:以空白字符开头的命令不记入历史;
ignoreboth:上述两者同时生效;
erasedups:删除重复命令;
修改变量值的方式:
NAME='VALUE' # echo $HISTCONTROL ignoredups # HISTCONTROL="ignoreboth" # echo $HISTCONTROL ignoreboth永久生效存放位置:
存放在 /etc/profile 或 ~/.bash_profile或/etc/profile.d/*.sh
历史命令参数调用:
调用上一条命令的最后一个参数: 快捷键:ESC, . 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 开头的命令,并获取 它的所有参数c、bash的特性之三:内外部命令和命令路径补全
命令补全:
shell程序在接收到用户执行命令的请求且分析完成之后,最左侧字符串将被当作命令去查找;
查找机制:
(1) 查找内部命令;
(2) 查找缓存在内存中的外部命令;
(3) 查找外部命令:
1、去$PATH变量所指定的各路径下,自左而右逐个搜索各目录下的文件名;
2、给定的打头的字符串如果能惟一标识某命令程序文件的文件名,则直接补全;
3、不能惟一标识,再击tab可给列表;
4、错误:没有任何命令可被此打头字符串标识;
type命令用来查看内部外部命令
enable命令:
#enable -n cd 禁用内部命令 #enable cd 激活内部命令使用which或者where查看命令所在的路径
hash命令:
搜寻到的外部命令路径结果缓存至kv(key-value)存储中
hash 显示hash缓存 hash –r 清除缓存,hash -d COMMAND 清空制定的命令
#which --skip-alias cd /usr/bin/cd路径补全:
在给定的起始路径的上级目录下,以对应路径下的打头字符串来逐一匹配上级目标下的每个文件:
惟一标识:tab补全;
不能惟一标识:tab, tab给出列表;
错误路径:没有响应;