5天学会linx内核Word文件下载.docx
- 文档编号:19757602
- 上传时间:2023-01-09
- 格式:DOCX
- 页数:37
- 大小:903.16KB
5天学会linx内核Word文件下载.docx
《5天学会linx内核Word文件下载.docx》由会员分享,可在线阅读,更多相关《5天学会linx内核Word文件下载.docx(37页珍藏版)》请在冰豆网上搜索。
grep"
text.txt|sort-k5-r|head-1判断上涨,然后head取第一行
6、grep"
200810"
text.txt|awk'
{if($4>
0){print$1,$5}}'
取出一月中上涨数据时间和上涨幅
7、grep"
200811"
5&
&
$4<
20){print$0}}'
判断区间取出整行
脚本代码实例分析1
编写一个shell脚本,执行脚本后自动ping以下地址:
192.168.1.1,192.168.1.31
以上IP地址直接写在脚本之中。
执行完成后,
应显示能够ping通的IP地址和不能够ping通的IP地址
#!
/bin/bash
ifping192.168.1.1-c1
then
echo"
192.168.1.1online"
else
192.168.1.1offline"
fi
ifping192.168.1.31-c1
192.168.1.31online"
192.168.1.31offline"
脚本代码实例分析2
修改分析1,但是从iplist.txt中读取IP
foripin`catiplist.txt`
do
ifping$ip-c1
${ip}online"
${ip}offline"
done
脚本代码实例分析3
修改分析2,去除无用的信息
ifping$ip-c1>
/dev/null2>
1
脚本代码实例分析4
修改分析3,生成记录
>
hoststatus.txt
|tee-ahoststatus.txt
脚本代码实例分析5
产生一个IP地址池,生成255个IP,并修改分析4,实现多线程ping
iplist
foripin`seq1255`
192.168.1.${ip}"
>
temp
fastping()
{
ifping${1}-c1>
|tee-atemp
}
fastping$ip&
wait
sort-t.-k4-ntemp>
rmtemp
temp./ping.sh测试一个脚本执行多久
以下是Shell学习1-2天学习笔记
————————-我是分隔符—————————
硬件去执行,内核与硬件之间进行操作。
命令解析器。
shell脚本的组成元素
1.系统命令
2.文本处理工具(sort、grep、sed、awk…)
3.变量
4.条件判断
5.环循结构
6.函数
ShellScriptsCenter(SSC)
———————————————————————————-
非负Grep/awk
几天。
统计Wc
Sort排序sort|head/sed
字段处理awk
数据区域判断awk|wc
显示文本:
echo[选项]文本
-n不要自动换行
-e解析转义符
a发出警告音
c最后不加上换行符号
f换行
r回车
彩色文本
Echo–e“33[40;
35m….]”
echo“Hello,world”
echo–e“33[40;
35mHell,world33[0m"
sort[选项]输入文件
-o输出文件
-d按字典顺序排序a-z
-n按数字大小输出0-9
-r逆序输出z-a9-0
-k指定分类是域上的数字分类
-t域分割符;
用非空格或tab键分割域
more/etc/passwd分页显示
sort–d/etc/passwd|more中间的|是反倒符号。
将前面处理的交给后面处理先排序。
后分页显示
sort–k3–n–r–t:
/etc/passwd|more
从大到小
wc[参数][文件名]
-c统计字符数量
-l统计行数
-w统计单词数量空格区分
diff[选项]文件/目录文件/目录
diff/etc/passwd/etc/passwd.bak
-q仅显示有无差异,不显示详细的信息
-c显示全部内文,并标出不同之处。
-b不检查空格字符的不同
-B不检查空白行
-r比较子目录中的文件。
grep搜索匹配支持正则表达式
grep
-c只打印匹配模式的行编号记数
-I在匹配文本时忽略大小写
-n在每行前显示其行编号
-v逆向输出,打印不匹配的行
-ffile要匹配的字符串列表在filezhong
grep‘[Tt]his'
file1.txt设置大小写
grep‘^[^#]‘file2.txt不匹配行首
grep“s…n”file3.txt匹配任意字符
sed行编辑命令
s替代
i插入
a附加
d删除全部匹配的行
D删除首次匹配的行
sed可以做什么(”行”为基础)
删除
改变
添加
插入
替换
示例
sed–n'
1,4p'
/etc/passwdp是打印-n不显示原文件打印1-4行
sed‘/80/D'
file.txt首次出现80的行进行删除
sed‘s/var/usr/g'
file.txt将所有的var替换成usrg代表所有
sed'
50,$s/help/man/g'
file.txt替换从50行到最后一行的help替换为man前49不管
awk可以处理列,也可以处理行,可以定位到第几行,第几列
awk[选项]‘awk脚本'
输入文件
-Ffs使用fs作为输入记录的字段分隔符=sort–t
-ffilename从文件filename读取awk_script(awk脚本)
-vvar=value为awk_script设置变量
awk的内置变量
变量
功能
默认
FS=大写F
输入字段分隔符
空格或tab
RS
输入记录分隔符
换行
OFS=outFS
输出字段分隔符
ORS
输出记录分隔符
NF常用
当前记录非空字段的编号
NR常用
从所有文件读入的记录号
awk–F:
‘{printNR,$1,$2}'
/etc/passwd
‘{printNR,$1,$NF}'
/etc/passwd$NF提取最后一行
‘NR%10==5{PRINTnr,$0}'
/etc/passwdNR=当前处理的行数除10求余=5打印当前的行数,进行输出$0整行输出,比如5、15、25打印出来
‘NR==8,NR==13{printNR,$0}'
/etc/passwd指定8行和13行。
awk工作原理(工具)
$NF$NR$1第一列$2第二列$0一整行
实际测试
awk–F:
‘{print$1,$3}'
/etc/passwd
‘{print$1,$NF}'
/etc/passwdNR行号
‘NR==5,NR==8{printNR,$1,$NF}'
/etc/passwd指定5-8行
‘NR%10==5{printNR,$1,$NF}'
/etc/passwd除10求余
课程示例测试
1、grep–v“-”file.txt去除所有带负号的数据-v显示没有的没有的话则显示只有-的
2、wc-lfile.txt显示所有行数grep–v“-”file.txt|wc–l统计所有没有负数的
3、sort–n–r–k4file.txt|sed–n'
1p'
排序第四列没有分隔符(即空格),-n数字–r从大到小sed管道显示第一行sed–n不显示原文件
sort–n–r–k4file.txt|head-1读取第一个数据head第一行
4、awk‘{if($NF>
3){print$0}}'
file.txtNF最后一列大于3则打印一整行
5、awk‘{if($4>
0,&
$4<
15){print$0}}'
file.txt列出第四列大于0小于15输出整行
awk‘{if($4>
file.txt|wc–l显示行数
练习:
1.grep和awk
awk‘{if($1>
200801011){[print$0}}'
file.txt
2、
处理命令回顾:
统计文本wc
文本排序sort
文本/目录对比diff
在文件中查找关键行grep/sed
在行文本中添、删、改sed
在列文本中显示指定列awk
在列文本中进行计算awk
在列文本进行条件选择awk
1.获取本机主机名
#hostname
2.获取本系统版本号
#uname-r
3.获取cpu类型
4.获取cpu的工作频率
cat/proc/cpuinfo
5.获取内存使用情况
#free-m
6.获取硬盘使用情况
#df
变量类型及变量操作
1.本地变量(一般所指)
本地变量只存在用户当前shell中,当用户退出当前shell或开器一个新的shell,所设置的变量将会不存在
设置变量
#变量名=变量值
显示变量
#echo${变量名}
假设a=1显示则echo${a}
2.环境变量(用的非常少)
环境变量用于所有用户进程(经常称为子进程)。
登录进程称为父进程。
Shell中执行的用户进程均称为子进程。
不像本地变量,环境变量可用于所有子进程,这包括编辑器、脚本和应用
环境变量在用户注销时会消失,因此最好在$HOME/.bash_profile(/etc/profile)文件里直接定义
3.位置变量(跟脚本和函数有很大的关系)
位置变量表示$0,$1……$9(只有9个)
$0
$1
$2
$3
$4
$5
$6
$7
$8
$9
脚本名字
A
B
C
D
E
F
G
H
I
$0=当前脚本名称
向脚本中使用位置参数
向系统命令传递参数
4.特殊变量
$#传递到脚本的参数列表个数
$*($@)以一个单字符串显示所有向脚本传递的参数
$$脚本运行的当前进程ID号
$?
显示最后命令的退出状态。
0表示没有错误,其他任何值表明有错误。
引用的必要性
变量操作中,脚本执行变量赋值时最容易犯的一个错误就是引用错误
例:
echoabc*
echoabc‘*'
echoHitthestarbuttontoexit*
引用的方式
双引号(“)(需要排除以下几个)
使用双引号可以引用除$、`、\、字符外的任意字符或字符串
单引号(‘)(比较霸道,任何都可以转成字符)
与双引号类似,不同的是shell会忽略任何引用值。
换句话说,如果屏蔽了其特殊含义,会将引号里的所有字符,都作为一个字符串。
反引号(`)(将括号内的当作命令来执行)
用于设置系统命令的输出到变量。
shell将反引号中的内容作为一个系统命令,并执行其内容
反斜杠(\)
如果一个字符有特殊含义,反斜线防止shell误解其含义,即屏蔽其特殊含义。
下述字符包含有特殊意义:
*+^$`”|?
脚本实例
1.Hello.sh
#Thisisthefirstscript
echo“Hello,World!
”
执行:
chmodu+xHello.sh
./Hello.sh
2.var.sh
echo$1
echo$2
echo$3
echo$4
echo$5
echo$6
echo$7
echo$8
echo$9
echo$10
3.#!
echo–e“hostname\t`hostname`”
echo–e“OScore\t`uname-r`”
echo–e“CPUInfo\t`grep“modelname”/proc/cpuinfo|awk–F:
‘{print$2}'
`”
ehco–e“CPUMHz\t`grep“MHz”/proc/cpuinfo|awk–F:
echo–e“MEMTotal\t`free|awk‘$1=”Mem:
”{print$2}'
echo–e“DiskInfo\t`df|grepdev|awk‘{print$1$2}'
回顾:
脚本的结构与运行
变量的类型及用法
环境变量
本地变量
参数变量
特殊变量
第三天:
条件选择
大纲
应用实例分析
条件测试
if…else…fi
case…in…esac
实现功能菜单:
执行脚本后
按1,显示当前时间
按2,显示CPU负载
按3,显示剩余内存
按0,退出脚本
按其他字符,提示超出选择范围后退出
分析步骤。
#date+%T
uptimeawk截取
free–m
条件测试格式
#test–optionobj
#[-optionobj]
返回结果
1.表达式内容测试结果是真的
2.表达式内容测试结果是假的
测试的对象分类
执行结果(执行成功或失败)
文件(文件是否存在等)
文本(是否一致)
数字(数值比较)
条件测试的选项
选项
作用
-d
目录
-e
是否存在
-f
是否是普通文件
-s
文件大小是否等于0
-r
是否可读
-w
是否可写
-x
是否可执行
逻辑操作符号
-a
与操作
-o
或操作
!
非操作
实例:
#test–e/etc/passwd–a–e/etc/shadow中间是a与操作,则都为0才得0
#test–e/etc/passwd–o–e/etc/groups中间是o或操作,则有一真则真0
字符串操作符
==两个字符串相等
=两个字符串不相等
-z空字符串
-n非空字符串
#test–z$LOGNAME
#echo$LOGNAME
#echo$?
数值比较操作符
符号
说明
-eq
等于
-ne
不等于
-gt
大于
-lt
小于
-ge
大于等于
-le
小于等于
if…else…fi条件选择
if控制结构的基本格式:
if条件#判断开始可以是命令,也可以是test语句
then#如果条件为真反值真0则执行
命令1#执行命令1
else#如果条件为假反值假1则执行
命令2#执行命令2
fi#判断结束
实例(if…else…fi)1
inputtest.sh
#inputtest
echo–n“Enteryourname:
readname
#didtheuserjusthitreturn
if["
${name}"
=="
"
]
echo“Youdidnotenteranyinformation”
echo“Yourname:
${name}”
实例(if…else…fi)2
filecopy.sh
#filecopy
ifcp/etc/passwdpasswd.bak2>
/dev/null丢掉错误提示
echo“GoodCopy!
echo“`basename$0`:
error,couldnotcopy”
if…else…fi的嵌套(两层的嵌套)
if条件1;
if条件2;
命令1
命令2
if条件3;
命令3
命令4
case…in…esac条件选择(比较灵活的方式)
case语句多用于较多分支判断
case格式:
(多种模式,只匹配和variable相等的模式)
casevariablein
模式1)命令1…;
模式2)命令2…;
esac
匹配模式
*匹配任意字符
?
匹配任意单字符
[]匹配字符范围
case…in.esac实例1
#caseselect
echo–n“enteranumberfrom1to5:
readNUM
case$NUMin
1)echo“youselect1″;
2)echo“youselect2″;
3)echo“youselect3″;
4)echo“youselect4″;
5)echo“youselect5″;
*)echo“basename$Thisisnotbetween1and5″
case…in.esac实例2
题目是:
学生的考试成绩是0-100分,在85以上的要提示youarethebest!
,在70-84显示yougetagoodmark!
,在60-74的显示comeon!
,60分以下显示Youmuststudyhard!
echo–n“pleaseinputyourmark:
readmark
case$markin
100|9[0-9]|8[5-9])echo“youarethebest!
”;
100、90-99、85-89
8[0-4]|7[0-9])echo“yougetagoodmark!
80-84、70-79
7[0-4]|6[0-9])echo“comeon!
70-74、60-69
[0-5][0-9])echo“Youmuststudyhard!
00-59
解决今天的问题
使用if…else…fi的方式对输入的变量进行判断。
在每个判断的分支上执行相应的语句。
menu.sh
clear
echo“——————–menu—————–”
echo“1)ShowTime”
echo“2)CPUload”
echo“3)Memoryfree”
echo“0)Exit”
echo“——————————————–”
echo-n“Enteryouchose[0-3]:
if[${NUM}-lt0-o${NUM}-gt3]
echo“Thisisnotbetween0-3.”
${NUM}"
1"
echo“`date+%T`”
2"
echo“`uptime|awk-F‘[,:
]‘‘{print$7}'
3"
echo“`free-m|awk‘$1==”Mem
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 学会 linx 内核