shell常用代码

grep -lr 'hello' /usr/share/*  #在/usr/share目录下查找包含hello的字符串

NOW_DATE=`date "+%Y%m%d%H%M%S"`  #日期时间格式化20130720131611

START_DATE=`date -d 'yesterday' "+%Y-%m-%d"` #昨天的日期 [1]

#bash中变量赋值,等号两边均不能有空格存在

$# 是传给脚本的参数个数
$0 是脚本本身的名字
$1是传递给该shell脚本的第一个参数
$2是传递给该shell脚本的第二个参数
$@ 是传给脚本的所有参数的列表

#if语句使用 [2]

if [ x$1 != x ]; then
    #Have args
    NEW_FILE_NAME=$1
elif [ $1x == "h5"x ]; then
    NEW_FILE_NAME=h5_web
else 
    #Not have args
    NEW_FILE_NAME=$NOW_DATE
fi
echo $NEW_FILE_NAME

#Linux ZIP压缩文件 [1]
zip -rq -8 aaaa.zip aaaa/
zip -rq Android_demo_src.zip codes/*

# Linux下使用unrar解压RAR包 [1]
1.查看rar包中的内容:
    #unrar l *.rar 或者
    #unrar v *.rar
2.测试rar包是否能解压成功:
    #unrar t *.rar
3.解压到当前文件夹:
    #unrar e *.rar
4.解压到指定文件夹:
    #unrar x *.rar /tmp

yum install rar unrar  #在有RPMforge源的情况下安装unrar

ls -l --full-time     #linux ls 命令查看完整的文件创建时间

find /var/www/html/test/ -name "*.php" -print |xargs -n1 echo                               #通过find查找文件夹下的文件再做相关操作
find /var/www/html/test/ -name "*.php.bak"|sed 's/.bak$//g'| xargs -n1 -i mv -f {}.bak {}   #把带特定后辍的文件去除后辍后覆盖不带后辍的文件
find ./* -name "*.php" -print | xargs tar -czpPf bak1.tar.gz                                #find查找文件后再tar

#cat再tar
a.txt中内容
/tmp/1.txt
/tmp/2.txt

cat a.txt | xargs tar -czpPf bak1.tar.gz


#对文件中的每一行所对应的文件中的内容进行替换操作
aaa.txt文件中的内容
/tmp/1.txt
/tmp/2.txt

cat aaa.txt | xargs -n1 sed -i 's/compileSdkVersion 21/compileSdkVersion 25/'

tar czpPf test.tar.gz --exclude=aa ./*                  #将当前目录下的所有文件打包除aa文件夹外,如果要去除多个文件夹可用多个"--exclude=file...",文件也是一样的

0 12 * * * mail test < /home/test/test.txt
分时日月周 |========命令行===============|

“/”代表”每”,
“-”代表从某个数字到某个数字,
“,”分开几个离散的数字 

#用awk输出被空格分隔的每一个字段
echo "a b c"|awk '{for(i=1;i<=NF;i++) { print $i; }}'

#用sed删除文件中的一行
sed -i "/pool.ntp.org/d" /var/spool/cron/root_test

#用sed替换文件中的"/sss.sh"字符串为空
sed -i 's/\/sss\.sh//' /etc/rc.d/rc.local_test

#用sed查找包含80的行前加入一行
sed -i '/-A ... port 80 -j ACCEPT/i-A ... port 8888 -j ACCEPT' /etc/sysconfig/iptables_test
sed -i '/-A ... port 80 -j ACCEPT/a-A ... port 8888 -j ACCEPT' /etc/sysconfig/iptables_test    #在行后插入一行

#grep查找一个字符串并显示前后n行
grep -in 'mt_srand' -r ./ --colour -5     [1]
grep -rnC5 'mt_srand' ./*                 #同上
grep -rnB5 'mt_srand' ./*                 #前5行
grep -rnA5 'mt_srand' ./*                 #后5行,更多参数可"grep --help"查看

#for使用 [1]
for((i=0;i<=9;i++));do wget http://test.com/$i.ogg ;done
for i in *; do echo $i ; done

for((i=1;i<=12;i++))
do
    if [ $i -lt 10 ]; then
       month="0$i"
    else
       month=$i
    fi

    echo $month
    rm /tmp/sounds/2015"${month}"*

    #显示1-12天前的日期
    START_DATE=`date -d "-$i day" "+%Y-%m-%d"`

done

#shell运行脚本时加上-x选项可调试脚本
sh -x a.sh可调试代码

#shell中单引号字符串中加入变量  
echo 'aaaaa'$x'aaaaaa'

#将iso中的一个img文件挂载到一个目录下显示 [1]
file /mnt/usb/images/install.img          #可查看文件的类型为squashfs
mount -o loop -t squashfs /mnt/usb/images/install.img /mnt/os_install

#查看selinux状态
sestatus -bv

setenforce 0 立刻关闭 SELINUX
setenforce 1 立刻启用 SELINUX

#卸载yum安装的软件
yum -y remove 安装软件名

#wget下载文件时自动新建和url中相同的目录
wget -x http://wwww.a.com/b/c/c.txt #会自动新建b/c目录

#git切换到指定版本 [1]
git checkout 8d39ad

#命令行获取文件md5值
md5sum CentOS.iso | cut -d ' ' -f1

#一条命令建多个同级目录
mkdir {aaa,bbb,ccc}    #","前后不能有空格

#linux下通过命令行进行文件编码转换 [1]
iconv -f gbk -t utf8 111.txt > test_Semaphore2.cpp
iconv -f gbk -t utf8 111.txt -o test_Semaphore2.cpp

#将查找到的文件批量转换为utf8(注意:操作前请先备份)
find ./src -name "*.cpp_test" -print |xargs -n1 -i iconv -f gbk -t utf8 {} -o {}

#diff命令的使用 [1]
diff -c build.sh build.sh.bak

#netcat(nc)命令使用 [1]
yum install nc          #安装nc命令
nc -l 8080              #监听8080接口
nc localhost 8080       #连接到本机的8080接口
nc -l -p 5060

#时间转时间戳
date -d "2015-07-24 12:25:00" +%s

#时间戳转时间 [1]
date -d "@1437711900"

#获取访问url后的http code
http_code2=`curl -o /dev/null -s -m 10 --connect-timeout 5 -w %{http_code} 'https://www.baidu.com'`

#PS查看进程按CUP或内存占用排序
ps -eo user,pid,pcpu,pmem,args --sort=-pcpu
ps -eo user,pid,pcpu,pmem,args --sort=-pmem

#用rsync将src目录下的所有内容同步到desc目录,如果desc目录不存在则会自动创建
    rsync -av --delete  src/ desc2
//--delete参数,这将删除只存在于目标目录、不存在于源目录的文件
//rsync 会同步以"点"开头的隐藏文件,如果要排除隐藏文件,可以这样写--exclude=".*"

#用rsync进行增量备份
--link-dest参数用来指定同步时的基准目录。
    rsync -a --delete --link-dest /compare/path /source/path /target/path
上面命令中,--link-dest参数指定同步时的基准目录/compare/path,然后源目录/source/path跟基准目录进行比较,
找出变动的文件,将它们拷贝到目标目录/target/path。那些没变动的文件则会生成硬链接。这个命令的第一次备份时是全量
备份,后面就都是增量备份了。

#从a.txt中获取url,一行一个,下载后的文件按url中的目录存放
wget -i a.txt -r

#ls命令将文件以一列的形式列出来
ls ./*.xml -1

#linux进程内存使用情况查看[1]
ps -e -o 'pid,comm,args,pcpu,rsz,vsz,stime,user,uid' | grep "process_name"|  sort -nrk5
其中rsz为实际内存,上例实现按内存排序,由大到小

#时区修改
timedatectl set-timezone Asia/Shanghai

#rm -f /etc/localtime
#ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

posted on 2013-07-01 23:03  dream_bccb  阅读(509)  评论(0)    收藏  举报