Shell脚本拓展学习(2)
一、sed命令
SED是流编辑器(stream editor)的缩写。它可以用于执行不同的功能,如搜索,查找和替换,插入和删除。相对来说,查找和替换很常见,无需打开文件即可替换单词。
1.一次替换
aaron@ubuntu:~/Desktop$ sed 's/linuxmi/xxvi/' Demo.c
为了替换每次出现,我们在表达式的末尾添加“ g”
aaron@ubuntu:~/Desktop$ sed 's/linuxmi/xxvi/g' Demo.c
2.指定最多次替换
为了替换每次出现,我们在表达式的末尾添加“ g”
aaron@ubuntu:~/Desktop$ sed 's/linuxmi/xxvi/g' Demo.c
3.指定替换次数
aaron@ubuntu:~/Desktop$ sed 's/linux/xxvi/1g' Demo.c
4.指定行替换
aaron@ubuntu:~/Desktop$ sed '2 s/linux/xxvi/' Demo.c
5.打印替换的行
aaron@ubuntu:~/Desktop$ sed -n ' s/linux/xxvi/p' Demo.c
6.删除
(1)删除指定行
aaron@ubuntu:~/Desktop$ sed '5d' Demo.c
(2)删除末行
aaron@ubuntu:~/Desktop$ sed '$d' Demo.c
(3)删除指定行到末行
(4)删除指含目标字段的行
二、date命令
显示当前时间
格式化输出 +%Y-%m-%d
格式%s表示自1970-01-01 00:00:00以来的秒数
指定时间输出 --date=‘2009-01-01 11:11:11’
指定时间输出 --date=‘3 days ago’ (3天之前,3天之后可以用-3)
具体参考1
具体参考1
三、nohup命令
不挂断的运行命令,忽略所有挂断(hangup)信号
test.sh &
这样的话虽然可以在后台运行,但是当用户注销(logout)或者网络断开时,终端会收到Linux HUP信号(hangup)信号从而关闭其所有子进程
nohup test.sh &
nohup会忽略进程的hangup挂断信号,所以关闭当前会话窗口不会停止这个进程的执行。
nohup会在当前执行的目录生成一个nohup.out日志文件
具体参考
四、Crontab定时器
编辑使用crontab -e
一共6列,分别是:分 时 日 月 周 命令
1.查看使用
crontab -l
2.删除任务
crontab -r
3.查看crontab执行日志
tail -f /var/log/cron
必须打开rsyslog服务cron文件中才会有执行日志(service rsyslog status)
tail -f /var/spool/mail/root
(查看crontab最近的执行情况)
4.查看cron服务状态
service crond status
5.启动cron服务
service crond start
五、字符串操作
1.获取长度:
${#VAR_NAME}
2.字符串截取
${variable:offset:length}
或者${variable:offset}
3.取尾部的指定个数的字符
${variable: -length}
注意冒号后面有空格
4.大小写转换
(1)小–>大:
${variable^^}
(2)大–>小:
${variable,,}
2.数组操作
(1)赋值
1.一次对一个元素赋值a[0]=$RANDOM
2.一次对多个元素赋值a=(a b c d)
3.按索引进行赋值a=([0]=a [3]=b [1]=c)
(2)查看
使用read命令read -a ARRAY_NAME查看元素
1.${ARRAY[index]}
查看数组指定角标的元素
2.${ARRAY}
查看数组的第一个元素
3.${ARRAY[*]}或者${ARRAY[@]}
查看数组的所有元素
(3)获取数组的长度
${#ARRAY[*]}
${#ARRAY[@]}
${#ARRAY[0]}
${#ARRAY[0]}表示获取数组中的第一个元素的长度,等于${#ARRAY}
(4)截取
从数组中获取某一片段之内的元素(操作类似于字符串操作)
offset:偏移的元素个数
length:取出的元素的个数
1.${ARRAY[@]:offset:length}
取出偏移量后的指定个数的元素
2.${ARRAY[@]:offset}
取出数组中偏移量后的所有元素
(5)删除
数组删除元素:
unset ARRAY[index]
六、逻辑操作符
需要用到shell中的逻辑操作符
-a 与
-o 或
! 非
七、其他
-t表示输入等待的时间
read -t 5 -p "enter your name:" VAR_NAME
-s 表示安全输入,键入密码时不会显示
read -s -p "Enter your password: " pass
内容略显粗糙,学识浅薄,希望能帮到您