shell基本命令

解读Shell脚本命令与技术应用
本文深入探讨了Shell脚本的基础命令及其在不同场景中的应用,包括目录操作、文件搜索、替换文本、网络信息获取等。同时,介绍了如何通过Shell脚本来实现自动化任务,如监控磁盘使用情况、检测系统运行状态、执行复杂数据处理等。文章旨在为开发者提供实用的Shell脚本技巧,提升编程效率。

有关文件显示的命令:

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*




转载于:https://my.oschina.net/xxbAndy/blog/322703

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值