版权声明:本文为博主原创文章,码字不易,转载请标明出处。 https://blog.csdn.net/yue530tomtom/article/details/81746539
整理这两年写的shell脚本,归纳一些常用的命令或工具,其中有些项展开不是一篇两篇能说清楚的,在此粗粒度一笔带过不做深入介绍,只是从之前写的脚本中和平时工作中总结常用命令
像什么cd 啊 ls 啊太基础的直接忽视
- 正则表达
正则表达式使得linux命令更加强大灵活,必须必掌握的 - |
管道符号的应用,使得省去很多中间变量,shell变得更加简洁,同时也给排查问题带来了一定的难度,请适量合理地使用 - 数组
一种数据结构,在shell经常使用,特别是bash4.0+对关联数组的支持 - find -exec
find -exec只能接受一个命令,无法在一个-exec中使用多个命令,but 可以将多个命令写入到脚本中,使用-exec执行脚本 - 临时文件命令mktemp
默认创建的文件在/tmp目录中,还可以使用该命令创建文件夹 mktemp -d - awk
处理文本的利器,提取、统计的强者 - sed
文本处理的另外一个利器 - grep
筛选的的常用工具,配合awk或sed使用 使彼此都更加强大 - cut
文本处理,按列、按域切分 - sort
- uniq
- tac
- split
切割文件,在测试的时候,对于参数化文件进行处理分割比较常用,按大小-b(常用单位k/M/G/c/w) 按行-l 等切分,还有一个比较常用的参数-d 一般都需要有规律的文件名称默认是使用字母,显式指明-d会使用数字命名可以指定后缀的长度-a
split -b 100k fileName
split -l 100 fileName
split -b 100k -d -a 5
split -b 100k -d -a 5 prefix
- csplit工具
可以根据上下文来分割文件,是对split的补充
csplit fileName /[REGEX]/ -n 10 -s {*} -f prefix -b "%05d.log"
/[REGEX]/:描述文本模式,从第一行一直复制到匹配行,但不包括匹配行
{*}:匹配重复执行的操作,直到文件末尾
-s命令进入静默模式,不打印其他信息
-n指定后缀数字的个数
-f指定前缀
-b指定后缀格式
- comm命令
比较两个已经排序的文件,它可以显式出第一个文件和第二个文件所独有的行以及这两个文件所共有的行
comm filea fileb
第一列:filea独有的行
第二列:fileb独有的行
第三列:filea和fileb共有的行
技巧:删除显式的列 -1不显示第一列 -2不显示第二列 -3不显示第三列
比如:删除filea和fileb共有列并合并
comm filea fileb -3| tr -d '\t'
求filea差集
comm filea fileb -2 -3
- touch
生成空白文件和修改已有文件时间戳
比如批量生成空白文件等
for fileName in {1..10}.txt
do
touch $fileName
done
- 显式文件头尾
tail -n /head -n - tree
显式树目录 - wget
需要认证的http和ftp
wget --user user --password pass URL
若不指定密码可以将--password换成--ask-password
断点续传
wget -c URL
复制整个网络,类似爬虫
wget --mirror --convert-links URL
- curl
下载和发送http请求
断点续传
curl URL/file -C offset
偏移量以字节为单位,如果只希望断点续传不需要指定offset,会自动计算
设置cookies
curl URL --cookie "key=val……"
将cookie转储为文件
curl URL --cookie-jar cookieFile
认证
curl -u user:pass URL
只显示头,这个做业务的连通性验证比较有用
curl -I URL
- ping活着的主机
#!/bin/bash
for Host in 10.255.254.[1..255]
do
(
ping $Host -c 2 &> /dev/null;
if [ $? -eq 0 ]
then
echo $Host is alive
fi
)&
done
wait
- fping
比ping 更简洁的办法
-a列出所有活动的主机
-u列出所有不可达主机
-g ip/子网掩码 - lsof
强大的命令,查看进程相关文件句柄等 - time
可以做统计耗时使用 - watch
按照指定的时间间隔执行命令,持续监控时比较有用
watch cmd
cron
编辑定时任务和查看定时任务
crontab -e /crontab -lsreen
比较魔性的一个工具,可以创建多个虚拟终端,并可以唤醒到前台和放入后台,在一定程度上可以完成一定的自动化操作tcpdump
- dstat
- sysstat
一系列命令 - percona
一系列命令 - jvm自带
jvm自带检查命令 - git
一系列命令 - greys
比较强大的字节码工具 - warp
一个管理ssh登录的脚本工具