ImageVerifierCode 换一换
格式:DOCX , 页数:22 ,大小:35.55KB ,
资源ID:5361840      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/5361840.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(LinuxShell编程合集讲解.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

LinuxShell编程合集讲解.docx

1、LinuxShell编程合集讲解Linux Shell编程合集 一、 变量和运算符1.set命令 可以查看和设置本地变量2.readonly 查看本地只读变量readonly variable-name 设置变量为只读变量3.环境变量的设置在$HOME/.bash_profile (/etc/profile)中4.export variable-name=value 设置变量为环境变量5.env 查看所有环境变量6.变量替换:$var-name显示实际值到var-name$var-name:+value如果设置了var-name,则显示其值为value,否则为空$var-nmae:?value

2、如果未设置var-name,显示用户定义错误信息value$var-name:-value如果未设置var-name,显示其值为value$var-nmae:=value如果未设置var-name,设置其值,并显示7.unset 取消变量8.位置变量$0 $1 $2 $3 $4 脚本名 第一个参数 A 第二个参数 B 。C 。D 注意:$10是表示第一个参数后面加上“0”,第10个参数可以通过shift命令得到可用shift 或者shiftn来表示左移参数的位置shift与shift1相同,都是左移一个位置(从$1开始算,$0-脚本名是不会边的),如上图则$1的 值 为 B,$2的值为C.$#

3、 参数的个数($0不算在内)$* 和 $ 都是列出全部参数,下面举例说明它们的差异:比如在命令行中输入 ./test.sh A B C D则 $*和$都为 A B C D但是如果用了软引用之后:$可得到 A BC D三个字段而$*则得到A B C D一个字段9.标准变量(大部分都是环境变量):EXINIT:保存使用vi初始化选项,如EXINIT=set nu tab=4;exprot EXINITIFS:域分隔符,默认是空格,可改边IFS=: 或 IFS=:HOME:主目录LOGNAME:登录名MAILCHECK:每隔多长时间检查是否有邮件MAILPATH:用于多个邮箱时查看MAIL存储在哪几

4、个文件中TERM:终端类型PATH:指定了当用户输入命令时linux搜索程序的目录由冒号:分隔,shell将按PATH中给出的顺序搜 索这些目录。找到的第一个与命令名称一致的可执行文件将被执行TZ:时区PS1:主提示符,其缺省值 uh w$ u:用户 h:主机名 w:当前的目录。最后的$是普通用户的提示符,特权用户是#PS2:辅助提示符,一行中若需用多个命令时的提示符,缺省是,如果用户在行末输入,然后 回车, 则会有改符号出现。PWD:当前运行的进程号$:当前运行的进程号$!后台运行的最后一个进程的ID$- 显示shell使用的当前选项,与set相同$? 显示最后命令的退出状态,0表示没有错误

5、,其他表示错误。10.影响变量的命令(1)declare 设置或者显示变量-f 只显示函数名-r 创建只读变量-x 创建转出变量-i 创建整数变量用+代替-可以颠倒选项的含义(r不能颠倒)(2)export 创建传给子shell的变量(创建环境变量)-表明选项结束,所有的后续参数都是实参-f表明在“名-值”对中的名字是函数名-n把全局变量转换成局部变量,命令的变量不再传给子shell-p显示全局变量列表(3)readonly 用于显示或者设置只读变量-表明选项结束-f创建只读变量(4)typeset 用于显示或设置变量,是declare的同义词(5)unset 取消变量的定义-表明选项结束-f

6、删除只读变量(但不能取消从shell环境中删除指定的变量和函数,如PATH,PS1,PDID,EUID,PID,UID等)11.双引号:使用双引号可引用除字符$, 外的任意字符和字符串12.单引号:单引号与双引号不同的是shell会忽略任何引用值。换句话来说,如果屏蔽了其特殊含义,会将引号里所 有的字符,包括引号作为一个字符串13.反引号:设置系统命令的输出到变量。shell将反引号里的命令的内容作为一个系统命令并执行其内容14.反斜杠:如果一个字符有特殊的意义,反斜杠可以屏蔽其含义,有特殊含义的字符有:& * + $ | ?15.运算符:按位运算符有: ,|,&$ 表示对方括号中的表达式求值

7、 $ 2+8 .(注意内左右都必须留空格)$ 2#111+1 =8 表示二进制的1111+1运算符的优先级以下级别高的优先级高13级:+,- (正负)12级:!, (逻辑非,按位取反)11级:*,/,% (乘,除,取摸)10级:+,- (加减)9级:按位左移动,右移8级:=, (小于等于,大于等于,小于,大于)7级:=,!= (等于,不等于)6级:& 按位与5级: 按位异或4级 | 按位或3级& 逻辑与2级 | 逻辑或1级=,+=,-=,*=,/=,%=,|=,= 二、Shell输入与输出1.echo 命令可以显示文本行或者变量,或者把字符串输入到文件echo option string-e

8、解析转义字符,转义符包括(c,回车不换行f,禁止t,跳格n)回车换行-n 回车不换行,linux系统默认回车换行2.read 从键盘或者文件的某一行文本中读如信息,并将其赋给一个变量read varible1 varible2如果只指定了一个变量,那么read将会把所有的输入赋给该变量,直到遇到第一个文件结束符或回车;如果给出了多个变量,它们按吮吸分别赋给不同的变量,。shell将用空格作为变量之间的分隔符举例说明:在shell脚本中有read A B C命令行,而在提示的命令行中输入1 2 3,则A=1,B=2,C=33.cat 可以用来显示文件内容、创建文件,还可以用它来显示控制字符。ca

9、t |options|filename1.filename2.-v显示控制字符使用cat命令时要注意,它不会在文件分页符处停下来,它会一下显示完整个文件。如果希望每次显示一页,可以使用more命令或者把cat命令的输出通过管道传递给另外一个具有分页功能的命令(如more,less)中。cat命令举例:cat myfile1 myfile2 myfile3myfile123;cat myfile123|more 分页显示cat -v dos.txt 会出现“M”等控制字符,这是在windows下的编辑器留下的4.管道 可以通过管道把一个命令的输出作为另一个命令的输入举例说明:df -k |awk

10、 print $1|grep -v Filesystemdf:显示所有文件系统对i节点和磁盘块的使用情况awk:浏览和抽取信息grep:文本过滤显示所有文件系统对i接点和磁盘块的使用情况信息中的第一列并不含有Filesystem的信息5.tee : 把输出的一个副本输送到标准输出,另一个副本拷贝到相应的文件中tee -a file 这个命令一般用于管道之后。举例说明:cat file|tee file.out 将file中的信息输出到屏幕并拷贝到file.out中6.exec : exec命令可以用来代替当前shell;换句话说,并没有启动子shell,使用这一命令时任何现有环境都会 被清除,

11、并重新启动一个shellexec command其中的command通常是一个shell脚本对文件描述符操作的时候(也只有在这时),它不会覆盖你当前的shell举例说明:exec *.sh 会重新登录并清除环境变量7.标准输入、输出和错误在shell中执行命令时,每个进程都和三个打开的文件相联系,并使用文件描述符来引用这些文件。由于文件描述符不容易记忆,shell同时也给出了相应的文件名。 文件 文件描述符 输入文件-标准输入 0(缺省是键盘,也可以是文件或者其他命令的输出) 输出文件-标准输出 1(缺省是屏幕,也可以是文件) 错误输出文件-标准错误 2(缺省是屏幕,也可以是文件) 系统中实际

12、有12个文件描述符,可以任意使用文件描述符3-98.文件重定向 改变程序运行的输入来源或输出地点command filename 把把标准输出重定向到一个新文件中command filename 把把标准输出重定向到一个文件中(追加)command 1 fielname 把把标准输出重定向到一个文件中command filename 2&1 把把标准输出和标准错误一起重定向到一个文件中command 2 filename 把把标准错误重定向到一个文件中command 2 filename 把把标准输出重定向到一个文件中(追加)command filename 2&1 把把标准输出和标准错误一起

13、重定向到一个文件中(追加)command filename2 把command命令以filename文件作为标准输入,以filename2文件作为标准输出command filename 把command命令以filename文件作为标准输入command delimiter 把从标准输入中读入,直至遇到delimiter分界符command &m 把把标准输出重定向到文件描述符m中command | filecat file 会清空file中的内容,因为shell会先清空stdout和stderr的管道。 cat file会造成死循环,因为它是一行行读出来的,永远都没有结束符9.合并标准输出

14、和标准错误合并标准输出和标准错误的时候,切记shell是用左至右分析相应的命令举例说明:grep hi test.txt test.out 2&1 标准输出和错误输出都输入到标准输出中10.使用文件描述符举例说明:exec 3&0 0name.txt /设置3为标准输入 name.txt的内容输入到标准输入此时的exec不会清除环境变量,也不会重新登录,覆盖当前的sehll 三、流控制结构1.if then else 语句if 条件1 #如果条件1为真then #那么command1 #执行命令1elif 条件2 # 如果条件2为真then #那么command2 # 执行命令2else #如

15、果条件1和条件2都不成立command3 执行命令3fi #完成(if 语句一定要以fi结束)举例说明:if 13 -lt 11 #如果13小于11then #那么 echo 1311 #输出1311elif13 -lt 12 #如果13小于12then # 那么 echo 1312 #输出13=12 #输出13=122.case语句case 值 in模式1) #如果模式1匹配命令1 #执行命令1 ;模式2) #如果模式2匹配 命令2 #执行命令2 ;*) #如果以上模式都不匹配 命令3 #执行命令3 ;esac #结束case语句case取值后面必须为单词in,每一模式必须以右括号结束。取值

16、可以为变量或常数。匹配发现取值符合某一模式后,其间所有命令开始执行直至;。模式匹配符号*表示匹配任意字符。表示类或者范围中的任意字符。举例说明:case $A in1) #如果A的值为1echo A =1 #输出“A=1”;2) #如果A的值为2 echo A=2 #输出“A=2” ; 34) #如果A的值为3或4 echo A=3|4 #输出“A=3|4” ; esac #结束3.for循环for 变量名 in 列表do 命令1 命令2done当变量值在列表里,for 循环即执行一次所有命令,使用变量名访问列表取值。命令可为任何有效的shell命令和语句。变量名为任何单词。in列表用法是可选

