Qiniu 七牛问题解答
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$Echo“logislogEcho$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 number−le100DoSum=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>