一、cut命令
cut
-b ##指定显示字节
-d : ##指定:为分隔符
-f ##指定显示的列 5 第五列
##3,5 3和5列
##3-5 3到5列
##-5 到第5列
##5- 第五列以后
-c ##指定截取的字符(数字用法同-f)
--complement ##反选
--output-delimiter=分隔符 ##指定输出的分隔符
二、sort和uniq
sort
-n ##纯数字排序
-r ##倒序
-u ##去掉重复
-o ##输出到指定文件
-t ##指定分隔符
-k ##指定排序的列
uniq
-c ##合并重复并统计重复个数
-d ##显示重复的行
-n ##显示唯一的行
练习:ls -l 目录 可以显示目录中所有文件的属性
请按照文件大小进行排序并找出最大的两个文件并显示其名称
三种方法如下:
web流量分析
检测apache服务器被谁访问的次数最多,显示访问者ip并显示访问次数
cat /etc/httpd/logs/access_log | cut -d " " -f 1 | uniq -c | grep `cat /etc/httpd/logs/access_log | cut -d " " -f 1 | uniq -c | sort -nr | awk '{print $1}' | head -n 1`
三、tr
tr ##字母的大小写转换
|| ##不符合条件做动作
&& ##符合条件做动作
四、test
test = [] ##[] 相当于test命令
"test $a = $b" = [ "$a" = "$b" ]
------- test的数字对比 ------
test
=
!=
-eq [ "$a" -eq "$b" ] ##等于
-ne [ "$a" -ne "$b" ] ##不等于
-le [ "$a" -le "$b" ] ##小于等于
-lt [ "$a" -le "$b" ] ##小于
-ge [ "$a" -ge "$b" ] ##大于等于
-gt [ "$a" -gt "$b" ] ##大于
------- test的条件关系 ------
test
[ "$a" -ne "$b" -a "$a" -gt "$b" ] ##-a必须条件都满足
[ "$a" -ne "$b" -o "$a" -gt "$b" ] ##-a条件至少满足一个
-a ##并且
-o ##或者
------- test对空的判定 ------
test
-n ##nozero 判定内容不为空
-z ##zero 判定内容为空
------- test对文件的判定 -----
test
-ef ##文件节点号是否一致(硬连)
-nt ##文件1比文件2新
-ot ##文件1比文件2旧
-d ##目录
-S ##套接字
-L ##软连接
-e ##存在
-f ##普通文件
-b ##块设备
-c ##字符设备
检测网络
ping -c1 -w1 172.25.254.$1 &> /dev/null && echo yes || echo no
编写监控脚本
当/使用量超过80%发送警告邮件到root用户的邮箱中
练习:
脚本 file_check.sh 内容如下:
#!/bin/bash
read -p "input test file: " TEST_FILE
[ -z "$TEST_FILE " ] && {
echo "error: not find file , please input test file!"
} || {
[ -e "$TEST_FILE " ] && {
file "$TEST_FILE" | cut -d " " -f 2
} || echo "error: the file not exits. "
}