bash特性一:命令历史:
shell进程会在其会话中保存此前用户提交执行过的命令:
history
定制history
的功能,可通过命令历史相关环境变量实现:
history命令用法:
history [-c] [-d offset] [n] history -anrw [filename] history -ps arg [arg...] -c: 清空命令历史 -d offset: 删除历史中指定的第offset个命令 n: 显示最近的n条历史 -a: 追加本次会话新执行的命令历史列表至历史文件 -r: 读历史文件附加到历史列表 -w: 保存历史列表到指定的历史文件 -n: 读历史文件中未读过的行到历史列表 -p: 展开历史参数成多行,但不存在历史列表中 -s: 展开历史参数成一行,附加在历史列表后 !!:执行上一条命令 string 重复前一个以“string”开头的命令 !?string 重复前一个包含string的命令 !string:p 仅打印命令历史,而不执行 !$:p 打印输出 !$ (上一条命令的最后一个参数)的内容 !*:p 打印输出 !*(上一条命令的所有参数)的内容 ^string 删除上一条命令中的第一个string ^string1^string2 将上一条命令中的第一个string1替换为string2 !:gs/string1/string2 将上一条命令中所有的string1都替换为 string2 使用up(向上)和down(向下)键来上下浏览从前输入的命令 ctrl-r来在命令历史中搜索命令 (reverse-i-search)`’: Ctrl+g:从历史搜索模式退出 要重新调用前一个命令中最后一个参数: !$ 表示 Esc, .(点击Esc键后松开,然后点击 . 键) Alt+ .(按住Alt键的同时点击 . 键)
控制命令历史的记录方式:
环境变量:HISTCONTROL
bash特性二:tab补全功能:
命令补全:
1)查找内部命令;
2)查找外部命令:bash根据PATH环境变量定义的路径,自左而右在每个路径搜寻以给定命令名命名的文件;
第一次找到的命令即为要执行的命令,用户给定的字符串只有一条惟一对应的命令,直接补全,否则,再次Tab会给出列表。
[root@centos7~]#echo $PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin 目前以后的PATH变量路径 [root@centos7~]#wh 输入wh后按tab键,如果唯一就会补全,不唯一再按tab键就会显示多个命令 whatis whereis which while whiptail who whoami
bash特性三:命令行展开:
[root@centos7data]#mkdir -p test{1,2}/{a,b{x,y}} [root@centos7data]#tree . ├── test1 │ ├── a │ ├── bx │ └── by └── test2 ├── a ├── bx └── by 通过tree能够展示当前data目录下有多少个子目录。
bash特性四:历史命令执行的结果状态
bash通过状态返回值来输出此结果:
成功:0
失败:1-255
命令执行完成之后,其状态返回值保存于bash的特殊变量$?中;
命令正常执行及其功能不同,结果各不相同;
引用命令的执行结果:
$(command),如:mkdir $(date +%H-%M-%S),即引用date运行结果来执行命令,即创建date运行结果得到的数值的文件夹
‘command‘
[root@centos7data]#date 当命令执行正确时 Sun Oct 27 21:01:14 CST 2019 [root@centos7data]#echo $? 0 echo $?就会显示0,默认命令执行状态正确
[root@centos7data]#date -sss 当命令输入错误时 date: invalid date ‘ss’ [root@centos7data]#echo $? 1 echo $? 执行结果就是1,表示当前命令执行状态错误
bash特性五:引用:
[root@centos7~]#echo "$PATH" 弱引用,可以识别到里边的命令变量 /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin [root@centos7~]#echo ‘$PATH‘ 强引用就会将里边的命令当初字符串进行打印 $PATH [root@centos7~]#echo `echo $PATH` 反向单引号,引用命令,因此需要echo $PATH完整的命令才行,才会进行正确打印 /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
bash特性六:快捷键
注意:Alt组合快捷键经常和其它软件冲突
bash特性七:别名
显示当前shell进程所有可用的命令别名:alias
定义别名NAME,其相当于执行命令VALUE:
在命令行中定义的别名,仅对当前shell进程有效;
如果想永久有效,要定义在配置文件中
仅对当前用户:~/.bashrc
对所有用户有效:/etc/bashrc
bash特性八:通配符
* 匹配零个或多个字符 ? 匹配任何单个字符 ~ 当前用户家目录 ~mage 用户mage家目录 ~+ 当前工作目录 ~- 前一个工作目录
[0-9] 匹配数字范围 [a-z]:小写字母 [A-Z]:大写字母 [wang] 匹配列表中的任何的一个字符 [^wang] 匹配列表中的所有字符以外的字符
预定义的字符类:man 7 glob
[[:upper:]]匹配任意大写字母 [[:lower:]]匹配任意小写字母 [[:alpha:]]匹配所有字母 [[:digit:]]匹配所有数字 [[:alnum:]]匹配所有的字母和数字 [[:space:]]匹配所有空白字符 [[:punct:]]匹配所有标点符号
[^]:匹配指定范围外的任意单个字符:
[^[:upper:]]除大写字母以外任意字符
[^[:lower:]]除小写字母以外任意字符
[^[:alpha:]]除字母以外任意字符
[^[:digit:]]除数字以外任意字符,或者[^0-9]
[^[]:alnum:]除字母和数字以外的任意字符(即符号)
[^[:space:]]匹配所有空白字符
[root@centos7data]#ls [^[:digit:]]*[0-9] -d 显示以非数字开头以数字结尾的文件 test1 test2
原文:https://www.cnblogs.com/struggle-1216/p/11749172.html