??xml version="1.0" encoding="utf-8" standalone="yes"?> Ubuntu System Admin 在一U上服务器上讄计划dQ?不小心选择了nanoQ?׃以前接触的是redhatpd的, 不习惯用nanoQ?于是想重设下Q?|上查了下, 貌似没有。?/p> 无奈之下Q重装一台服务器试Q?发现当你W一ơcrontab -e选择~辑器的时候就会提醒你Q?以后若要该改变选择Q?输入select-editor 唉,q是不够l心啊。?sudo select-editor 选择vim 搞定。?/p> 选择的数字是“3”Q?/usr/bin/vim.basic?/p> “^\d+$” //非负整数Q正整数 + 0Q? 匚w中文字符的正则表辑ּQ?[\u4e00-\u9fa5] \ 下一个字W标Cؓ一个特D字W、或一个原义字W、或一个后向引用、或一个八q制转义W?/p> ^ 匚w输入字符串的开始位|。如果设|了 RegExp 对象的Multiline 属性,^ 也匹?’\n’ ?’\r’ 之后的位|?/p> $ 匚w输入字符串的l束位置。如果设|了 RegExp 对象的Multiline 属性,$ 也匹?’\n’ ?’\r’ 之前的位|?/p> * 匚w前面的子表达式零ơ或多次?/p> + 匚w前面的子表达式一ơ或多次? {h?{1,}?/p> ? 匚w前面的子表达式零ơ或一ơ? {h?{0,1}?/p> {n} n 是一个非负整敎ͼ匚w定的n ơ?/p> {n,} n 是一个非负整敎ͼ臛_匚wn ơ?/p> {n,m} m ?n 均ؓ非负整数Q其中n <= m。最匹?n ơ且最多匹?m ơ。在逗号和两个数之间不能有空根{?/p> ? 当该字符紧跟在Q何一个其他限制符 (*, +, ?, {n}, {n,}, {n,m}) 后面Ӟ匚w模式是非贪婪的。非贪婪模式可能少的匹配所搜烦的字W串Q而默认的贪婪模式则尽可能多的匚w所搜烦的字W串?/p> . 匚w?“\n” 之外的Q何单个字W。要匚w包括 ’\n’ 在内的Q何字W,请用象 ’[.\n]’ 的模式? (?:pattern) 匚wpattern 但不获取匚wl果Q也是说这是一个非获取匚wQ不q行存储供以后用?/p> (?=pattern) 正向预查Q在M匚w pattern 的字W串开始处匚w查找字符丌Ӏ这是一个非获取匚wQ也是_该匹配不需要获取供以后使用?/p> (?!pattern) 负向预查Q与(?=pattern)作用相反 x|y 匚w x ?y?/p> [xyz] 字符集合?/p> [^xyz] 负值字W集合?/p> [a-z] 字符范围Q匹配指定范围内的Q意字W?/p> [^a-z] 负值字W范_匚wM不在指定范围内的L字符?/p> \b 匚w一个单词边界,也就是指单词和空格间的位|?/p> \B 匚w非单词边界?/p> \cx 匚w由x指明的控制字W?/p> \d 匚w一个数字字W。等价于 [0-9]?/p> \D 匚w一个非数字字符。等价于 [^0-9]?/p> \f 匚w一个换늬。等价于 \x0c ?\cL?/p> \n 匚w一个换行符。等价于 \x0a ?\cJ?/p> \r 匚w一个回车符。等价于 \x0d ?\cM?/p> \s 匚wMI白字符Q包括空根{制表符、换늬{等。等价于[ \f\n\r\t\v]?/p> \S 匚wM非空白字W。等价于 [^ \f\n\r\t\v]?/p> \t 匚w一个制表符。等价于 \x09 ?\cI?/p> \v 匚w一个垂直制表符。等价于 \x0b ?\cK?/p> \w 匚w包括下划U的M单词字符。等价于’[A-Za-z0-9_]’?/p> \W 匚wM非单词字W。等价于 ’[^A-Za-z0-9_]’?/p> \xn 匚w nQ其?n 为十六进制{义倹{十六进制{义值必Mؓ定的两个数字长?/p> \num 匚w numQ其中num是一个正整数。对所获取的匹配的引用?/p> \n 标识一个八q制转义值或一个后向引用。如?\n 之前臛_ n 个获取的子表辑ּQ则 n 为后向引用。否则,如果 n 为八q制数字 (0-7)Q则 n Z个八q制转义倹{?/p> \nm 标识一个八q制转义值或一个后向引用。如?\nm 之前臛_有is preceded by at least nm 个获取得子表辑ּQ则 nm 为后向引用。如?\nm 之前臛_?n 个获取,?n Z个后跟文?m 的后向引用。如果前面的条g都不满Q若 n ?m 均ؓ八进制数?(0-7)Q则 \nm 匹配八q制转义?nm?/p> \nml 如果 n 为八q制数字 (0-3)Q且 m ?l 均ؓ八进制数?(0-7)Q则匚w八进制{义?nml?/p> \un 匚w nQ其?n 是一个用四个十六q制数字表示的Unicode字符?/p> 匚w中文字符的正则表辑ּQ?[u4e00-u9fa5] 匚w双字节字W?包括汉字在内)Q[^x00-xff] 匚wI的正则表辑ּQn[s| ]*r 匚wHTML标记的正则表辑ּQ?<(.*)>.*</1>|<(.*) />/ 匚w首尾I格的正则表辑ּQ?^s*)|(s*$) 匚wEmail地址的正则表辑ּQw+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)* 匚w|址URL的正则表辑ּQhttp://([w-]+.)+[w-]+(/[w- ./?%&=]*)? 利用正则表达式限制网表单里的文本框输入内容Q?/p> 用正则表辑ּ限制只能输入中文Qonkeyup=”value=value.replace(/[^u4E00-u9FA5]/g,”)” onbeforepaste=”clipboardData.setData(’text’,clipboardData.getData(’text’).replace(/[^u4E00-u9FA5]/g,”))” 用正则表辑ּ限制只能输入全角字符Q?onkeyup=”value=value.replace(/[^uFF00-uFFFF]/g,”)” onbeforepaste=”clipboardData.setData(’text’,clipboardData.getData(’text’).replace(/[^uFF00-uFFFF]/g,”))” 用正则表辑ּ限制只能输入数字Qonkeyup=”value=value.replace(/[^d]/g,”) “onbeforepaste=”clipboardData.setData(’text’,clipboardData.getData(’text’).replace(/[^d]/g,”))” 用正则表辑ּ限制只能输入数字和英文:onkeyup=”value=value.replace(/[W]/g,”) “onbeforepaste=”clipboardData.setData(’text’,clipboardData.getData(’text’).replace(/[^d]/g,”))” =========常用正则表达?/p> 匚w中文字符的正则表辑ּQ?[\u4e00-\u9fa5] 匚w双字节字W?包括汉字在内)Q[^\x00-\xff] 匚wI的正则表辑ּQ\n[\s| ]*\r 匚wHTML标记的正则表辑ּQ?<(.*)>.*<\/\1>|<(.*) \/>/ 匚w首尾I格的正则表辑ּQ?^\s*)|(\s*$) 匚wIP地址的正则表辑ּQ?(\d+)\.(\d+)\.(\d+)\.(\d+)/g // 匚wEmail地址的正则表辑ּQ\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)* 匚w|址URL的正则表辑ּQhttp://(/[\w-]+\.)+[\w-]+(/[\w- ./?%&=]*)? sql语句Q^(select|drop|delete|create|update|insert).*$ 1、非负整敎ͼ^\d+$ 2、正整数Q^[0-9]*[1-9][0-9]*$ 3、非正整敎ͼ^((-\d+)|(0+))$ 4、负整数Q^-[0-9]*[1-9][0-9]*$ 5、整敎ͼ^-?\d+$ 6、非负QҎQ^\d+(\.\d+)?$ 7、正点敎ͼ^((0-9)+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)| ([0-9]*[1-9][0-9]*))$ 8、非正QҎQ^((-\d+\.\d+)?)|(0+(\.0+)?))$ 9、负点敎ͼ^(-((正QҎ正则?))$ 10、英文字W串Q^[A-Za-z]+$ 11、英文大写串Q^[A-Z]+$ 12、英文小写串Q^[a-z]+$ 13、英文字W数字串Q^[A-Za-z0-9]+$ 14、英数字加下划线Ԍ^\w+$ 15、E-mail地址Q^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$ 16、URLQ^[a-zA-Z]+://(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\s*)?$ 17、邮政编码:^[1-9]\d{5}$ 18、中文:^[\u0391-\uFFE5]+$ 19、电话号码:^((\(\d{2,3}\))|(\d{3}\-))?(\(0\d{2,3}\)|0\d{2,3}-)?[1-9] \d{6,7}(\-\d{1,4})?$ 20、手机号码:^((\(\d{2,3}\))|(\d{3}\-))?13\d{9}$ 21、双字节字符(包括汉字在内)Q^\x00-\xff 22、匹配首|(^\s*)|(\s*$)Q像vbscript那样的trim函数Q?/p> 23、匹配HTML标记Q?lt;(.*)>.*<\/\1>|<(.*) \/> 24、匹配空行:\n[\s| ]*\r 25、提取信息中的网l链接:(h|H)(r|R)(e|E)(f|F) *= *(’|”)?(\w|\\|\/|\.)+(’|”| *|>)? 26、提取信息中的邮件地址Q\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)* 27、提取信息中的图片链接:(s|S)(r|R)(c|C) *= *(’|”)?(\w|\\|\/|\.)+(’|”| *|>)? 28、提取信息中的IP地址Q?\d+)\.(\d+)\.(\d+)\.(\d+) 29、提取信息中的中国手机号码:(86)*0*13\d{9} 30、提取信息中的中国固定电话号码:(\(\d{3,4}\)|\d{3,4}-|\s)?\d{8} 31、提取信息中的中国电话号码(包括Ud和固定电话)Q?\(\d{3,4}\)|\d{3,4}-|\s)?\d{7,14} 32、提取信息中的中国邮政编码:[1-9]{1}(\d+){5} 33、提取信息中的QҎQ即数Q:(-?\d*)\.?\d+ 34、提取信息中的Q何数?Q?-?\d*)(\.\d+)? 35、IPQ?\d+)\.(\d+)\.(\d+)\.(\d+) 36、电话区P/^0\d{2,3}$/ 37、腾讯QQP^[1-9]*[1-9][0-9]*$ 38、帐?字母开_允许5-16字节Q允许字母数字下划线)Q^[a-zA-Z][a-zA-Z0-9_]{4,15}$ 39、中文、英文、数字及下划U:^[\u4e00-\u9fa5_a-zA-Z0-9]+$
$> date +"%Y-%m-%d"
2009-12-07
#输出昨天日期
$> date -d "1 day ago" +"%Y-%m-%d"
2012-11-19
#2U后输出
$> date -d "2 second" +"%Y-%m-%d %H:%M.%S"
2012-11-20 14:21.31
#传说中的 1234567890 U?nbsp;
$> date -d "1970-01-01 1234567890 seconds" +"%Y-%m-%d %H:%m:%S"
2009-02-13 23:02:30
#普通{格式
$> date -d "2009-12-12" +"%Y/%m/%d %H:%M.%S"
2009/12/12 00:00.00
#apache格式转换
$> date -d "Dec 5, 2009 12:00:37 AM" +"%Y-%m-%d %H:%M.%S"
2009-12-05 00:00.37
#格式转换后时间游?nbsp;
$>date -d "Dec 5, 2009 12:00:37 AM 2 year ago" +"%Y-%m-%d %H:%M.%S"
2007-12-05 00:00.37
#加减操作
date +%Y%m%d //昄前天q月?nbsp;
date -d "+1 day" +%Y%m%d //昄前一天的日期
date -d "-1 day" +%Y%m%d //昄后一天的日期
date -d "-1 month" +%Y%m%d //昄上一月的日期
date -d "+1 month" +%Y%m%d //昄下一月的日期
date -d "-1 year" +%Y%m%d //昄前一q的日期
date -d "+1 year" +%Y%m%d //昄下一q的日期
#讑֮旉
date -s //讄当前旉Q只有root权限才能讄Q其他只能查?nbsp;
date -s 20120523 //讄?0120523Q这样会把具体时间设|成I?0:00:00
date -s 01:01:01 //讄具体旉Q不会对日期做更?nbsp;
date -s "01:01:01 2012-05-23" //q样可以讄全部旉
date -s "01:01:01 20120523" //q样可以讄全部旉
date -s "2012-05-23 01:01:01" //q样可以讄全部旉
date -s "20120523 01:01:01" //q样可以讄全部旉
有时需要检查一l命令花费的旉QD例:
#!/bin/bash
start=$(date +%s)
nmap www.1987.name &> /dev/null
end=$(date +%s)
difference=$(( end - start ))
echo $difference seconds.
]]>root@ubuntu:
/var/www
# select-editor
Select an editor. To change later, run
'select-editor'
.
1.
/bin/ed
2.
/bin/nano
<---- easiest
3.
/usr/bin/vim
.basic
4.
/usr/bin/vim
.tiny
#!/bin/sh
msg=
"welcome to www groad net"
for
item
in
$msg
do
echo
"Item: $item"
done
q行输出Q?br />
Item: welcome
Item: to
Item: www
Item: groad
Item: net
?面用一?for 循环遍历了变?msg 里的所有项?msg 变量里存储的各个单词都是用空格分开的,?for 能依ơ取些单词,正是依靠 IFS q个变量作ؓ分隔W。如果将 msg 变量改ؓ CSV (comma separaed values 逗号分隔?格式Q那么按照默认的 IFS 值就无法解析出各个单词,如:
Item: welcome,to,www,groad,net
q样Q整个字W串当成一?item 被获取了?br />
此时如果仍然希望逐个获得各个单词Q那么需要修?IFS 变量的|如:#!/bin/sh
data=
"welcome,to,www,groad,net"
IFSBAK=$IFS
#备䆾原来的?/code>
IFS=,
for
item
in
$data
do
echo
Item: $item
done
IFS=$IFSBAK
#q原
q行输出Q?br />
Item: welcome
Item: to
Item: www
Item: groad
Item: net
]]>
wulong中含 三个文g?include source pro 和makefile文g?br /> include 中包?hai.h头文件?br /> source 中包?hello.c文g?br /> pro 中包?haia.c haib.c文g?br />
makefile文g内容有两U写法:
makefile W一U写法:
Q/Q*Q*Q*Q*Q*Q*Q*Q*Q*Q*Q?br /> CC=gcc Q选择~译器类型ؓgcc
VPATH= include : pr : source #列明文g存放目录
hello: hello.o haia.o haib.o
$(CC) -o hello hello.o haia.o haib.o
hello.o:hello.c hai.h
$(CC) -c hello.c
haia.o: haia.c hai.h
$(CC) -c haia.c
haib.o: haib.c hai.h
$(CC) -c haib.c
.PHONY: clean
clean:
rm hello $(obj)
Q/Q*Q*Q*Q*Q*Q*Q*Q*Q*Q*Q*Q*Q?br />
makefileW二U写法(化版Q:
Q/Q*Q*Q*Q*Q*Q*Q*Q*Q*Q*Q*Q*Q*Q*Q*Q*
CC=gcc #选择~译U类
VPATH= include : pr : source #在include pr source 三目录下查找文g
obj= hello.o haia.o haib.o Q?br />
hello:$(obj) Q?br /> $(CC) -o hello $(obj)
$(obj): hai.h
.PHONY: clean
clean:
rm hello $(obj)
Q/Q*Q*Q*Q*Q*Q*Q*Q*Q*Q*Q*Q*Q*Q*Q*Q*Q*
hai.h文g内容为:
Q/Q*Q*Q*Q*Q*Q*Q*Q*Q*Q*Q*Q*
#include "stdio.h"
extern void haiprinta();
extern void haiprintb();
Q/Q*Q*Q*Q*Q*Q*Q*Q*
hello.c内容为:
Q/Q*Q*Q*Q*Q*Q*Q*Q*
#include "../include/hai.h"
int main(void)
{
haiprinta();
haiprintb();
return 0;
}
Q/Q*Q*Q*Q*Q*Q*Q*
haia.c内容为:
Q/Q*Q*Q*Q*Q*Q*
#include "../include/hai.h"
void haiprinta()
{
printf("hai aaaaaaaaaa\n");
}
Q/Q*Q*Q*Q*Q*Q*Q*
haib.c内容为:
Q/Q*Q*Q*Q*Q*Q*Q*
#include "../include/hai.h"
void haiprintb()
{
printf("haib bbbbbbbbbbbbbb\n");
}
Q/Q*Q*Q*Q*Q*Q*Q*Q*Q*Q?br />
2。make 调用makefile生成 可执行文?hello
3. q行 hello昄打印l果Q?br /> [HAI@localhost wulong]$ ./hello
hai aaaaaaaaaa
haib bbbbbbbbbbbbbb
[HAI@localhost wulong]$
到此l束Q恭喜!
原文Q?div>http://blog.tianya.cn/blogger/post_show.asp?BlogID=2058037&PostID=17326631
]]>
使用权限 : 所有用?
使用方式 : sleep [--help] [--version] number[smhd]
说明 : sleep 可以用来目前动作gq一D|?
参数说明 :
--help : 昄辅助讯息
--version : 昄版本~号
number : 旉长度Q后面可?s、m、h ?d
其中 s 为秒Qm ?分钟Qh 为小Ӟd 为日?
例子 :
昄目前旉后gq?1 分钟Q之后再ơ显C时?:
date;sleep 1m;date 转:
]]>
“^[0-9]*[1-9][0-9]*$” //正整?
“^((-\d+)|(0+))$” //非正整数Q负整数 + 0Q?
“^-[0-9]*[1-9][0-9]*$” //负整?
“^-?\d+$” //整数
“^\d+(\.\d+)?$” //非负点敎ͼ正QҎ + 0Q?
“^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$” //正QҎ
“^((-\d+(\.\d+)?)|(0+(\.0+)?))$” //非正点敎ͼ负QҎ + 0Q?
“^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$” //负QҎ
“^(-?\d+)(\.\d+)?$” //点?
“^[A-Za-z]+$” //?6个英文字母组成的字符?
“^[A-Z]+$” //?6个英文字母的大写l成的字W串
“^[a-z]+$” //?6个英文字母的写l成的字W串
“^[A-Za-z0-9]+$” //由数字和26个英文字母组成的字符?
“^\w+$” //由数字?6个英文字母或者下划线l成的字W串
“^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$” //email地址
“^[a-zA-z]+://(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\S*)?$” //url
/^(d{2}|d{4})-((0([1-9]{1}))|(1[1|2]))-(([0-2]([1-9]{1}))|(3[0|1]))$/ // q???
/^((0([1-9]{1}))|(1[1|2]))/(([0-2]([1-9]{1}))|(3[0|1]))/(d{2}|d{4})$/ // ??q?
“^([w-.]+)@(([[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.)|(([w-]+.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(]?)$” //Emil
/^((\+?[0-9]{2,4}\-[0-9]{3,4}\-)|([0-9]{3,4}\-))?([0-9]{7,8})(\-[0-9]+)?$/ //电话L
“^(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5])$” //IP地址
匚w双字节字W?包括汉字在内)Q[^\x00-\xff]
匚wI的正则表辑ּQ\n[\s| ]*\r
匚wHTML标记的正则表辑ּQ?<(.*)>.*<\/\1>|<(.*) \/>/
匚w首尾I格的正则表辑ּQ?^\s*)|(\s*$)
匚wEmail地址的正则表辑ּQ\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*
匚w|址URL的正则表辑ּQ^[a-zA-z]+://(\\w+(-\\w+)*)(\\.(\\w+(-\\w+)*))*(\\?\\S*)?$
匚w帐号是否合法(字母开_允许5-16字节Q允许字母数字下划线)Q^[a-zA-Z][a-zA-Z0-9_]{4,15}$
匚w国内电话LQ?\d{3}-|\d{4}-)?(\d{8}|\d{7})?
匚w腾讯QQP^[1-9]*[1-9][0-9]*$
元字W及其在正则表达式上下文中的行ؓQ?/p>
(pattern) 匚wpattern q获取这一匚w?/p>
或:^http:\/\/[A-Za-z0-9]+\.[A-Za-z0-9]+[\/=\?%\-&_~`@[\]\’:+!]*([^& lt;>\"\"])*$
]]>
2.
3.
4.
5.
?/span>=======================shiftI过所有的位置参数================?/span>
?=======================循环================?/span>
W一U:
W二U:代码?/span> ?/span>while 循环
W三U:while循环无需d外界文g
W四U:while ?/span>casel合Q?/span>shift,continue使用?/span>
W五U:for循环
W六U:for嵌套for循环
W七U:
W八U:
W九U:
W十U:
?=======================if 条g判断 ?位置参数$1================?/span>
W一U:
W二U:$#是位|参数的个数
W三U:?/span>elif的?/span>
W四U:取反条g
W五U:试cd的条件控?/span>
W六U:多种条g一起匹配的?/span>
W七U:case条gQ关注变量那?/span>
W八U:多种条g控制嵌套处理Q其实都是由实际的业务逻辑军_的?/span>if嵌套case?/span>if都可以。同Pcase嵌套if也可以?/span>
W九U:exit退本的使用
W十U:if ?/span>exitl合
W十一U:if ?/span>{}l合?/span>
W十二种Q?/span>if 与冒Ll合
W十三种Q?/span>if ?/span>shift l合
W十四种Q?/span>if ?/span>execl合
W十五种Q?/span>if ?/span>diff的?/span>
W十六种Q?/span>
W十七种Q?/span>cmp的比?/span>
?======================脚本映射 ================?/span>
W一U:link
?/span>=======================shell 函数 ================?/span>
W一U:cM于主函数调用其余子函敎ͼ以及return q回?/span>
?/span>=======================unix 基础命o ================?/span>
W一Q?/span>
W二Q?/span>shift的?/span>
1. ?/span>a.log文g中提取包?/span>"WARNING"?/span>"FATAL"Q同时不包含"IGNOR"的行Q然后提取以":"分割的第5个字D?/span>
2. ~写一个脚本,只想单的减法q算Q要求提C入变?/span>
3. Shell脚本阅读Q解释下面执行的功能Q,hZ面程序或脚本中的错误Qƈ说明错在哪里?/span>
#!/bin/bash
#监控cpuser?/span>point端口是否正常
logname="/home/forum/log/lpointlog.wf"
flagfile="/home/forum/log/lognum.txt"
lodnum=sed -n "1,1 p"$flagfile
newnum=wc -l ${logname}
echo $newnum >$flagfile
totalnum=expr $newnum -$oldnum
tail -n $totalnum $logname |grep "POINT_THREAD WARNING"
if [$?==0]
then
mail -s "cpuser point "端口异常,请处?/span>!" test@aa.com</dev/null
fi>
{案Q?/strong>
1.
#!/bin/bash
awk -F: '{if ($0~/(WARNING|FATAL)/ && $0!~/IGNOR/) {print $5}}' a.log
2.
#!/bin/bash
read -p "input a num:" num1
read -p "input another num:" num2
result=`expr $num1 - $num2`
#let "result=num1-num2"
#let result=num1-num2
echo $result
~
3.
命o行替换用反引Pif [$?==0] 应该写做if [ $?=0 ]Q用来判断上ơ命令是否执行成功;
倒数W二行应该是>/dev/nullQ最?/span>fi后面?/span>>L?br /> 原文Qhttp://blog.csdn.net/do2jiang/archive/2009/09/28/4604692.aspx#!/bin/bash
#1.sh
#判断一文g是不是字W或块设备文Ӟ如果是将其拷贝到 /dev 目录?br />
#file executable: chmod 755 1.sh
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
echo -e “The program will Judge a file is or not a device file.\n\n”
read -p “Input a filename : ” filename
if [ -b "$filename" -o -c "$filename" ]
then
echo “$filename is a device file” && cp $filename /dev/ &
else
echo “$filename is not a device file” && exit 1
fi
Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-
2. 设计一个shellE序Q添加一个新lؓclass1Q然后添加属于这个组?0个用P用户名的形式为stdxxQ其中xx?1?0?/p>
#!/bin/bash
#2.sh
#设计一个shellE序Q添加一个新lؓclass1Q然后添加属于这个组?0个用P用户名的形式为stdxxQ其中xx?1?0?br />
#file executable: chmod 755 2.sh
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
groupadd class1
for i in {9901..9930}
do
xx=`echo $i | sed ’s/99//g’`
useradd -g class1 std$xx
echo std$xx | passwd std$xx –stdin
echo -e “user std$xx password is std$xx” >> /root/newuser.txt
done
Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q?br /> 3Q编写shellE序Q实现自动删?0个̎L功能。̎号名为stud1至stud50?/p>
#!/bin/bash
#4.sh
#~写shellE序Q实现自动删?0个̎L功能。̎号名为stud1至stud50?br />
#file executable: chmod 755 3.sh
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
i=1
while [ i -le 50 ]
do
let i++
userdel -r stud$i
done
Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q?br />
4Q某pȝ理员需每天做一定的重复工作Q请按照下列要求Q编制一个解x案:
Q?Q在下午4 :50删除/abc目录下的全部子目录和全部文gQ?br />
Q?Q从?:00~下?:00每小时读?xyz目录下x1文g中每行第一个域的全部数据加入到/backup目录下的bak01.txt文g内;
Q?Q每逢星期一下午5:50?data目录下的所有目录和文g归档q压~ؓ文gQbackup.tar.gzQ?br />
Q?Q在下午5:55IDE接口的CD-ROM卸蝲Q假设:CD-ROM的设备名为hdcQ;
Q?Q在早晨8:00前开机后启动?/p>
vim /etc/crontab 在里面增加下面内容:
50 16 * * * root rm -rf /abc/* 2>&1 &
00 8-18 * * * root cat /xyz/x1|awk ‘{print $1}’ >> /backup/bak01.txt 2>&1 &
50 17 * * 1 root cd /data;tar -zcvf backup.tar.gz * 2>&1 &
55 17 * * * root umount /hdc 2>&1 &
5Q在早晨8:00前开机后启动 –> q个我不是很明白它的意?不知道是不是8点前开机就启动上面的设定,8点后才开机就不用启动的意思?br />
姑且用下面这个命令吧
chkconfig –level 2345 crond on
Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q?br />
5Q设计一个shellE序Q在每月W一天备份ƈ压羃/etc目录的所有内容,存放?root/bak目录里,且文件名
为如下Ş式yymmdd_etcQyy为年Qmm为月Qdd为日。ShellE序fileback存放?usr/bin目录下?/p>
vim /usr/bin/fileback.sh
#!/bin/bash
#fileback.sh
#file executable: chmod 755 fileback.sh
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
filename=`date +%y%m%d`_etc.tar.gz
cd /etc/
tar -zcvf $filename *
mv $filename /root/bak/
—————————————————?br />
vim /etc/crontab 加入
* * 1 * * root ./fileback.sh &
Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-
6Q有一普通用h在每周日凌晨零点零分定期备䆾/user/backup?tmp目录下,该用户应如何做?
可以? contab -e 来做Q和上面一题差不多?/p>
7.设计一个ShellE序Q在/userdata目录下徏?0个目录,即user1~user50Qƈ讄每个目录的权限,?br /> 中其他用L权限为:读;文g所有者的权限为:诅R写、执行;文g所有者所在组的权限ؓQ读、执行?/p>
#!/bin/bash
#7.sh
#file executable: chmod 755 7.sh
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
for ((i=1;i<=50;i++))
do
mkdir -p /usrdata/user$i
cd /usrdata
chmod 754 user$i
done
原文Qhttp://www.intgoo.com/100555.html
2.扑ևtest目录下大在40K-60K之间的文?br /> find test -size +40k -a -size -60k -exec ls -l {} \;
3、在目录/tmp下找?00个以abc开头的文gQ然后把q些文g的第一行保存到文gnew中?br />
#Q?bin/sh
cd /tmp
for i in `find . -type f -name "abc*"| head -n 100`
do
head -n1 $i>>new
done
4、把文gb中有的,但是文ga中没有的所有行Q保存ؓ文gcQƈl计c的行数?br />
# !/bin/sh
for i in `cat b`
do
grep $i a #b中的行,在a中查?br />
if [ "$?" -gt "0" ];then #如果l果大于0Q即为找不到Q?br />
echo $i>>c #此行输入到c?br />
fi
done
l计行数wc -l卛_~
q个不对Q但是先保留着吧~
排除重复的,再用cutQ已1为分隔域Q打印出W二域到最后一?br />
cat b a | sort -n |uniq -c | awk '{if ($1==1) print $0}'|cut -f2- -d "1" | wc -l
另外 uniq -u可以打印出不重复的?/p>
5.实现?加到100Q得出结果:
一Q?br />
#!/bin/sh
i=1
sum=0
while [ $i -le 100 ]
do
sum=`expr $sum + $i`
i=`expr $i + 1`
done
echo $sum
二:
i=1
b=0
for i in {1..100}
do
b=$[$b + $i]
done
echo $b
三:
# !/bin/sh
s=0
for((i=1;i<101;i++));do
s=`expr $s + $i`
done
echo $s
四:
# !/bin/sh
i=1
num=0
while [ "$i" != "101" ]
do
num=`expr $i + $num`
i=`expr $i + 1`
done
echo $num
6Q文件内容ؓ
admin: aa@test.com
body: bb@test.com
admin: cc@test.com
把匹配admin 的行后面加上 ;aa@163.com
sed -r 's/(admin)(.*)/\1\2 ;aa@163.com/g' filename
admin: aa@test.com ;aa@163.com
body: bb@test.com
admin: cc@test.com ;aa@163.com
-r, --regexp-extended
use extended regular expressions in the script.
-r 使sed在脚本中使用正则表达?br />
\1\2卌C前面的(admin)(.*)
7Q文件内容ؓQ?br />
1 aaa 1000
2 bbb 1000
3 aaa 1000
4 aaa 1000
5 ccc 1000
6 bbb 1000
其变成Q?br />
1 aaa 3000
2 bbb 2000
5 ccc 1000
脚本Q?br />
# !/bin/sh
for i in `awk '{print $2}' filename |sort|uniq`
do
grep $i filename >$i.txt
sum=`awk '{tot+=$3}; END{print tot}' $i.txt`
three=`sed -n '1p' $i.txt |awk '{print $3}'`
sed -i "s/$three/$sum/g" $i.txt
head -n1 $i.txt >>last
rm -f $i.txt
done
8,文g内容Q?br />
this
is
a
test
script
其变成Q?br />
this is a test script
脚本Q?br />
echo `cat filename`
9Q比较字W串大小(主要是用Csort来比?
VAR1=abc
VAR2=def
tt=`echo -e "$VAR1\n$VAR2"|sort|head -1`
if [ "$tt" = "$VAR1" ];then
echo $VAR1 relatively large!
else
echo $VAR2 relatively large!
fi
10.合ƈ相同?br />
[root@test1 tmp]# more file1
DAD|15.0|
JAB|2.0|
JAH|55.0|
HAH|11|
[root@test1 tmp]# more file2
DAD|773.0|
GGC|2.0|
JAB|224.0|
HOH|22|
其合ƈ成:
DAD 15.0 773.0
JAB 2.0 224.0
GGC 2.0
HOHO 22
JAH 55.0
脚本Q(感觉写的有点W了Q?br />
# !/bin/sh
cat file1 file2 |awk -F'|' '{print $1}'| sort |uniq -c >tmp
for i in `awk '{if ($1 >=2) print $2}' tmp`
do
echo `cat file1 file2 |grep $i` | awk -F'|' '{print $1"\t"$2"\t"$4}' >>last.txt
done
for b in `awk '{if ($1==1) print $2}' tmp`
do
echo `cat file1 file2 |grep $b` | sed 's/|/\t/g' >>last.txt
done
rm -f tmp
单的Q?br />
join -a 1 -a 2 -t "|" file* |sort -t"|" -rk3 |awk -F'|' '{print $1"\t"$2"\t"$3$4}'
11Q字母分?br />
abcdefghijklmnopqrstuvwxy分离成ؓQ?br />
abcde
fghij
klmno
pqrst
uvwxy
用到sed配合正则表达式:
sed 's/\(.....\)\(.....\)\(.....\)\(.....\)\(.....\)/\1\n\2\n\3\n\4\n\5/' filename
12.每隔5U检另一台服务器上的apache服务Q直到其启动后,echo OK
# !/bin/sh
echo | telnet 192.168.2.189 80 >check.txt
grep -i connected check.txt
while [ $? -ne 0 ] #如果上面grep的结果不?
do
echo no
sleep 5
echo | telnet 192.168.2.189 80 >check.txt
grep -i connected check.txt
done
echo OK!!!!!!!!!!!
13.?tmp/下徏0-255目录Q再每个目录再徏0-255个目录,然后在最下目录下面?00个文?br />
原来写的Q?br />
for ((i=0;i<255;i++));do
mkdir -p $i
for ((b=0;b<255;b++));do
mkdir $i/$b
for ((c=0;c<100;c++));do
touch $i/$b/$c
done
done
done
接下来看一个超单的Q徏5个目录,再每个目录再?个目录,然后在最下目录下面?个文?br />
mkdir -p {0..5}/{0..5} && touch {0..5}/{0..5}/{0..5}
14.记录sed的一个用法:
i=1
sed s/2/$i/g file 不需要写?sed 's/2/$i/g' file
q样的好处就是可以用变量了
原文Q?http://hi.baidu.com/ggb98/blog/item/eabebfee930fd3ffcf1b3eee.html