读书人

惯用的shell脚本

发布时间: 2012-07-30 16:19:05 作者: rapoo

常用的shell脚本
1、脚本之间传递参数 "1.sh"的脚本,接受参数。如下,如果有一个参数则赋值个sourceFile这个变量,否则用默认值。

 
备注:这里$#是传递参数的个数,$1 是具体的参数。

关于if else:
如果两条命令写在同一行则需要用";"号隔开,一行只写一条命令就不需要写";"号了。和[命令一样,要注意命令和各参数之间必须用空格隔开。if命令的参数组成一条子命令,如果该子命令的Exit Status为0(表示真),则执行then后面的子命令,如果Exit Status非0(表示假),则执行elif、else或者fi后面的子命令。if后面的子命令通常是测试命令,但也可以是其它命令。Shell脚本没有{}括号,所以用fi表示if语句块的结束。

"2.sh"的脚本,传递参数
 

4、判断文件是否存在,有则删除
 

5、找出文件中的相关行
 
备注:把文件中包含关键词的行输出到result.log中。

6、文件切分
 
备注:多个关键字用“\|”分隔。

9、时间格式化,中间有空格的需要加引号
 

11、运行java项目
 
备注:“$FILE”表示要统计的文件,“关键字”要包含的关键字,“wc”统计文件(-l行数,-w字数,-c字节数)
wc命令的功能为统计指定文件中的字节数、字数、行数, 并将统计结果显示输出。
语法:wc [选项] 文件…
说明:该命令统计给定文件中的字节数、字数、行数。如果没有给出文件名,则从标准输入读取。wc同时也给出所有指定文件的总统计数。字是由空格字符区分开的最大字符串。
该命令各选项含义如下:
-c 统计字节数。
-l 统计行数。
-w 统计字数。
这些选项可以组合使用。 输出列的顺序和数目不受选项的顺序和数目的影响。总是按下述顺序显示并且每项最多一列。 行数、字数、字节数、文件名 如果命令行中没有文件名,则输出中不出现文件名。 例如: $wc -lcw file1 file2 4 33 file1 7 52 file2 11 11 85 total 省略任选项-lcw,wc命令的执行结果与上面一样。

13、基本算术计算的方法(5种)
a.使用awk计算
 

c.使用expr命令
 

e.加双括号
 
备注:“-a”追加,否则清空重写。

15、针对某个域进行分组统计
 
备注:“$FILE”要处理的文件,用awk命令按“”进行切分,“$11”表示第11域(1,3,5,...),“var”表示分组名称,“list[var]”表示每组的数量。

16、查询控制命令的历史记录
 
备注:查询包含“rm”字符的命令记录。

17、循环删除所有文件
 

19、查看文件夹下所有文件数目和所有文件夹数目
 
备注:JAVA中匹配以“2010-11-08"开头的字符串。

备注:SHELL中匹配以“2010-11-08”开头的字符串。
“.*”或“.+”在java中表示任意多个字符串,如果要匹配“.”号,需要加转义“\”。 “*”在shell表示任意多个字符,加“.”或“+”号都会错误。

21、编码转换命令

备注:
-i 表示inplace edit,就地修改文件
-r 表示搜索子目录
-l 表示输出匹配的文件名

23、常用MySQL语句
//查询mysql变量(timeout)
show variables like '%timeout'
//查询缓存变量
show status like "Qcache%"
//查询进程列表
show PROCESSLIST

24、清空memcache数据
telnet 10.27.5.71 11211
flush_all
quit //退出telnet

25、监控Tomcat并启动

备注:定时监控tomcat,发现挂掉,立刻重启!并发送短信和邮件报告~
-t1 表示只请求一次
-T2 表示2秒超时

26、linux查找文件的一些方法
1) 按文件名查找
#在/opt目录及其子目录下查找包含文件名是以zhjedu开头的文件
find /opt -name "zhjedu*"

2) 按时间查找
#在/opt目录及其子目录下查找最近1个小时修改的文件
find /opt -mtime -1
#在/opt目录及其子目录下查找1个小时以前修改的文件
find /opt -mtime +1

3) 按类型查找
#在/opt目录及其子目录下查找目录及其子目录
find /opt -type d
#在/opt目录及其子目录下查找所有的普通文件
find /opt -type f

4) 按大小查找
#在/opt目录及其子目录下查找文件大于10M的文件
find /opt -size +10000k

27、curl命令的用法
参见1:http://blog.sina.com.cn/s/blog_62b832910100tyfi.html
参见2:http://javag.iteye.com/blog/499113

28、split切割大文件
   for d in $LIST; do 
用for in语句自动对字符串按空格遍历的特性,对多个目录遍历
k. for i in {1..10}
l. for i in stringchar {1..10}
m. awk 'BEGIN{for(i=1; i<=10; i++) print i}'

注意:AWK中的for循环写法和C语言一样的
参考:http://hi.baidu.com/plp_cm/blog/item/d828d1881b05e2faf11f3607.html

32、格式转换
dos2unix, unix2dos 用来实现 DOS <=> UNIX text file 转换


34、用awk来对比两个文件
要求:输出a.txt中包含b.txt的行
命令:
awk 'NR==FNR{a[substr($2,3)]=$0;next}{if($0 in a)print a[$0]}' a.txt b.txt > c.txt

备注:awk参数用法:http://bbs.chinaunix.net/thread-691456-1-1.htmlhttp://bbs.chinaunix.net/thread-1797847-1-1.html
substr($2,3):表示截取a.txt第二列从第三个字符开始的所有字符。
if($0 in a):如果b.txt的一行跟a.txt第二列截取字符的相等。

a.txt(数据源1)
----------------
12 x=abc
14 x=ccc
15 x=acd

b.txt(数据源2)
----------------
abc
ccc
efg

c.txt(结果)
----------------
12 x=abc
14 x=ccc

读书人网 >操作系统

热点推荐