有关文件显示的命令:
du --exclude=iso -sh . //统计当前除了iso这个目录的其他文件大小
ls -F //列出的时候每个目录后加了个/ 可执行文件加*
ls -F */ //列出当前所有目录下的所有文件
ls -F |grep /$ //列出所有目录(过滤以/结尾的文件,其实就是目录) $标识以什么结尾, ^表示以什么开头
ls -d */ //列出所有目录
ll -S //按照文件大小排序
#ifconfig br0 | grep inet | awk -F: '{print }' -F指定分隔符 打印出IP
# sed 's/bash/xxbandy/g' hello 批量替换
在vim中批量替换:
:%s/bash/xxbandy/g 全文所有替换
:%s/bash/xxbandy/ 全文每行第一个匹配替换
:1,ns/bash/xxbandy/
# cat hello | awk -F : '{print $NF}' | awk -F / '{print $NF}'
awk 以-F制定分割符号 " " : /
# cat hello | cut -c 5 截取第五个字符
#seq 5 8 排序5-8
for ip in $(seq 1 250)
do echo $ip
done
常用字符shell脚本工具:
先使用sort进行整理数据,uniq统计完成后使用sort -nr进行再次大小排序
#awk '{print $1}' /root/.bash_history | sort | uniq -c | sort -nr | head
只打印非空行(有的行没有列数,就说明空行,使用NF判断打印非空)
# awk -F: 'NF>0 {print NF}' /etc/passwd
打印带有固定标识的信息:
# tail -5 /etc/passwd | awk -F: 'BEGIN {print "用户名\tUID\tCMD"} {print $1"\t"$3"\t"$NF}'
用户名 UID CMD
ovirt 108 /sbin/nologin
jboss 496 /sbin/nologin
vdsm 36 /sbin/nologin
zabbix 495 /sbin/nologin
mysql 27 /bin/bash
注意:使用\t用来制表,将每一列顺序隔开。变量里面的\t必须使用双引号,不然不能识别转移。BEGIN放在标识前面只打印头部标识
# uptime | awk '{print $3}' | sed 's/,//g' | awk -F: '{print "系统运行了:"$1"小时"$2"分"}'
系统运行了:7小时06分
# df -H | grep /$ | awk '{print "磁盘使用了"$5}' //df后过滤出以/结尾的
磁盘使用了91%
# df -H | grep /boot$ | awk '{print "磁盘使用了"$5}'
磁盘使用了32%
注意:$好像标识挂载在根的磁盘大小. $标识以什么结尾;^标识以什么开头
检测根使用情况的脚本
#vim df.sh
#/bin/bash
disk=`df -H | grep /$ | awk '{print $5}' | cut -d % -f1`
if [ $disk -gt 50 ];
then
echo "磁盘使用超过50%,请检查磁!"
else
echo "磁盘空间很大,请放心!"
fi
输出当前监听的端口和服务;(BEGIN表示只在头部输出;在变量$1$2中间的\t必须使用双引号,否则就当字符串处理了)
# netstat -antlp | grep LISTEN | awk '{print $NF}' | awk -F/ 'BEGIN {print "PORT\tservice"} {print $1"\t"$2}'
PORT service
2256 rpc.rquotad
1933 rpcbind
16907 httpd
2609 dnsmasq
ll -F显示所有文件,在目录后会加/,在可执行文件后会加*。使用grep *$过滤 以*结尾的文件就是可执行文件咯
# ll -F | grep *$
-rwxr-xr-x 1 root root 464 Sep 27 21:06 case.sh*
-rwxr-xr-x 1 root root 195 Sep 27 20:48 df.sh*
-rwxr-xr-x. 1 root root 347 May 18 03:59 gennet1*
-rwxr-xr-x 1 root root 204 Sep 24 20:43 ip.sh*