17、的,如果不用它,for循环使用命令行的位置参数。in列表可以包含替换,字符串和文件名举例说明:for loop in 1 2 3 4 5 #在1 2 3 4 5列表中循环(5次)do #开始执行命令echo hello #执行命令done #完成for loop in one two three #当成一个元素只循环一次do echo $loopdone #输出 one two three 一行for loop in one two three #三次循环do echo $loopdone#输出 onetwothree列表可以是文件,如:for loop in cat myfile4.unti

18、l循环until 条件do命令1命令2done条件可为任何测试条件,若刚开始条件就为真,则不执行循环。5.while循环while 命令do 命令1 命令2 .done举例说明:while read LINE myfile #每次读取myfile 中的一行 do echo $LINE #输出每行的信息 done6.break控制breakn#跳出n层循环举例说明:for loop in 1 2 3done echo $loop for loop in one two three do echo $loop /break /break 2 /continue #这三个命令替换测试 echo $l

19、oop+ done done若为break,则输出 1 one 2 one 3 one若为break 2 则输出 1 one 若为continue 则输出1 one two three 2 one two three 3 one two three (每次输出都有换行)注意:echo $loop+没有执行7.continue控制强制进入下一次循环 如上例子 四、文本过滤1.正则表达式(1)正则表达式一般用来描述文本模式的特殊用法,由普通字符(例如字符a-z)以及特殊字符(称为元字符,如/、*、?等)组成。(2)基本元字符集及其含义 :只匹配行首。 如a 匹配以a开头的行abc,a2e,a12,

