Linux之bash shell特性(2)

!#:再一次执行历史列表中的第#条命令;

# 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给出列表;

错误路径:没有响应;

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/14375.html