>USER变量 >LOGNAME变量 >MAIL变量 >PATH变量 >HOSTNAME变量 >HISTSIZE变量 >umask
>调用/etc/profile.d/*.sh文件 3).其它配置文件和登录信息
①.注销时生效的环境变量配置文件 ~/.bash_logout ②.其他配置文件
~/.bash_history ③.shell登录信息
>本地终端欢迎信息:/etc/issue \\d:显示当前系统日期 \\s:显示操作系统名称
\\l:显示登录的终端号,这个比较常用 \\m:显示硬件体系结构,如i286,i686等 \\n:显示主机名 \\o:显示域名 \\r:显示内核版本 \\t:显示当前系统时间
\%u:显示当前登录用户的序列号 >远程终端欢迎信息:/etc/issue.net
转义符在/etc/issue.net文件中不能使用
是否显示此欢迎信息,由ssh的配置文件/etc/ssh/sshd_config决定,加入\行才能显示(记得重启SSH服务) >登录后欢迎信息:/etc/motd
不管是本地登录,还是远程登录,都可以显示此欢迎信息
十一.讲shell编程 1.基础正则表达式
1).正则表达式与通配符
>正则表达式用来在文件中匹配符合条件的字符串,正则是包含匹配.grep,awk,sed等命令可以支持正则表达式.
>通配符用来匹配符合条件的文件名,通配符是完全匹配.ls,find,cp这些命令不支持正则表达式,所以只能使用shell自己的通配符来进行匹配了. 2).基础正则表达式
*:前一个字符匹配0次或任意多次 .:匹配除了换行符外任意一个字符
^:匹配行首.例如:^hello会匹配以hello开头的行 $:匹配行尾.例如:hello&会匹配以hello结尾的行
[]:匹配中括号中指定的任意一个字符,只匹配一个字符.例如:[aoeiu]匹配任
意一个元音字母,[0-9]匹配任意一位数字,[a-z][0-9]匹配小写字和一位数字结构的两位字符.
[^]:匹配除中括号的字符以外的任意一个字符.例如:[^0-9]匹配任意一位非数字字符,[^a-z]表示任意一位非小写字母.
\\:转义符.用于取消将特殊符号的含义取消.
\\{n\\}:表示其前面的字符恰好出现n次.例如:[0-9]\\{4\\}匹配4位数字,[1][3-8][0-9]\\{9\\}匹配手机号码.
\\{n,\\}:表示其前面的字符出现不小于n次.例如:[0-9]\\{2,\\}表示两位及以上的数字.
\\{n,m\\}:表示其前面的字符至少出现n次,最多出现m次.例如:[a-z]\\{6,8\\}匹配6到8位的小写字母. 2.1).例子
grep \【匹配所有内容,包括空白行】 grep \【匹配至少包含有一个a的行】
grep \【匹配最少包含两个连续a的字符串】
grep \【则会匹配最少包含四个连续a的字符串】 grep \aaa.txt【\会匹配在s和d这两个字母之间一定有两个字符的单词】
grep \【匹配在s和d字母之间有任意字符】 grep \【匹配所有内容】
grep \【匹配以大写\开头的行】 grep \【匹配以小写\结尾的行】 grep -n \【会匹配空白行】
grep \【匹配s和i字母中,要么是a,要么是o】 grep \【匹配任意一个数字】
grep \【匹配用小写字母开头的行】 grep \【匹配不用小写字母开头的行】 grep \【匹配不用字母开头的行】 grep \【匹配使用\结尾的行】
grep \【匹配a字母连续出现三次的字符串】 grep \【匹配包含连续的三个数字的字符串】
grep \【匹配最少用连续三个数字开头的行】 grep \【匹配在字母s和字母i之间有最少一个a,最多三个a】
2.字符截取命令
1).cut字段提取命令 cut [选项] 文件名【-f 列号:提取第几列,-d 分隔符:按照指定分隔符分割列】 2).printf命令
printf '输出类型输出格式' 输出内容 输出类型:
%ns:输出字符串.n是数字指代输出几个字符 %ni:输出整数.n是数字指代输出几个数字
%m.nf:位数和小数位数.如%8.2f代表共输出8位数,其中2位是小数,6位是整数
输出格式:
\\a:输出警告声音
\\b:输出退格键,也就是Backpace键 \\f:清除屏幕 \\n:换行
\\r:回车,也就是Enter键
\\t:水平输出退格键,也就是Tab键 \\v:垂直输出退格键,也就是Tab键 3).awk命令---【具体用法建议百度】
①.awk '条件1{动作1} 条件2{动作2}...' 文件名【awk '{printf $2 \$6\】 条件:
一般使用关系表达式作为条件
x>10 判断变量x是否大于10 x>=10 大于等于 x<=10 小于等于 动作:
格式化输出 流程控制语句
②.awk 'BEGIN{printf \world\\n\$2 \$6\temp.txt【BEGIN优先执行一段输出】
③.awk 'END{printf \【所有数据处理完之后,再执行end命令的输出】
④.cat /etc/passwd | grep \\【FS内置变量,指定分隔符】
⑤.cat temp.txt | grep -v name | awk '$6>=87 {printf $2 \【关系运算符】
4).sed命令 ①.sed命令
sed是一种几乎包括在所有UNIX平台(包括Linux)的轻量级流编辑器.sed主要是用来将数据进行选取,替换,删除,新增的命令.
②.sed [选项] '[动作]' 文件名【sed -n '2p' temp.txt】 选项:
-n:一般sed命令会把所有数据都输出到屏幕,如果加入此选择,则只会把经过sed命令处理的行输出到屏幕.
-e:允许对输入数据应用多条sed命令编辑.
-i:用sed的修改结果直接修改读取数据的文件,而不是由屏幕输出. 动作:
a:追加,在当前行后添加一行或多行.添加多行时,除最后一行外,每行末尾需要用\代表数据未完结
c:行替换,用c后面的字符串替换原数据行,替换多行时,除最后一行外,每行末尾需要用\代表数据未完结
i:插入,在当期行前插入一行或多行.插入多行时,除最后一行外,每行末尾需要用\代表数据未完结
d:删除,删除指定的行 p:打印,输出指定的行
s:字串替换,用一个字符串替换另外一个字符串.格式为\行范围s/旧字串/新字串/g\和vim中的替换格式类似) 3.字符处理命令
1).排序命令sort
sort [选项] 文件名 -f:忽略大小写
-n:以数值型进行排序,默认使用字符串型排序 -r:反向排序
-t:指定分隔符,默认是分隔符是制表符
-k n[,m]:按照指定的字段范围排序.从第n字段开始,m字段结束(默认到行尾)
2).统计命令wc
wc [选项] 文件名 -l:只统计行数 -w:只统计单词数 -m:只统计字符数 4.条件判断
1).按照文件类型进行判断【[ -f /tmp/temp.txt ] && echo \|| echo \】 测试选项 | 作用
------------------------------------------------------------------------ -b 文件 |判断该文件是否存在,并且是否为块设备文件(是块设备文件为真) -c 文件 |判断该文件是否存在,并且是否为字符设备文件(是字符设备文件为真)
-d 文件 |判断该文件是否存在,并且是否为目录文件(是目录为真) -e 文件 |判断该文件是否存在(存在为真)
-f 文件 |判断该文件是否存在,并且是否为普通文件(是普通文件为真) -L 文件 |判断该文件是否存在,并且是否为符号链接文件(是符号链接文件为真)
-p 文件 |判断该文件是否存在,并且是否为管道文件(是管道文件为真) -s 文件 |判断该文件是否存在,并且是否为非空(非空为真)
-S 文件 |判断该文件是否存在,并且是否为套接字文件(是套接字文件为真 ) 2).按照文件权限进行判断【[ -r /tmp/temp.txt ] && echo \|| echo \】 测试选项 | 作用
------------------------------------------------------------------------ -r 文件 |判断该文件是否存在,并且是否该文件拥有读权限(有读权限为真) -w 文件 |判断该文件是否存在,并且是否该文件拥有写权限(有写权限为真) -x 文件 |判断该文件是否存在,并且是否该文件拥有执行权限(有执行权限为真)
-u 文件 |判断该文件是否存在,并且是否该文件拥有SUID权限(有SUID权限为真)
-g 文件 |判断该文件是否存在,并且是否该文件拥有SGID权限(有SGID权限为真)
-k 文件 |判断该文件是否存在,并且是否该文件拥有SBit权限(有SBit权限为真)
3).两个文件之间进行比较【[ /tmp/temp.txt -nt /tmp/temp.txt ] && echo \|| echo \】
测试选项 | 作用
------------------------------------------------------------------------ 文件1 -nt 文件2 |判断文件1的修改时间是否比文件2的新(如果新则为真)
文件1 -ot 文件2 |判断文件1的修改时间是否比文件2的旧(如果旧则为真)
文件1 -ef 文件2 |判断文件1是否和文件2的inode号一致,可以理解为两个文件是否为同一个文件.这个判断用于判断硬链接是很好的方法.
4).两个整数之间比较【[ 22 -eq 23 ] && echo \】 测试选项 | 作用
------------------------------------------------------------------------ 整数1 -eq 整数2 |判断整数1是否和整数2相等(相等为真) 整数1 -no 整数2 |判断整数1是否和整数2不相等(不相等为真) 整数1 -gt 整数2 |判断整数1是否大于整数2(大于为真) 整数1 -it 整数2 |判断整数1是否小于整数2(小于为真)
整数1 -ge 整数2 |判断整数1是否大于等于整数2(大于等于为真) 整数1 -le 整数2 |判断整数1是否小于等于整数2(小于等于为真) 5).字符串的判断【[ -z temp ] && echo \】 测试选项 | 作用
------------------------------------------------------------------------ -z 字符串 |判断字符串是否为空(为空返回真) -n 字符串 |判断字符串是否为非空(非空返回真)
字串1 == 字串2 |判断字符串1是否和字符串2相等(相等返回真) 字串1 != 字串2 |判断字符串1是否和字符串2不相等(不相等返回真)
6).多重条件判断【[ -n \】 测试选项 | 作用
------------------------------------------------------------------------ 判断1 -a 判断2 |逻辑与,判断1和判断2都成立,最终的结果才为真 判断1 -o 判断2 |逻辑或,判断1和判断2有一个成立,最终的结果就为真 ! 判断 |逻辑非,使原始的判断式取反 5.流程控制 1).if语句
①.单分支if条件语句
if [ 条件判断式 ];then