20、aaa,. $ :只匹配行尾。 如a 匹配以a结尾的行bca,12a,aaa,. * :匹配0个或多个此单字符。 如(a)* 匹配 空,a,aa,aaa,. :只匹配内字符。可以是一个单字符,也可以是字符序列,用,将里面要匹配的不同字符串分开。也可以使用-来表示内字符序列的范围,如1-5表示12345 :只用来屏蔽一个元字符的特殊含义。 如*,|,+,. 等 。:(点)只匹配任意单字符。 patternn:只用来匹配前面pattern出现的次数.n为次数。如a2匹配aa. patternn,:含义同上,但次数最少为n.如a2,匹配aa,aaa,aaaa,. patternn,m:含义同上,但次

21、数在n和m之间。如a2,4匹配aa,aaa,aaaa三个 (3)举例说明: $ :匹配空行 .$ :匹配包含一个字符的行*.pas :匹配以*.pas结尾的所有字符或文件0123456789或0-9 :假定要匹配任意一个数字a-z :任意小写字母A-Za-z :任意大小写字母S,s :匹配大小写S0-93.0-93.0-93.0-93 :匹配IP地址 0-93三个0-9组成的字符串;. :匹配点(注意这里点是特殊的字符,所以要用来屏蔽其含义)2.find介绍(1)查找具有某些特征文件的命令,可遍历当前目录甚至于整个文件系统来查看某些文件或目录,其遍历大的文件系统时一般放在后台执行。(2)fin

