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.