bash的基础特性之命令历史:
命令历史:shell进程会在其会话中保存此前用户提交执行过的命令
~]#history
定制history的功能,可通过环境变量实现
HISTSIZE:shell进程可保留的命令历史的条数
HISTFILE:持久保存命令历史的文件, “.bash_history”
HISTFILESIZE:命令历史文件的大小
命令用法:
history [-c] [-d offset] [n]
or history -anrw [filename]
or history -ps arg [arg…]
命令常用选项:
-c:清空命令历史
-d offset:删除指定命令历史
-r:从文件读取命令历史至历史列表中
-w:把历史列表中的命令追加至历史文件中
history +数字:显示最近的“数字”条命令
调用命令历史列表中的命令:
!+数字:再一次执行历史列表中的第“数字”条命令
!!:再一次执行上一条命令
!STRING:再一次执行命令历史列表中最近一个以STRING开头的命令
注意:命令的重复执行有时候需要依赖于幂等性
调用上一条命令的最后一个参数:
快捷键:ESC ,.
字符串:!$
控制命令历史记录的方式:
环境变量:HISTCONTROL
ignoredups:忽略重复的命令
ignorespace:忽略以空白字符开头的命令
ignoreboth:以上两者同时生效
修改变量的值: NAME=’VALUE’,此修改只对当前shell有效
bash的基础特性之命令补全:
命令补全:shell程序在接收到用户执行命令的请求,分析完成之后,最左侧的字符会被当作命令
命令查找机制:
查找内部命令
根据PATH环境变量中设定的目录,自左而右逐个搜索目录下的文件名
给定的打头字符串如果能唯一标识某命令程序文件,则直接补全;
给定的打头字符串如果不能唯一标识某命令程序文件,再击tab键一次,会给出列表
路径补全:
在给定的起始路径下,以对应路径下的打头字符串来逐一匹配起始路径下的每个文件
tab:如果能唯一标识某命令程序文件,则直接补全;如果不能唯一标识某命令程序文件,再击tab键一次,会给出列表
bash的基础特性之命令行展开:
~:自动展开为用户的家目录,或指定用户的家目录
{}:可承载一个以逗号分隔的路径列表,并能够将其展开为多个路径
例如:/tmp/{a,b}相当于/tmp/a /tmp/b
bash的基础特性之命令的执行状态结果
命令执行的状态结果:
bash通过状态返回值来输出此结果
成功:0
失败:1-255
命令执行完成之后,其状态返回值保存于bash的特殊变量”$?”中, ~]#echo $?
命令正常执行时,有的还会有命令返回值,根据命令及其功能不同,结果各不相同
引用命令的执行结果:
$(COMMAND) 或`COMMAND`
bash的基础特性之引用:
强引用:‘’
弱引用:“”
命令引用:“(~位置)
bash的基础特性之快捷键:
Ctrl+a:跳转至命令行行首
Ctrl+e:跳转至命令行行尾
Ctrl+u:删除行首至光标所在处之间的所有字符
Ctrl+k:删除光标所在处至行尾的所有字符
Ctrl+l:清屏,相当于clear命令
bash的基础特性之globbing(文件名通配机制):
globbing:文件名通配机制(整体文件名匹配,而非部分)
匹配模式:元字符
*:匹配任意长度的任意字符
pa*:以pa开头的所有文件
*pa*:文件名包含pa的文件
*pa:以pa结尾的文件
?:匹配任意单个字符
pa?:匹配以pa开始的下一个为p或a中任意一个的文件
[]:匹配指定范围内的任意单个字符
有几种特殊格式:
[a-z],[A-Z],[0-9],[a-z,0-9]
[[;upper;]]:所以大写字母
[[;lower;]]:所有小写字母
[[;alpha;]]:所有字符
[[;digit;]]:所有数字
[[;alnum;]]:所有的字母和数字
[[;sapce;]]:所有的空白字符
[[;punct;]]:所有标点符号
[^]:匹配指定范围外的任意单个字符
[^[;upper;]]:所有非大写字母
pa[0-9][0-9], 2[0-9][0-9](表示200-299的数字)
练习1:显示/var目录下所有以l,以小写字母结尾,且中间出现一位任意字符的文件或目录
ls -d /var/l?[[;lower;]]
练习2:显示/etc目录下,以任意一位数字开头,且以非数字结尾的文件或目录
ls -d /etc/[0-9]*[^0-9]
练习3:显示/etc目录下,以非字母开头,后面跟一个字母及其任意长度任意字符的文件或目录
ls -d /etc/[^a-z][a-z]*
练习4:复制/etc目录下,所有以m开头,以非数字结尾的文件或目录至/tmp/magedu.com目录
cp -r /etc/m*[^0-9] /tmp/magedu.com
练习5:复制/usr/share/man目录下,所有以man开头,后跟一个数字结尾的文件或目录至/tmp/man目录下
cp -r /usr/share/man/man[0-9] /tmp/man
练习6:复制/etc目录下,所有以.conf结尾,且以m,n,r,p开头的文件或目录至/tmp/conf.d目录下
cp -r /etc/[mnrp]*.conf /tmp/conf.d
bash特性之命令hash:
bash的特性之变量:
bash特性之多命令执行:
本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/101835