shell笔记总结

1:实现命令的重定向到变量

test=$(ps -A |grep adpush)
echo $test
if [ "$test" == "" ]; then
echo "no   =="
else
echo $test

./adpush               #  这种方式只能用于当前目录或环境变量的执行文件,如果想运行其他目录的文件

                             #  则需要进入那个目录再运行  即: cd /dest    ./run.sh

../../adpush

./db_exec
fi

 

2:第一个功能的代替

#!/bin/sh
COUNTER=0
while [ $COUNTER -gt -1 ]
do
RES=`ps -ef | grep program_name|grep -v grep | wc -l`
if [ "$RES" -lt "1" ]
then
./program_name &
fi
sleep 60
done

 

 

3:针对ssh连接服务器后,脚本在断开ssh就停了的问题

nohup : http://www.21andy.com/blog/20071121/677.html

screen: https://www.ibm.com/developerworks/cn/linux/l-cn-screen/

 

直接在运行命令前加上nohup     nohup ./abcd

screen暂时还没看

 

 

4:字符串匹配

 

 if echo $line | grep -qE ".+new conn.+192.168.20.186.+"

 

 

 

 5:操作数据库

转载网友  http://blog.csdn.net/hbcui1984/archive/2010/01/03/5125387.aspx

#!/bin/bash
us='GreeNet'
pw='dbholonet'
mysql -u$us -p$pw -e"use gnadpush;delete from watchtable"

 

#/usr/bin/mysql  -u $us  -p$pw <<EOF
#    use gnadpush;
#delete from watchtable;
#EOF   

 

 

6: 批量更改文件名

最近需要干这么件事,把当前文件夹下文件名含有eee的都改成大写的EEE,比如21-eee.doc就要改成21-EEE.doc。

写了个shell脚本,会sed就不难了:

 

for filename in *eee*; do newname=`echo $filename|sed -n ’s/eee/EEE/p’`; mv $filename $newname;done

如果写成结构化会更清晰:

for filename in *eee*

do

newname=`echo $filename|sed -n ’s/eee/EEE/p’`

mv $filename $newname

done

 

 

 7:引用上个命令的参数

!$ 表示上一个命令的最后一个参数。如果你首次登陆终端,那么它会取history的最后一行命令的最后一个参数。

试试看!

ls -hl /rocrocket/software/program/git/bin/

这时,你就可以用cd !$来进入到这个深层目录啦!

ps: 如果你最后一个参数是双引号括起来的,那么!$也会很聪明的看出来。

 

8:

1、写脚本实现,在目录/tmp下找到100个以abc开头的文件,然后把这些文件的第一行保存到文件new中。
2、写脚本实现,把文件b中有的,但是文件a中没有的所有行,保存为文件c,并统计c的行数。
解答思路:

1: for filename in `find /tmp -type f -name "abc*"|head -n 100`
       do
             sed -n '1p' $filename>>new
       done

2:find /tmp -type f -name “abc*”|head -n 100|xargs head -q -n 1

3:awk ‘NR==FNR{a[$0]=1}NR!=FNR&&!a[$0]{print > “c”}’ a b

4:diff t1 t2 | grep “<" | sed 's/^ tt ; cat tt | wc -l

5:diff b a | sed ‘/^>/d’| sed ’s/c

6::grep -v -x a.txt -f b.txt | wc -l

7:sort a > a2  ;  sort b > b2   ;  comm -23 a2 b2 | wc -l

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值