Linux-bash的基础特性 (2)

Linux-bash的基础特性 (2)

说明

Shell 是 Linux 的命令解释器,简单来说,可以理解为 Linux 系统提供给用户的使用界面,而 Linux 的 Shell 是 Bash。
本文给大家讲解bash中的通配符和管道符

通配符介绍

1. ?

 匹配一个任意字符
 示例:zhangwei@iZm5eiw4hobozjn054cjzrZ:~/data/www/test_www$ find ./ -name 'a?.text'
./ac.text
./ab.text
 当前目录下查找以a开头,后边一个字符以任意字符,以.text为后缀的文件

2. *

匹配 0 个或任意多个任意字符,也就是可以匹配任何内容
示例:zhangwei@iZm5eiw4hobozjn054cjzrZ:~/data/www/test_www$ find ./ -name 'a*.text'
./ac.text
./ab.text
./a.text

###3. [] ###

匹配中括号中任意一个字符。例如,[abc] 代表一定匹配一个字符,或者是 a,或者是 b,或 者是 c
 示例:zhangwei@iZm5eiw4hobozjn054cjzrZ:~/data/www/test_www$ find ./ -name 'a[bc].text'
./ac.text
./ab.text

###4. [-] ###

匹配中括号中任意一个字符,- 代表一个范围。例如,[a-z] 代表匹配一个小写字母
 示例:zhangwei@iZm5eiw4hobozjn054cjzrZ:~/data/www/test_www$ find ./ -name 'a[a-z0-9A-Z].text'
./a1.text
./ac.text
./ab.text
./aA.text

5. [^]

逻辑非,表示匹配不是中括号内的一个字符。例如,[^0-9] 代表匹配一个不是数字的字符
示例:zhangwei@iZm5eiw4hobozjn054cjzrZ:~/data/www/test_www$ find ./ -name 'a[^a-z].text'
./a1.text
./aA.text

专用字符合集

 [:digit:],任意数字,相当于0-9
 [:lower:],任意小写字母
 [:upper:],任意大写字母
 [:alpha:],任意大小写字母
 [:alnum:],任意数字或字母
 [:space:],空格符号
 [:punct:],标点符号 

练习

1.显示/var目录下所有以l开头,以一个小写字母结尾,且中间出现至少一位数字的文件或目录
touch  /tmp/labc8m;ls  -d  /tmp/1*[0-9]*[[:lower:]]
2.显示/etc目录下,以任意一位数字开头,且以非数字结尾的文件或目录
ls  -d  /etc/[0-9]*[^0-9]
3.显示/etc目录下,以非字母开头,后面跟了一个字母及其它任意长度任意字符的文件或目录
ls  /etc/[^[:alpha:]][[:alpha:]]*
4.复制/etc目录下,所有以m开头,以非数字结尾的文件或目录至/tem/mageedu目录中
ls  /etc/m*[^0-9];cp  -a  /etc/a*[^0-9]  /tmp/mageedu
5.复制/etc目录下,所有以.d结尾的文件或目录至/tem/magedu.com目录中
ls  -d  /etc/*.d;cp  -a  /etc/*.d  /tmp/magedu.com
6.复制/etc目录下,所有.conf结尾,且以m,n,r,p开头的文件或目录至/tmp/magedu.com目录中
ls  /etc/[snrp]*.conf;cp  -a  /etc/[mnrp]*.conf  /tmp/magedu.com

管道符 |

在 Bash 中,管道符使用"丨"代表。

管道符也是用来连接多条命令的,如"命令1丨命令2"。不过和多命令顺序执行不同的是,用管道符连接的命令,命令 1 的正确输出作为命令 2 的操作对象。
这里需要注意,命令 1 必须有正确输出,而命令 2 必须可以处理命令 1 的输出结果;而且命令 2 只能处理命令 1 的正确输出,而不能处理错误输出。
Note:最后一个命令会在当前shell进程的子shell进程中执行

练习

1.将/etc/passwd文件中的前5行内容转换为大写后保存至/tmp/passwd.out文件中
head  -n  5  /etc/passwd  |  tr  'a-z'  'A-Z'  >  /tmp/passwd.out
2.将登录至将前系统上用户信息中的后3行的信息转换为大写后保存至/tmp/who.out文件中        
who  |  tail  -n  3  |  tr  'a-z'  'A-Z'  >  /tmp/who.out

结尾

There is something inside ,that they can't get to , that they can't touch. That's yours.

添加新评论