shell脚本学习 五

来源:互联网 发布:济南软件测试培训 编辑:程序博客网 时间:2024/05/23 01:16

case “字符串变量” in

值1) 指令1

;;

值2)指令2

;;

 *) 指令

esac


[3-9] 表示 3到9 的整数

apple|APPLE   中间可以用或

给文字加颜色,就是在文字两头加上特定的字串

字颜色:30—–37
  echo -e “\033[30m 黑色字 \033[0m”
  echo -e “\033[31m 红色字 \033[0m”
  echo -e “\033[32m 绿色字 \033[0m”
  echo -e “\033[33m 黄色字 \033[0m”
  echo -e “\033[34m 蓝色字 \033[0m”
  echo -e “\033[35m 紫色字 \033[0m”
  echo -e “\033[36m 天蓝字 \033[0m”
  echo -e “\033[37m 白色字 \033[0m”
 
  字背景颜色范围:40—–47
  echo -e “\033[40;37m 黑底白字 \033[0m”
  echo -e “\033[41;37m 红底白字 \033[0m”
  echo -e “\033[42;37m 绿底白字 \033[0m”
  echo -e “\033[43;37m 黄底白字 \033[0m”
  echo -e “\033[44;37m 蓝底白字 \033[0m”
  echo -e “\033[45;37m 紫底白字 \033[0m”
  echo -e “\033[46;37m 天蓝底白字 \033[0m”
  echo -e “\033[47;30m 白底黑字 \033[0m”
  最后面控制选项说明  www.2cto.com  
  \33[0m 关闭所有属性
  \33[1m 设置高亮度
  \33[4m 下划线
  \33[5m 闪烁
  \33[7m 反显
  \33[8m 消隐



函数:就是函数名() {......}

调用的时候就是直接用:函数名 参数 参数 参数...就可以了


Linux 系统中有 NFS : net file system 或者Portmap脚本


less /etc/init.d/portmap  less 命令表示 查看文档 pageup 和pagedown 可以翻页


lsof -i : 80       #lsof -i 用以显示符合条件的进程情况  “:80”  这样条件的进程被选了出来

  

命令行的最后一个& 表示的是 该行程序 是后台执行的程序

如果要调入前台 可以用 fg 命令


用cont+z 暂停

输入 bg 丢入后台去

输入jobs 显示所有后台进程

fg 序列号  就可以拿到前台

 

也可用nohup /server/scripts/uptime.sh &  #nohup 也是把进程放入后台的方式


系统 crontab 最小的时间粒度是一分钟,但是用while 方式后台执行可以用到粒度为妙(微秒)


-f 表示文件是否存在并且为普通文件

-e 表示文件是否存在。


RSYNC

rsync是类unix系统下的数据镜像备份工具——remote sync。一款快速增量备份工具 Remote Sync,远程同步 支持本地复制,或者与其他SSH、rsync主机同步


用/etc/init.d/rsyncd start|stop|restart   来启动服务。不建议用service rsyncd start 来启动服务


重要脚本 /etc/init.d/functions   和  /etc/rc.d/rc.sysinit     以及 nfs  portmap  httpd


while 条件

do

指令...

done


uptime  查看系统负载情况 

04:03:58 up 10 days, 13:19, 1 user, load average: 0.54, 0.40, 0.20


当前时间 04:03:58
系统已运行的时间 10 days, 13:19
前在线用户 1 user
平均负载:0.54, 0.40, 0.20,最近1分钟、5分钟、15分钟系统的负载


printf “totalsum is :$sum\n ”  #格式化输出更好看些


计算程序时间  用time关键字 加到 欲计算时间的脚本之前


seq 10 -1 1  打印 从10 打到1 间隔 -1长度


awk ‘{print $10}’ xxxxx |grep -v -|tr "\n" "+"   #把xxxxx文件打印第10列 然后过滤 -   然后把换行变成 +  求和

但是最后会多出一个加号

所以 awk ‘{print $10}’ xxxxx |grep -v -|tr "\n" "+" |sed ‘s#yyy#zzz#g’  最后的是 把yyy替换成zzz

输出计算字符串集合才能送往bc  echo `mmmmmmmm`|bc  (注意要用反引号) 

!!! 打印输出的内容才能传入管道


while read line  # 表示读入的时候是一行一行的处理

do 

size=`echo $line|awk '{print $10}'`

["$size"=="-" ] &&continue

((sum=sum+$size))

done<access_2010-12-8.log


或者用exec<file 在前面读入文件  exec是命令不是变量,其他一样

或者用 cat ${FILE_PATH} | while read line  用管道的方式读入



for 循环的方式

for num in $size  #(其中$size 可以省略) 省略时相当于in “$@”

do

xxxxx

done


for((exp1;exp2;exp3))

do

指令

done


ls -l |grep ^d  找出当前目录下 的子目录(类型为d)

ls -F | grep /   同上


ls *.jpg|awk -F 'ttt' '{print "mv" $0 " " $1 " .jpg"}'| bash  # 把拼接好的命令交给bash处理


echo -en

-n 不要在最后自动换行
    -e 打开反斜杠ESC转义。若字符串中出现以下字符,则特别加以处理,而不会将它当成一般文字输出:
           \a 发出警告声;
           \b 删除前一个字符;
           \c 最后不加上换行符号;
           \f 换行但光标仍旧停留在原来的位置;
           \n 换行且光标移至行首;
           \r 光标移至行首,但不换行;
           \t 插入tab;
           \v 与\f相同;
           \\ 插入\字符;
           \nnn 插入nnn(八进制)所代表的ASCII字符;


LANG=en  表示设定英文显示

chkconfig --list |grep 3:on  显示所有开机选项里 “3:on” 的行


seq -w 10  会输出 01 02 。。。10 这样等长(2个长度)的序列


for n in $(seq -w 10)

do

useradd oldboy-$n

echo "$n"|passwd --stdin oldboy-$n  #添加10个用户 密码录入对应的用户,密码是$n

done


随机数 echo $RANDOM  和  echo $(date +%t%N)

把随机数交给md5    echo $(date +%t%N)|md5sum


把不用的结果定向到空>&/dev/null 这样输出更好看



0 0
原创粉丝点击