shell其实是一个命令解释器,它的作用是解释用户输入的命令和程序;
如果我们的命令或者应用程序不在命令行直接执行,而是通过一个程序文件来执行时,这个程序就称为shell脚本。shell脚本里面通常内置了多条命令,有的还包含控制语句,比如if和
else的条件控制语句;这些内置在一个shell脚本中的命令通常是一次性执行完成,不会不停的返回信息给用户,这种通过文件执行脚本的方式称之为非交互方式;
我们可以在文本中输入一系列的命令、控制语句和变量,这一切有机的结合起来就形成了功能强大的shell脚本;
(基本/扩展)正则表达式,用某种模式去匹配一类字符串的公式,它是由一串字符和元字符构成字符串。;
. 任意的一个字符;汉字等(除换行符以外)
*前面字符重复任意次;wang* (wan,wang,wangg,wanggg。。。),(wang)*(wang,wang...)
.*任意长度的任意字符串;
+前面字符重复一次以上;x{1,}; x xx xxx
{n,}至少n次(>=n)
{n}精确n次;\ 用于转义字符;
{m,n}m次到n次
{,n}至多n次
?前面字符0次或1次,可有可无;
^行首;(脱字符号)
$行尾;
词首 \< 或 \b (<,>,用于界定单词的左边界和右边界)
词尾 \> 或 \b
[]符号用于匹配方括号内出现的任意字符;[wang] 任意一个字符w a n g;\d 匹配一个数字,等价于[0-9]
“\d”是一种Perl兼容模式的表达式,又称作 PCRE,要想使用这种模式的匹配符,需要加上-P参数
[^.]除了.的其它的任意一个字符
[:alpha:]
a|bxy a或bxy
(a|b)xy axy 或 bxy
(expr1) (expr2) \1 \2
cut
diff
patch -b
wc
sort
uniq
head
tail
tac;cat;
more;less;paste;netstat;
` (后引号、斜引号);如,a=`ls -l`;表示把ls -l作为命令来执行,执行的结果赋值给a;
vim ex模式下输入 :%s/xyz/&er/g (xyz替换成xyzer,g表示一行里替换多个xyz,不加g 则只替换一个xyz) (&,表示前面搜索出来的字符)
vim 命令模式,插入模式(a,i,o),ex模式(底行模式,vim a.sh就可以操作);
grep -o;只要数字;
扩展正则表达式grap -E 或egrep
0-9 10-99 100-199 200-249 250-255
[0-9] [1-9][0-9] 1[0-9][0-9] 2[0-4][0-9] 25[0-5]
ifconfig |egrep -o "(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])"
上图是字符串比较;
判断.sh
创建用户
seq(sequeue,序列),主要用来输出序列化的东西;-s 使用指定字符串分割数字(默认\n)
paste命令用户合并文件的行;它可以合并一个文件或多个文件的行;
-d 指定各个文件在合并时,使用的分隔符;
-s 顺序的合并文件,每个文件中所有内容合并为一行;
wc;word count
10行 13个单词(以空格区别)
ls |wc; wc --help;
wc -l /etc/passwd(查看多少行,查看多少个账号)
cut取列;sort取列,然后进行排序;
sort -t: -k3 /etc/passwd(按照字符排序)
sort -t: -k3 -n /etc/passwd(按照数字升序排列)
sort -t: -k3 -nr /etc/passwd (根据passwd中第3列,按照数字倒序排列)
tr (translate)主要用于删除文件中的控制字符,或进行字符转换;
如下图;将空格使用';'替代;
cut用来从标准输入或文本文件中剪切列或域;-d指定不同列的分割符;-f 1剪切第1域/列;
sort以行为单位对文本进行排序;-n 根据字符串数值进行排序;-r 反向输出排序结果;
head 可以将一段文本的开头的一部分输出到标准输出;默认前10;-n25输出前25行;
统计远程主机登录次数的前三个ip
grep;文本,行过滤工具;