shell 学习之正则、别名以及管道重定向
一、linux的文件类型:类型 标识符 颜色
档案file: - 白色
目录directory: d 蓝色
字符设备character: c 黄色
块设备block: b 黄色
管道 pipe: | 黄色
链接设备linek: ln 蓝--绿
socket: s
二、别名设置和取消
ualias撤销别名使用
ualias cmdalias
命令别名和命令本身的时候 \cmd
#设置进入网络编辑目录的别名
# alias cdnet='cd /etc/sysconfig/network-scripts/'
#使用别名
# cdnet
#
# alias cdnet='cd /etc/sysconfig/network-scripts/'
# cd cdnet
-bash: cd: cdnet: 没有那个文件或目录
# cd cdnet
-bash: cd: cdnet: 没有那个文件或目录
# cdnet
#
取消别名设置
#取消别名设置
# unalias cdnet
# cd -
/home/scripts/51cto
#再次验证别名是否还存在
# cdnet
-bash: cdnet: command not found
三、管道、重定向
系统设定
默认输出设备标准输出 stdout 1
显示器
默认输入设备标准输入 stdin 0
键盘
标准错误输出stderr 2
> 输出重定向原有内容丢失 覆盖输出
< 输入重定向原有内容丢失 覆盖输入
>> 追加输出保留文件中原有内容
| 强制 输出重定向
2> 重定向错误输出
&>:重定向标准输出或错误输出到同一个文件
1>&2 正确返回值传递给2输出通道 &2表示2输出通道
2>&1 错误返回值传递给1输出通道, 同样&1表示1输出通道.
#2>&1是网上使用最广泛的一个示例
# cenet > info.tt 2>&1
#查看info.tt文件内容
# cat info.tt
-bash: cenet: command not found
四、文件名通配
文件名通配 gloabbing
*匹配任意长度的字符,可以是空字符串
? 匹配一个字符,但不可为空
\ 可以做转义使用,也可作为续行符号
[] 匹配一个序列中的任意一个
选择其中的任意一个
[^]取反的意思
[^0-9] 除了0-9之外的任意单个字符
[[:space:]] 所有的空白字符
[[:punct:]] 标点符号
[[:lower:]] 小写字母也可用 表示
[[:upper:]] 大写字母 也可用表示
[[:alpha:]]大小写字母 也可用表示
[[:digit:]]数字也可用表示
[[:alnum:]]数字和大小写字母 也可用表示
五、正则表达式
基本正则表达式:
. 匹配任意单个字符
[^] 匹配指定范围外的任意单个字符 不需要转义
[]匹配指定范围内的任意单个字符,不需要转义
^ 匹配行首
$ 匹配行尾
\? 匹配前面出现字符的0个或1个字符
* 匹配前面的字符任意次数
.*匹配任意长度的任意字符
\{m,n\} 匹配其前面的字符至少m次,至多n次,需要转义
\(\) 后向引用
\<= \b其后面的任意字符必须作为单词首部出现
\> = \b其前面的任意字符必须作为单词的尾巴出现
^$空白行
扩展正则表达式:
字符匹配:
.匹配任意单个字符
[] 匹配指定范围内的任意单个字符,不需要转义
[^]匹配指定范围外的任意单个字符 不需要转义
次数匹配:
* 匹配前面的字符任意次数
?匹配前面出现字符的0个或1个字符 不需要转义
+ 其前字符至少一次
{m,n}匹配其前面的字符至少m次,至多n次 不需要使用\转义
位置牟定:
^ 匹配行首
$ 匹配行尾
^$空白行
\> 其前面的任意字符必须作为单词的尾巴出现
\< 其后面的任意字符必须作为单词首部出现
分组:
()不需要再进行转义
\1,\2,\3....
或者:
| or
a|b a或者b
示例脚本(暂时未列出...):
页:
[1]