先来点shell script的初步:
shell 脚本使用#! 开头,后跟解释器的路径
给脚本文件赋予可执行属性: chmod u+x test.sh
执行shell 脚本:./[脚本名]
或者直接: bash 脚本
ls -l /etc/sh*命令 选项
参数使用;可以在同一行写多条语句
edemon@linux:~$ cat tt #!/bin/bash echo "the time is " date echo here is : who edemon@linux:~$ bash tt the time is 2016年 04月 29日 星期五 08:58:57 CST here is : edemon tty7 2016-04-29 16:44 (:0) edemon@linux:~$ chmod u+x tt edemon@linux:~$ ./tt the time is 2016年 04月 29日 星期五 08:59:30 CST #它和编译生成的二进制文件不同: edemon@linux:~$ gcc t.c -o exec edemon@linux:~$ ./exec hello! edemon@linux:~$ ls -l |grep exec -rwxrwxr-x 1 edemon edemon 8592 4月 29 09:01 exec edemon@linux:~$ cat exec ELF>0@@�@8 @@@@@@��88@8@@@�� ``(0 #乱码元字符:描述字符的字符 正则表达式regular expression (RE,正则表达式) 用于文本操作和字符串的操作,用于数据过滤的操作。 几个重要的元字符: * 重复前面的字符0次或者多次 . 匹配任意字符 ^ 匹配行首,或者后面字符的非 $ 匹配行尾 [] 匹配字符集和 \ 转义字符 \<\> 精确匹配 \<n\> 精确匹配前面字符出现n次 \<n,\> 精确匹配前面的字符至少出现n次 \<n,m> 精确匹配前面的字符出现n~m次 例子: ^abs 匹配abs开头的行 vs* 这些字符串均匹配它:vss,vs,vssss cv$ 匹配行尾是cv的所有的行 ^$ 匹配所有的空行 ^.$ 匹配一个字符的行 [0123456789] [0-9] 上面两个表达式的意义是一样的,匹配任意一个0~9的阿拉伯数字 [^3-8] 不再3~8内的数字 [A-Za-z][A-Za-z]* 匹配任意一个英文单词(非空) cb\<3\>a cbbba cb\<3,\>a cbbbbba,cbbba,cb\<3,5\>a b可以重复3~5次 [a-z] \<3\> 精确匹配3个小写字符 通配中的元字符和正则表达式中的元字符的含义不是完全一样的。比如*在正则表达式中的含义是前面字符的0个或者多个重复,在通配中是任意位置的任意字符; ^在正则表达式中是行首匹配,在通配中是取反。 通配例子: edemon@linux:~$ ls *.tex texmaker.tex edemon@linux:~$ ls my*.doc mycode2.doc mycode.doc edemon@linux:~$ ls mycode?.doc mycode2.doc {}表达匹配{}内的所有的选项,即“条件或”的关系: edemon@linux:~$ ls {tex,.java} texmaker.tex t.java