2.shell中的用户输入处理
1 命令行参数:选项、参数 2 运行时输入 3 read命令: 4 1.基本读取、 5 2.超时处理-t选项、 6 3.隐藏方式读取-s选项) 7 4.从文件中读取
1 /* 2 ``反引号在Linux shell命令行中有特殊的含义:反引号间的内容,会被shell先执行。其输出被放入主命令后,主命令再被执行。命令替换,即完成引用的命令的执行,将其结果替换出来,与变量替换差不多 3 */ 4 echo `date '--date=1 hour ago' +%Y-%m-%d-%H` 5 echo $(date '--date=1 hour ago' +%Y-%m-%d-%H)
4.setuid
setuid位是让普通用户可以以root用户的角色运行只有root帐号才能运行的程序或命令。
因此当程序设置了setid权限位时,普通用户会临时变成root权限,但实际用户任然是原来的mike。
5.linux文件
/etc/mtab文件的作用:记载的是现在系统已经装载的文件系统,包括操作系统建立的虚拟文件等;
/etc/fstab是系统准备装载的find命令:以递归的方式进行搜索文件或文件夹
6.find命令
1 1 --查找当前目录下所有文件中包含deposit_account的文件 2 2 -- f 普通文件 l 符号连接 d 目录 c 字符设备 b 块设备 s 套接字 p Fifo 3 3 find . -type f -print |xargs grep "deposit_account" 4 4 --查找根目录下名字为create.txt的文件 5 5 find / -name "create.txt" 6 6 --查找根目录下文件大小大于100M的文件 7 7 find / -size +100M 8 8 --使用find查找png和jpg的文件 -o 指定多个-name选项 9 9 find . -name '*.png' -o -name '*.jpg' -type f
7.for循环
1 1 /*for 变量名 in 取值列表({1..100}--1到100依次执行、{1..100..2} --间隔2个) 2 2 do 3 3 命令序列 4 4 done 5 5 --举例*/ 6 6 sum=0 7 7 for ((i=1;i<100;i++)) 8 8 do 9 9 sum=$($i+$sum) 10 10 done 11 11 echo "0-100的和为:" $sum
8.正则表达式
1 1 --行首定位符“^”:用来匹配行首的字符 2 2 --列出etc目录下以po开头的文件 3 3 str='ls /etc |grep "^po"' 4 4 echo "$str" 5 5 ? 6 6 --行尾定位符“$” 7 7 str='ls /etc |grep "conf$"' 8 8 echo "$str" 9 9 ? 10 10 --单个字符匹配“.”:圆点“.”用来匹配任意单个字符,包括空格,但是不包括换行符“\n” 11 11 --列出所有的包含字符串“13”的文件名 12 12 str=`cat dian.txt | grep "13"` 13 13 echo "$str" 14 14 echo "-------------" 15 15 --列出包含字符串'13'以及另外一个字符的文件名 16 16 str=`cat dian.txt | grep "13."` 17 17 echo "$str" 18 18 ? 19 19 --限定符“*”:用来指定其前面的一个字符必须要重复出现多少次才能满足匹配 20 20 str=`ls /etc | grep "^sss*"` 21 21 echo "$str" 22 22 ? 23 23 --字符集匹配“[]” 24 24 /*"[a-f]”表示匹配字母表中a到f中的任意一个字母。 25 25 “[0-9]”表示匹配任意单个数字 26 26 "[^b-d]” 匹配除了从 b 到 d 范围内所有的字符 --取反 27 27 */ 28 28 --筛选所有以字符r开头,并且紧跟着1个字符c的文本行 29 29 str='ls /etc |grep "^rc"' 30 30 echo "$str" 31 31 echo "---------------------" 32 32 --筛选所有以字符r开头,紧跟着1个字符为c,下面1个字符为单个数字的文本行 33 33 str='ls /etc | grep "^rc[0-9]"' 34 34 echo "$str" 35 35 ? 36 36 ? 37 37 --字符集不匹配“[^]”:表示不匹配其中列出的任意字符 38 38 "[^b-d]” 匹配除了从 b 到 d 范围内所有的字符 39 39 ? 40 40 --反斜杠字符 \转义 使这个字符表示原来字面上的意思 41 41 “\$“表示了原来的字面意思”$”,而不是在正则表达式中表达的匹配行尾的意思. 42 42 ? 43 43 --转义(escape) “尖角号” \<...\> 44 44 用于表示单词的边界. 尖角号必须被转义,因为不这样做的话它们就表示单纯的字面意思而已."\<the\>" 匹配单词"the",但不匹配"them", “there”, “other”, 等等.
9.扩展正则表达式
1 1 --限定符“+” :匹配一个或多个前面的字符.和*相似,区别是它不匹配零个字符的情况. 2 2 --筛选以字符串“ss”开头,后面至少紧跟着1个字符“s”的文本行 3 3 str=`ls /etc | egrep "^sss+"` 4 4 echo "$str" 5 5 --输出 6 6 sssd 7 7 ? 8 8 --限定符“?”:限定前面的字符最多只出现1次,即前面的字符可以重复0次或者1次。 9 9 str=`ls /etc | egrep "^sss?"` 10 10 echo "$str" 11 11 --输出 12 12 ssh 13 13 ssl 14 14 sssd 15 15 ? 16 16 --竖线“|” 和圆括号“()”: 17 17 --竖线“|” 表示多个正则表达式之间“或”的关系 18 18 --竖线“|” 表示多个正则表达式之间“或”的关系 19 19 #筛选含有字符串“ssh”、“ssl”或者以字符串“yum”开头的文本行 20 20 #grep -E主要是用来支持扩展正则表达式 21 21 #grep -E =egrep 22 22 str=`ls /etc | egrep "(ssh|ssl|^yum)"` 23 23 echo "$str" 24 24 ? 25 25 ? 26 26 --转义“大括号”{}指示前边正则表达式匹配的次数,