shell脚本方便操作记录(持续添加)
2015-03-06 12:13
369 查看
http://blog.csdn.net/richerg85/article/details/44001501
工作中经常用到的方便操作的shell命令,记录如下:
全局替换:
:%s/tmp\/\"/tmp\/\$dev_id\"\_/g
:%s/\$log_time_format /
\`date\+%Y%m%d%H%M\`
/g
打包
tar -czvf /data/third_part_new_bak/third_part_201406161044.tar.gz --exclude=*.apk 360Safe/ common
tar -czvf /data/third_part_new_bak/third_part_201406171627.tar.gz --exclude=*.apk --exclude=third_part_new/sdk/* --exclude=third_part_new/test
third_part_new/
49.157服务器:
tar -czvf /data/scanSystem201406301025.tar.gz --exclude=*.apk --exclude=*.img --exclude=*.gz --exclude=tools/* scanSystem/
tar -czvf /data/emulator_scan201407031747.tar.gz --exclude=*.apk --exclude=.android/* --exclude=*.gz --exclude=temp/* --exclude=sdcard/*
emulator_scan/
tar -czvf emulator_scan201407081806_48189.tar.gz --exclude=*.apk --exclude=*.img --exclude=*.gz --exclude=log/* --exclude=temp/* --exclude=SafeManager/log/*
--exclude=Tencent/log/* --exclude=Trustgo/log/* --exclude=360Safe/log/ .
find . -mtime 0 #
find files modified between now and 1 day ago
# (i.e., within the past 24 hours)
find . -mtime -1 # find files modified less than 1 day ago
# (i.e., within the past 24 hours, as before)
find . -mtime 1 # find files modified between 24 and 48 hours ago
find . -mtime +1 # find files modified more than 48 hours ago
find . -mmin +5 -mmin -10 # find files modifed between
# 6 and 9 minutes ago
time:
date -d -2day +%Y%m%d
date -d 1day +%Y%m%d
查看守护进程:
ps xj
判断字符串为空的方法有三种:
if [ "$str" = "" ]
if [ x"$str" = x ]
if [ -z "$str" ]
统计文章中某字出现的次数:
① awk '{s+=gsub(/level/,"&")}END{print s}' fileName
② cat file | grep -o "level" |wc -l
-o, --only-matching
Print only the matched (non-empty) parts of a matching line, with each such part on a separate output line.
打印匹配行的匹配部分,每一个匹配作为一行
liujl@ubuntu:~$ cat /etc/passwd | grep www
www-data:x:33:33:www-data:/var/www:/bin/sh
liujl@ubuntu:~$ cat /etc/passwd | grep -o "www"
www
www
www
liujl@ubuntu:~$ cat /etc/passwd | grep -o "www" |wc -l
查看文件中文件中的指定内容:
find ./ -name "unknownlist_*" | xargs grep "62aa180a3d5957cec348f25b953e8d60"
去除文件中重复的行:
sort -u test
计算百分比,expr不支持浮点除法
所以用awk格式输出:
virus_rate=`awk 'BEGIN{printf "%.2f%\n",('$not_contain_apksnum'/'$total_virus_apksnum')*100}'` 2>/dev/null
tar 打包相关:
tar --exclude=./sys.log -jcv -f bak.tar.bz2 ./*.log
将当前目录下除sys.log以外所有log文件打成一个用bzip2压缩生成的包名为bak.tar.bz2的包;
tar -N "2010/10/08" -jcv -f bak.tar.gz ./*.log
将当前目录下所有修改日期比"2010/10/08"新的log文件打成一个用gzip压缩生成的包名为bak.tar.gz的包;
tar --newer-mtime="2010/10/08" -jcv -f bak.tar.bz2 ./*.log
将当前目录下所有修改日期比"2010/10/08"新的log文件打成一个用bzip2压缩生成的包名为bak.tar.bz2的包;
${varible##*string} 从左向右截取最后一个string后的字符串
${varible#*string}从左向右截取第一个string后的字符串
${varible%%string*}从右向左截取最后一个string后的字符串
${varible%string*}从右向左截取第一个string后的字符串
awk 用法:awk ' pattern {action} '
FS 输入域分隔符,默认为一个空格
RS 输入记录分隔符
NF 当前记录里域个数
NR 到目前为止记录数
OFS 输出域分隔符
ORS 输出记录分隔符
shell,变量的变量获取:
engine_name=360
engine_num_360=2
engine_num=`eval echo '$'engine_num_$engine_name`
数组for循环的两种方法:
for port in ${port_list[@]}
直接访问port
for ((index=0;index<${#port_list[@]};index++))
访问 ${port_list[$index]}
例如 a=1,2,3,4 转化为数组:
OLD_IFS="$IFS"
IFS=","
port_list=($port_list)
device_names=($device_names)
IFS="$OLD_IFS"
2015-03-01
记录log文件,在配置中无意在每个需要生成的文件后面多添加了一个空格,
例如 exception_2015-03-01.log------>"exception_2015-03-01.log "(多出一个空格)
这个空格如何批量去掉?
[plain] view
plaincopy
ls *.log\ | awk '{printf "mv \t \"%s\"\t",$0;gsub(/[[:blank:]]/,"");print "\t"$0}' > a.list
通过awk的gsub来实现替换
执行上个命令,a.list为:
mv "xxxx_log_2015-02-28.log "xxxx_log_2015-02-28.log
然后用shell执行这个a.list,就可以去掉后面的空格!
工作中经常用到的方便操作的shell命令,记录如下:
全局替换:
:%s/tmp\/\"/tmp\/\$dev_id\"\_/g
:%s/\$log_time_format /
\`date\+%Y%m%d%H%M\`
/g
打包
tar -czvf /data/third_part_new_bak/third_part_201406161044.tar.gz --exclude=*.apk 360Safe/ common
tar -czvf /data/third_part_new_bak/third_part_201406171627.tar.gz --exclude=*.apk --exclude=third_part_new/sdk/* --exclude=third_part_new/test
third_part_new/
49.157服务器:
tar -czvf /data/scanSystem201406301025.tar.gz --exclude=*.apk --exclude=*.img --exclude=*.gz --exclude=tools/* scanSystem/
tar -czvf /data/emulator_scan201407031747.tar.gz --exclude=*.apk --exclude=.android/* --exclude=*.gz --exclude=temp/* --exclude=sdcard/*
emulator_scan/
tar -czvf emulator_scan201407081806_48189.tar.gz --exclude=*.apk --exclude=*.img --exclude=*.gz --exclude=log/* --exclude=temp/* --exclude=SafeManager/log/*
--exclude=Tencent/log/* --exclude=Trustgo/log/* --exclude=360Safe/log/ .
find . -mtime 0 #
find files modified between now and 1 day ago
# (i.e., within the past 24 hours)
find . -mtime -1 # find files modified less than 1 day ago
# (i.e., within the past 24 hours, as before)
find . -mtime 1 # find files modified between 24 and 48 hours ago
find . -mtime +1 # find files modified more than 48 hours ago
find . -mmin +5 -mmin -10 # find files modifed between
# 6 and 9 minutes ago
time:
date -d -2day +%Y%m%d
date -d 1day +%Y%m%d
查看守护进程:
ps xj
判断字符串为空的方法有三种:
if [ "$str" = "" ]
if [ x"$str" = x ]
if [ -z "$str" ]
统计文章中某字出现的次数:
① awk '{s+=gsub(/level/,"&")}END{print s}' fileName
gsub(r,s) | 在整个$0中用s替代r |
gsub(r,s,t) | 在整个t中用s替代r |
-o, --only-matching
Print only the matched (non-empty) parts of a matching line, with each such part on a separate output line.
打印匹配行的匹配部分,每一个匹配作为一行
liujl@ubuntu:~$ cat /etc/passwd | grep www
www-data:x:33:33:www-data:/var/www:/bin/sh
liujl@ubuntu:~$ cat /etc/passwd | grep -o "www"
www
www
www
liujl@ubuntu:~$ cat /etc/passwd | grep -o "www" |wc -l
查看文件中文件中的指定内容:
find ./ -name "unknownlist_*" | xargs grep "62aa180a3d5957cec348f25b953e8d60"
去除文件中重复的行:
sort -u test
计算百分比,expr不支持浮点除法
所以用awk格式输出:
virus_rate=`awk 'BEGIN{printf "%.2f%\n",('$not_contain_apksnum'/'$total_virus_apksnum')*100}'` 2>/dev/null
tar 打包相关:
tar --exclude=./sys.log -jcv -f bak.tar.bz2 ./*.log
将当前目录下除sys.log以外所有log文件打成一个用bzip2压缩生成的包名为bak.tar.bz2的包;
tar -N "2010/10/08" -jcv -f bak.tar.gz ./*.log
将当前目录下所有修改日期比"2010/10/08"新的log文件打成一个用gzip压缩生成的包名为bak.tar.gz的包;
tar --newer-mtime="2010/10/08" -jcv -f bak.tar.bz2 ./*.log
将当前目录下所有修改日期比"2010/10/08"新的log文件打成一个用bzip2压缩生成的包名为bak.tar.bz2的包;
${varible##*string} 从左向右截取最后一个string后的字符串
${varible#*string}从左向右截取第一个string后的字符串
${varible%%string*}从右向左截取最后一个string后的字符串
${varible%string*}从右向左截取第一个string后的字符串
awk 用法:awk ' pattern {action} '
FS 输入域分隔符,默认为一个空格
RS 输入记录分隔符
NF 当前记录里域个数
NR 到目前为止记录数
OFS 输出域分隔符
ORS 输出记录分隔符
shell,变量的变量获取:
engine_name=360
engine_num_360=2
engine_num=`eval echo '$'engine_num_$engine_name`
数组for循环的两种方法:
for port in ${port_list[@]}
直接访问port
for ((index=0;index<${#port_list[@]};index++))
访问 ${port_list[$index]}
例如 a=1,2,3,4 转化为数组:
OLD_IFS="$IFS"
IFS=","
port_list=($port_list)
device_names=($device_names)
IFS="$OLD_IFS"
2015-03-01
记录log文件,在配置中无意在每个需要生成的文件后面多添加了一个空格,
例如 exception_2015-03-01.log------>"exception_2015-03-01.log "(多出一个空格)
这个空格如何批量去掉?
[plain] view
plaincopy
ls *.log\ | awk '{printf "mv \t \"%s\"\t",$0;gsub(/[[:blank:]]/,"");print "\t"$0}' > a.list
通过awk的gsub来实现替换
执行上个命令,a.list为:
mv "xxxx_log_2015-02-28.log "xxxx_log_2015-02-28.log
然后用shell执行这个a.list,就可以去掉后面的空格!
删除修改时间在30天之前的所有文件
find . -type f -mtime +30 -exec rm -v {} \;
相关文章推荐
- shell脚本方便操作记录(持续添加)
- C++调用Python脚本遇到的问题记录《后续还会添加 方便查阅》
- shell脚本自动记录登陆后的IP地址和某用户名所操作的历史记录
- 管道符和作业控制、shell变量、环境变量配置文件、添加操作记录审计
- shell脚本自动记录登陆后的IP地址和某用户名所操作的历史记录
- 大坑记录 - shell脚本删除操作
- 分布式监控系统Zabbix-3.0.3-完整安装记录 - 添加shell脚本监控
- 巨简单循环shell脚本验证&符号后台操作(并记录查看当前shell的方法)
- shell脚本自动记录登陆后的IP地址和某用户名所操作的历史记录
- 用shell 脚本来操作subversion
- shell脚本专家指南--日期时间操作
- Shell脚本学习笔记(十)--文件操作
- 【SHELL脚本】文件操作
- Linux脚本(shell)编程(三) 文件操作
- 在wamp集成环境中添加mysql操作记录
- Shell操作数据库流控脚本实例
- 数据库交易记录--如何添加审计信息到闪回归档数据以替换操作日志表
- linux-history历史记录添加操作时间
- shell 脚本实现二进制文件数据的异或(xor)操作
- CVS添加用户时不太方便,我写了个自动脚本,源码如下