22、d命令的一般形式 find pathname -options -print -exec -ok -pathname :find命令所查找的目录路径。如用.来表示当前的目录,用/来表示系统根目录 -print :find命令将匹配的文件输出到标准输出 -exec: find命令对匹配的文件执行该参数所给出的shell命令,相应的命令形式为 command ; (注意和之间的空格) -ok 和 -exec的作用相同,只不过以一种更为安全的模式来执行该参数所给出的shell命令,在执行每一个命令之前,都会给出提示,让用户来确定是否执行。options有如下几种:-name :按照文件名查找文件-p

23、erm :按照文件权限来查找文件-user :按照文件属主来查找文件-group :按照文件所属的组来查找文件-mtime -n +n 按照文件的更改时间来查找文件,-n表示文件更改时间距现在n天以内,+n表示文件更改时间距现在n天以前。find命令还有-atime 和-ctime选项,但它们都和-mtime选项相似。-size nc查找文件长度为n块的文件,带有c时表示文件长度以字节计。-nogroup 查找无有效所属组的文件,即该文件所属的组在/etc/groups中不存在-newer file1 !file2查找更改时间比文件file1新但比文件file2旧的文件-depth 先查找指定

24、目录有无匹配文件,若无则再在子目录中查找-type 查找某一类型的文件,如 b :块设备文件 d:目录 e:字符设备文件 p;管道文件 l:符号链接文件 f:普通文件(3)find命令举例 find -name *.txt -print 查找txt结尾的文件并输出到屏幕上 find /cmd .sh -print 查找/cmd目录下所有sh文件,并输出 find . -perm 755 -print 查找当前目录下权限为755的文件,并输出 find pwd -user root -print 查找当前目录下属主为root的文件,并输出 find ./ -group sunwill -prin

25、t 查找当前目录下所属主是sunwill的文件 find /var -mtime -5 -print 查找/var目录下更改时间为5天内的所有文件 find /var -mtime +5 -print 查找/var目录下更改时间为5天以前的所有文件 find /var -newer myfile1 ! -newer myfile2 -print 查找/var目录下比myfile1新,但是比myfile2旧的所有文件。 find /var -type d -print 查找/var目录下所有目录 find /var -type l -print 查找/var目录下所有的符号链接文件。 find

26、. -size +1000000c -print 查找当前目录下大于1000000字节的文件 find / -name con.file -depth -print 查找根目录下有无con.file,若无则在其子目录中查找 find . -type f -exec ls -l ; 查找当前目录下是否有普通文件,若有则执行ls -l (4)xargs命令 在使用find命令的-exec选项处理匹配到的文件时,find命令将所有匹配到的文件一起传递给exec。不幸的是,有些系统对能够传递给exec的命令长度有限制,这样find命令运行几分钟之后就算出现溢出错误。错误信息通常是“参数列太长”或“参数列溢出”。这就是xargs的用处所在,特别是与find命令一起使用,exec会发起多个进程,而xargs会多个,只有一个 find ./ -perm -7 -print | xargs chmod o-w 查找权限为7的文件并传递给chmod处理3.grep介绍(1)grep 的一般格式为 grep options 基本正则表达式 文件

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1