运维常见命令和案例

一. echo 

 echo -n 输出不换行
echo -e  激活转义字符项,后面可接转义字符  比如 echo -e "oldboy\toldboy 输出结果是在中间加一个Tab空格(2个空格)

 

如果想在echo中执行命令并且输出结果,有两种方法可以实现
1. 在命令中添加反引号,Tab上方的字符
2. 使用$(命令)
 

 

 
 

二. date

date -s :修改时间          date -s "2016/08/09  但是此命令没写到BIOS中,会自动恢复,如果想写到BIOS,用hwclock命令
熟悉几个参数
date '+%y-%m-%d'      尝试%F--标准年月日,%T--标准时分秒, %Y--完整的年份,  %w--周几da  %H--时   %M--分   %S--秒
date +%Y-%m-%d\ %H:%M:%S等价于date +%F %T,注意%F后面有一个转义字符 \ 来处理后面的空格

 

 
 
延伸点:
1. cal命令可以显示日历

 

 
2. 打印以前或以后的日期
三天前:date +%F\ %w --date='3 day ago'     或者 date +%F\ %w -d '3 day ago'   或者date +%F\ %w -d '-3 day'  
三天后;date +%F\ %w  -d '+3 day'  不加  +  - 默认是三天后
 
注意点:
1. -d后不加等号,后面的days单复数都行,单双引号都行
2. 后面的day可以替换成hour,min显示相应的时间,当然前面的参数也要修改是对应的时间显示出来   例如 date +%H -d '+3 hour' ;   date +%w -d ' +4 day'---显示4天后是周几
 
 
 

三. 企业案例

1. 把指定文件夹每日进行备份打包
tar cvzf oldboy-$(date +%F).tar.gz ./oldboy
注意点:打包需要在oldboy的上级目录中执行,先定义打包后的名字,原文件的位置要写相对地址 
 
2. 只保留最近7天的log内容
方法一:find /var/log -type f -name "*.log" -mtime +7 | xargs rm -f              
日志文件一般存放在/var/log目录下  -mtime指修改时间,ll和ls命令默认显示的都是mtime;+7就是多于7天的,同理-7是少于7天,7就是刚好7天
方法二:把文件打包的时候按周几命名,那么下周会自动覆盖上周的记录
tar cvzf oldboy-$(date +%w).tar.gz ./oldboy
 
 
 

四:过滤掉文本中的空行,并输出其他文本

方法一:grep -v "^$" hong.txt          -v表示取反, "^$"表示开头和结尾都为空,因为正则表达式是以行为单位进行处理,它就是表示空行
方法二:sed '/^$/d' hong.txt            ^$表示空行, /.../选出空行, d进行删除
方法三:awk /^[^$]/ hong.txt          [^]表示非, [^$]匹配一个不是$的字符,^[^$]就是匹配不以$开头的任意字符, 用/../套上就是非空行
方法四:awk '/^[^(.*)]/' hong.txt    
随便玩玩的,居然这样也行,(,*)表示任意字符,[^(.*)]表示啥字符都不是,当然也不包括$,^[^(.*)]就表示以未知字符开头,但是这里shell只能理解为以非空字符开头,所以就得到正确输出咯,哇哈哈,好牛X的感觉。
/...../看来可以用在sed 和 awk中,表示取出指定字符的行,有机会试下grep中是否能用
posted @ 2018-04-18 15:05  坚强的小蚂蚁  阅读(297)  评论(0编辑  收藏  举报