20170103
1、vi/vim编辑命令,.vimrc设置
2、命令基础,100多个命令
3、基础,高端的网络服务都要会,nfs,rsync,inotify,lanmp,sersync,ssh key批量分发管理
清空文件的三种方法
>log.log
echo >log.log
cat /dev/dull >log.log
aix ksh
unix posix sh
linux bash
20170105
dirname $0
basename $0
[ $? -eq 0 ] && echo ok
rename .jpg .JPG * #讲.jpg替换成 .JPG
${value:-word}如果value为定义,则表达式的值为word
${value:=word}如果value未定义,则设置value的值为word
${value-word}变量未定义就用-后面的替代。如httpd=${HTTPD-/usr/sbin/httpd}
sh -x a.sh分析a.sh的执行过程,实际并未执行
20170105
seq -s " " 100
seq 100
seq 100 -1
echo ${#var}计算字符串的长度,效率最高
echo $char|wc -m 计算字符串的长度
echo $(expr length "$var")计算字符串的长度
man bash变量处理大全
变量的数值计算常用如下几个命令
(())、let、expr、bc、$[]
(())只能是整数运算
((a=1+2**3-3%2))或者a=$((1+2**3-3%2))
echo $((1+2**3-3%2))
echo $((3>2))
let
i=2
let i=i+6
echo $i
expr
expr 1 + 3
expr $[2*4]
expr "$1" : "*\.pub" 如果$1的格式匹配.pub,则为真,若为真则输出字符的个数,否则为零
read -t 5 -p "please input:" a #a前面有空格
expr $a + 0 >/dev/dull 2>&1
[ $? -eq 0 ] && echo int||echo char 判断变量是否为整数
20170106
a=2
i=`echo $a+1|bc`
echo "scale=2;5.33 / 3.13"|BC
条件测试
1、test <表达式>#test ! -f file && echo 1||echo 0
2、[<表达式>]#[ -f "file" ] && echo 1||echo 0#[ -f file -a -d folder ] && echo 1||echo 0
3、[[<表达式>]]#[[ -f file && -d folder ]] && echo 1||echo 0#可以使用通配符进
行模式匹配,&&、||、>、<等可以应用于[[<表达式>]]中,而不能用于[<表达式>]中
字符串测试操作符
-z "字符串"#长度为0则为真
-n "字符串"#长度不为0则为真
“字符串1”=“字符串2”#相等则为真
“字符串1”!=“字符串2”#不相等则为真
在[]中使用-eq、-ne、-gt、-ge、-lt、-le #[ 2 \< 1 ]
在(())、[[]]中使用==、!=、>、>=、<、<=
在[]中使用-a、-o、!
在[[]]中使用&&、||、!
20170108
cat <<END
ewrfe
edcfwe
edfw
END
if 条件
then
指令
else
指令
fi
if 条件
then
指令
elif 条件
then
指令
elif 条件
then
指令
else
指令
fi
判断MySQL服务状态的方法
portdb=`netstat -lnt|grep 3306|awk -F '[ :]+' '{print $5}'`
netstat -lnt|egrep "3306|3307"|wc -l
ps -ef|grep mysqld|grep -v grep|wc -l
20170109
mysql -uroot -p'zzzz' -S /data/3306/mysql.sock -h 10.10.10.11 -e "select version();"
httpPortNum=`nmap 10.10.10.19 -p 80|grep open|wc -l`
wget -T 10 -q --spider http://10.10.10.19 >&/dev/null
echo $?
curl -s http://10.10.10.19 >&/dev/null
curl -I baidu.com
curl -I -s 10.10.10.19|head -1|cut -d " " -f2
. /etc/init.d/functions
action "nnnnnnnnnn" /bin/true
echo -e "\n"|telnet baidu.com 80|grep Connected
nc -w 5 www.baidu.com 80 && echo ok
usleep 1000000
########################
sum=0
i=0
while ((i <=100 ))
do
((sum=sum+i))
((i++))
done
####################
tr "\n" "+" #将换行换成+
###################
sum=0
while read line
do
size=`echo $line|awk '{print $10}'`
["$size" == "-"] && continue
((sum=sum+$size))
done<apache.log #计算日志apache.log中图片的大小
[ -n "$sum" ] && echo "$size"
###########################
exec <file
sum=0
while read line
do
cmd
done
#########################
cat ${file_path}|while read line
do
cmd
done
################################
while read line
do
cmd
done<file
##########################
for 变量 in 变量列表
do
cmd
done
####################
for i 等于for i in "$@"
##############
for((exp1;exp2;exp3))
do
cmd
done
######################
for num in {5..1}#{5..1}等于5 4 3 2 1
do
echo $num
done
#################
echo {5..1}
echo {a..z}
echo 10.10.10.{5..1}
##############
ls *.jpg|awk -F 'xx' '{print "mv" $0 ""$1".jpg"}|bash#把文件名字中的xx去掉
##############批量创建用户
#!/bin/bash
for n in $(seq -w 10)
do
useradd user-$n
echo "$n"|passwd --stdin user-$n
done
#######################批量创建用户且密码为随机数
#!/bin/bash
for n in $(seq -w 10)
do
passwd=`echo $(date +%T%N)%RANDOM|md5sum|cut -c 2-9`
useradd user-$n
echo "$passwd"|passwd --stdin user-$n
echo -e "user:\tuser-$n passwd:\t$passwd">>/tmp/passwd.txt
done
########################
本文转自shangshanyang51CTO博客,原文链接: http://blog.51cto.com/qqran/1890165,如需转载请自行联系原作者