shell脚本语言基本语法学习

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/guoer9973/article/details/44806547

Qiniu 七牛问题解答

Build Status

Qiniu Logo

shell脚本语言入门

问题解决方案

Shell日常学习

Cd / 进入到根目录

Pwd 当前目录结构

Tab 模糊查找补全命令


Ifconfg 查看当前网络的信息

*?[]  通配符 方便查询

星花* 匹配多个 ls *.tar 
?匹配单个 ls m???
[  ]  ls  m* [od] 列出以m开头结尾为od 的目录火文件
    Ls  x* [0-9]  
    Ls  g *[m-p]


目录操作命令:

当前工作目录:pwd

进入主目录:cd  ~

列出文件类型:ls -F

列出隐藏文件: ls  -a

或者 ls -aF

显示文件的各种属性:  ls  -l

显示目录下文件的信息: ls -aF /etc

或者显示目录:dir


或者显示文件的详细属性:vdir

显示文件行号: cat -n  filename

Cat 有缺陷。滚动显示

More +filename  下一页,分屏显示 按空格滚动


     或者用管道: cat -n  filename |more

查看文件的前五行: head  -n 5 filename

查看最后五行的内容: tail -n 5 filename

更为强大的 less

用方向键可以上下滚动,输入 q 可退出


查找文件的信息: grep  内容 文件名

在当前目录中查找文件名称中含有bash: find ./ -name *bash*

查看文件类型 type +文件名

查找某个目录下面名称为init.d 文件类型为目录的
:find /etc -name init.d -type  d -print

Type (c d f)
C 为链接
D 为目录
f为普通文件

指定时间在100天以内没使用过的命令:  find  /usr/bin/ -type f -atime +100 -print

指定最后修改时间为一天之内的普通文件 : find ./ -type f -mtime -1 -print

快速查找: locate filename
           Updatedb

打开火狐浏览器:firefox

Firefox & 在后台运行

Firefox www.baidu.com
查找程序文件: whereis find

查找find 命令的位置,和文档位置

查看命令存在的目录: which ls

查看当前系统中有哪些用户存在: who

查看当前系统的版本信息:uname - a


帮助命令: man find

简单帮助命令: whatis ls


正则表达式:

Nl  + filename : 以行查看文件,代替cat



列出文件中以a 开头,以t结尾的文本:点代表任意字符,*代表任意次数,¥代表结  尾,…^代表开头。

Egrep “^a.*t$” filename


查看刚才的输出有多少个:

加个| wc -w

示例:

Egrep “.at” filename

这个命令显示出来的是at前面至少一个单词
可能不会满足我们的需要,如果我们想要前面只有一个单词
那么我们只能这样

Egrep “\<.at\>”filename


字符集的概念:

以abc 其中一个开头的文件名
Egrep  “[abc]at” filename



列出文件中,所有以大写字母开头,小写字母t结尾的:

Egrep  “^[[:upper:]]t$” filename


 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103
  • 104
  • 105
  • 106
  • 107
  • 108
  • 109
  • 110
  • 111
  • 112
  • 113
  • 114
  • 115
  • 116
  • 117
  • 118
  • 119
  • 120
  • 121
  • 122
  • 123
  • 124
  • 125
  • 126
  • 127
  • 128
  • 129
  • 130
  • 131
  • 132
  • 133
  • 134
  • 135
  • 136
  • 137

Shell 编程

Vi helloword.sh

!/bin/bash

这是一个实例文件

Echo “helloword”

Chmod u+x helloword.sh

./helloword.sh

另一个示例:

这里写图片描述

!/bin/bash

Log =”monday”
Echo “this is monday”
Echo logEcho$EchologislogEcho$Echo“logis(log)”

单引号括起来,所有都不解释
双引号。除了$,等不解释

!/bin/bash

Log=saturday

Echo “today is $log”

Echo ‘today is $log’

Echo “today is date

输出结果
这里写图片描述

Shell执行命令和循环执行和控制语句

If判断命令
这里写图片描述

Case:

这里写图片描述

if

有关循环重复的语句。

! /bin/bash

Sum=0
Number =1
While test numberle100DoSum=number−le100DoSum=sum”

-le
-gt 大于

Cut命令

主要作用,从输入的行中,提取指定的部分

源文件:

Beijing 010
Shanghai 021
Tianjin 022
Hangzhou 0571

命令: cut -c 3-6 city

命令: cut -f1 city 提取输入行的第一列

Sort 命令:

Sort city: 对第一列进行排序

Sort -r city: 对第一列进行反序排序

Sort -k 2 city : 对第二列进行排序
这里写图片描述

如果有重复的行:

首先要先排序一下,才能用uniq命令

Sort city |uniq
将几个字符替换成小写,输入在city中
Tr “BHS” “bhs”

代码实践一

#!/bin/bash

function  gotoLogFile()
{

case   $1  in
"579" )
   echo $2 , $3;
   cd  ~/logs/$2/REQ/UP;
   timePoint=`echo $3 |sed 's/.$/0/'`;
   echo "${timePoint}.log";
   cat   "${timePoint}.log"    | awk  -F '\t'  '{if($8  == 579){print substr($0, index($0, "uid") + 5, 10)}}' | sort  -rn  | uniq -c  |sort -rn | head -20

   ;;
"4xx" )
   echo  "404";;
"6xx" )

    echo $2, $3
    cd  ~/logs/$2/REQ/RS; 
    timePoint1=`echo $3 |sed 's/.$/0/'`;
    echo "${timePoint1}.log";     
    cat   "${timePoint1}.log"  | awk  -F '\t'   
    cat   "${timePoint}.log"    | awk  -F '\t'  '{if($8  == 579){print substr($0, index($0, "uid") + 5, 10)}}' | sort  -rn  | uniq -c  |sort
    cat  16-40.log  |   awk -F '\t' '{ if($8  ~/^4/){print $8, substr($0, index($0, "uid") + 5, 10) }}'  | awk '{if( $1 == 404){a[$2] +=1 } else if($1 == 200){b[$2 +=1]} else{} } END{for (i in a) print a[i] " ==>" i ; for (i in b) print b[i] " ==>" i}'
  ;;

esac

}

if [ $# -ne 3 ]; then

echo "Usage : $0  <错误码> <日期> <当天时间点> 
 for  example  $0  519   2014-12-28  11-29
";

exit  1;

fi

gotoLogFile $1  $2  $3

 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43

代码实践二

#! /bin/bash
number=1
filenumber=1
length=200
cd /home/liuhanlin/test/qiushi/
totalfile=`ls -l |wc -l`
echo "$totalfile"
center=$totalfile
flag=-1
bound=$length
while test $flag -le 0
do
           mkdir "qiubai$filenumber"
           while test $number -le $bound
               do
                     mv "$number" "qiubai$filenumber"
                     let number=$number+1
               done
           let center=$[ $center - $length ]
           echo "$flag">config.txt
           echo "$center">config.txt
           let filenumber=$filenumber+1
           echo "$filenumber">config.txt
           let bound=$[ $length * $filenumber ]
           echo "$bound">config.txt
           if [ $center -le  $length ];
           then
              let flag=1
           fi
done
mkdir "qiubai$filenumber"
while test $number -le $totalfile
do  
              mv "$number" "qiubai$filenumber"
              let number=$number+1
done
 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
            <link href="https://csdnimg.cn/release/phoenix/mdeditor/markdown_views-526ced5128.css" rel="stylesheet">
                </div>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值