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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

shell脚本精华总结.docx

1、shell脚本精华总结1.shell做解释程序,非交互地执行脚本,两种执行方式:用sh命令执行脚本文件sh hello.sh给脚本文件添加执行权限,用./命令执行 chmod 755 hello.sh ./hello.sh2.vim(1)必须从命令模式转入插入模式才能进行输入编辑,可用命令有:新增 (append)a :从光标所在位置后面 开始新增资料A: 从光标所在行最后面的 地方开始新增资料 。插入 (insert)i: 从光标所在位置前面 开始插入资料I :从光标所在行 的第一个非空白字元前面 开 始插入资料。开始 (open)o :在光标所在行下 新增一列并进入输入模式 O: 在光标所

2、在行上方 新增一列并进入输入模式(2)冒号进入行命令模式,输入set nu可设置vi显示行号:/string 搜索指定的字符串。按键n:继续进行搜索 如果写的是斜杠(/):按n会从当前位置向后查找;如果写的是问号(?),按n键则从当前位置向前查找查找且替换:%s /SEARCH /REPLACE 把文档中所有SEARCH替换成REPLACE;:#,# s /SEARCH /REPLACE /g 号表示数字,表示从多少行到多少行,把SEARCH替换成REPLACE;:s /SEARCH /REPLACE /g 把当前光标 所在行中的SEARCH单词,替换成REPLACE,并把所有SEARCH高亮

3、显示例题:1. mkdir /tmp/vitest2. cd /tmp/vitest 3. cp /etc/man.config . 4. vi man.config 5. :set nu 6. 先按下 58G 再按下 40 会看到 /dir/bin/foo 这个字样在双引号内; 7. 先执行 1G 或 gg 后,直接输入 /bzip28. 直接执行 :50,100s/man/MAN/gc 即可9. (1)简单的方法可以一直按 u 恢复到原始状态,(2)使用不储存离开 :q! 之后,再重新读取一次该文件; 10. 51G 然后再 10yy 之后按下 G 到最后一行,再p粘贴10行 11. 11

4、G 之后,再给他 20dd即可删除 20 行了; 12. :w man.test.config 13. 29G 之后,再给他 15x 即可删除 15 个字符; 14. :wq!#!/bin/bash 必须的,指出shell的类型例题:#!/bin/bash shell类型#a simple shell script example#a functionfunciton sayhello() 函数echo Enter Your name:read name 读取来自键盘输入的变量echo Hello $nameecho programme starts here. 主过程sayhelloecho

5、 programme ends.3.符号注释符# 除了#!/bin/bash里的#特殊变量符与反斜杠转义符相反,使其后的普通字符 作为变量名,如$a表示变量a的值。变量字符 长度超过1个时,用括起来单引号被引起的字符全部做普通字符,即全部原样 echo my $SHELL双引号 引号内的内容,除$、转义符、倒引号这三个 保留特殊功能,其他字符均做普通字符。倒引号(数字1键旁边的那个键)引号内的字符串当做shell命令行解释执行,得到 的结果取代整个倒引号括起来的部分。反斜线反斜线是转义字符,它能把特殊字符变成普通字 符。在某个字符前面利用反斜杠()能够阻止shell把后面的字符解释为特殊字符。

6、4.本地变量 在用户现在的shell生命期的脚本中使用变量名=值注意: (1)等号两边不可以有空格 (2)取值包含空格,必须用双引号括起来 (3)Shell变量可以用大小写字母,区分大小写除变量unset 变量名举例:echo $name unset name (注意:name前没有$)设置变量时,不想再改变其值,可以将之设为只读变量变量名=值 readonly 变量名5.环境变量用于所有用户进程(通常称为子进程)。登陆进程称为父进程,通过pstree可以查看设置环境变量 variable-name=valueexport variable-name(环境变量名大写)显示环境变量:(1)env

7、 可以看到所有的环境变量(2)echo $环境变量名 (显示一个变量)清除环境变量 unset 环境变量名HOME : 代表使用者的家目录。cd 去到使用者的家目录 或者利用 cd 就可以直接回到使用者家目录了。PS1:shell的主提示符SHELL : 目前这个环境使用的 SHELL 是哪个程序? 如果是 bash 的话,预设是 /bin/bashPWD:用户当前工作目录的路径。它指出用户目前在Linux文件系统中处在什么位置。它是由Linux自动设置的HISTSIZE : 这个与“历史命令”有关,曾经下达过的指令可以被系统记录下来,而记录的“数目”则是由这个值来设定的。 ENV : 这个使

8、用者所使用的个性化环境设置文件的读取文件。 MAIL : 当我们使用 mail 这个指令在收信时,系统会去读取的邮件信箱文件 (mailbox)。 PATH : 就是执行文件搜寻的路径,目录与目录中间以冒号(:)分隔, 由于文件的搜寻是依序由 PATH 的变量内的目录来查询,所以,目录的顺序也是重要的喔。 LANG : 语系文件,很多数据都会用到他,当出现编码错误的时候往往需要设置它,中文编码是zh_CN.UTF86.Bash的初始化文件有:/etc/profile、/.bash_profile、/.bash_login、/.profile、/.bashrc、/etc/bashrc/etc/p

9、rofile 存放一些全局(共有)变量,不管哪个用户,登录时都会读取该文件。通常设置一些Shell变量PATH,USER,HOSTNAME和HISTSIZE等/.bash_profile:每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次!默认情况下,他设置一些环境变量,执行用户的.bashrc文件./.bashrc:该文件包含专用于你的bash shell的bash信息,当登录时以及每次打开新的shell时,该该文件被读取./etc/bashrc:为每一个运行bash shell的用户执行此文件.当bash shell被打开时,该文件被读取.上述配置文

10、件的作用1)登录Linux先启动系统配置文件/etc/profile,并从/etc/profile.d目录的配置文件中搜集shell的设置,为系统的每个用户设置环境信息。2)用户配置文件/.bash_profile,每个用户专用于自己使用的shell信息,仅用户登录时执行一次!默认情况下,此文件通过脚本执行同目录下用户的.bashrc文件。3)/.bashrc文件包含专用于用户bash shell的bash信息,登录及每次打开新的shell时都会执行。里面又会调用/etc/bashrc在/home/user/.bash_profile中定义下句,会怎样?alias la=ls a|grep “

11、.*”答:user下次再登陆,其shell会自动建立一个 别名命令la,功能为查看当前目录下名字以.开 头的文件。写在/.bash_profile中,需重新登录才能有 效。除非运行source .bash_profile使其立即 有效。写在/.bashrc中,则打开新的终端中就有效区别:bash_profile只在会话开始的时候读取一次,而bashrc则每次打开终端时都会读取按照传统,定义的变量如PATH放到.bash_profile中,而像别名函数等放在.bashrc中,但是.bash_profile先于.bashrc读取内容,也可全放入.bashrc中7.部分内部变量是:$# 传送给she

12、ll程序的位置参数的数量$?最后命令的完成码或者在shell程序内部 执行的shell程序(返回值)$0shell程序的名称$*调用shell程序时所传送的全部参数的单 字符串, “参数1”“参数2”形式保存的参数$ “参数1”“参数2”形式保存的参数$n 第n个参数$ 本程序的PID$! 上一个命令的PID8.条件判断命令testtest n1 -参数 n2(或 参数 表达式)真返回0,假返回1。-lt 小于 -le 小于等于 -gt 大于 -ge 大于等于 -eq 等于 -ne 不等于例题:#!/bin/bashif test $1 -gt 0thenecho “$1 number is

13、postive”else thenecho “$1 number is nagitive”fi如:test -d “mydoc” 判断mydoc是否是目录-f 存在且是普通文件-d 存在且是目录-s 存在且字节数大于0-r 存在且可读-w 存在且可写-x 存在且可执行例题:检测从命令行输入的文件是否存在:#!/bin/bashif $# -ne 1 then echo “usage -$0 file-name”exit 1fiif -f $1 thenecho “$1 file exist”elseecho “sorry,$1 file does not exist”fi其他参数-a 逻辑与-

14、o 逻辑或9.seq命令:产生1-9的数字序列比如 seq 1 4expr命令:对表达式求值$ expr 2 1$ expr 1 * 3 使用*要加转义符$ echo expr 1 + 3直接求值命令:对被括起来的表达式求值例题:if分支if $# -eq 0 then echo “输入了0个参数”elif $# -lt 1 then echo “输入了多个参数”else echo “输入了1个参数”ficasecase “$#” in 0) echo “输入了0个参数” ; 1) echo “输入了1个参数” ; *) echo “输入了多个参数”; esac每个分支条件后必须以两个分号结尾

15、for 例子输出100内10的倍数 for i in seq 1 9 do echo expr $i * 10 done或写 echo $(expr $i * 10)10.read 变量1 变量2 可以从键盘上读取多个变量的值,用户输入数据时,以空格或者Tab键作为分隔。如果输入的数据个数不够,则从左到右对应赋值,没有输入的变量为空;如果输入的数据个数超了,则从左到右对应赋值,最后一个变量被赋予剩余的所有数据。例题: read a b for i in seq $a $b do echo expr $i * 10 donewhile例子求1到100的和i=1sum=0while $i le 1

16、00 do sum=$sum+$i i=$i+1doneecho $sum11重定向1 stdout标准输出2 stderr标准错误输出重定向到文件file,终端上只能看到标准错误:#命令 file错误重定向到文件file ,终端上只能看到标准输出:#命令 2file标准输出和标准错误都重定向到file,终端上看不到任何信息:#命令 file 2&1 (等于#命令 1file 2&1)cp /etc/my.conf /dev/null 2&1/dev/null 空设备此句命令的结果是:cp命令没有目标文件,应该输出错误。 2&1表示错误重定向指向标准输出。/dev/null又使标准输出重定向到

17、空,就是不要输出信息即:一个错误的命令执行,什么功能都不实现,且 没有任何信息或错误提示输出。$ cat file 文件內容会被洗掉 $ cat file 此处会没有内容 stdout、stderr 的管道先准备好才会从 stdin读内容 file 会先清空 file,然後才读进 /dev/null 采用重定向到/dev/null空文件的目的是不显示查找到的用户其他信息 do sleep 300 done echo “$user has logged on!” fi程序中until语句的expression(循环条件)是who|grep “$user”命令执行的返回码,如果没有找到指定的用户名

18、,返回码为非0(为“假”),则用sleep命令暂停执行程序5分钟;找到后返回码为0(为“真”),则终止循环并显示该用户已经登录的信息printnumber判断参数是否是数#!/bin/basha=$(echo $1|bc 2/dev/dull) if $a != $1 ; then echo “$1参数不是数”else echo “$1参数是数”12.bc计算器,进制转换命令13.$变量名匹配模式截掉匹配子串后剩余字符串是结果str1=$a%.* str2=$a#*. #从左向右,%从右向左搜索最长匹配符号写两次,最短匹配写1次$ MYVAR=foodforthought.jpg$echo $

19、MYVAR#*forthought.jpg$echo $MYVAR#*foodforthought.jpg$ MYFOO=chickensoup.tar.gz$echo $MYFOO%.*chickensoup$echo $MYFOO%.*chickensoup.tar指定字符偏移和长度截出子串$ EXCLAIM=cowabunga$ echo $EXCLAIM:0:3 cow#从第一个字符开始,截3个字符$ echo $EXCLAIM:3:7 abunga#从第四个字符开始,截7个字符x=abcd $#x # 获取字串长度 4expr index $x “b“ # 获取子串所在偏移 2exp

20、r index $x a“ # 获取子串所在偏移 1 echo $x:1 # 获取子串替换echo $name/jx/tctc-sys-例题:数组遍历数组:total=$#A*for (i = 0; i total; i+)do echo $A$idone14.元字符. 匹配任何单个字符。$ 匹配行结束符。 匹配一行的开始。* 匹配0或多个正好在它之前的那个字符。+ 匹配1或多个正好在它之前的那个字符。? 匹配0或1个正好在它之前的那个字符。 i i,j 匹配指定数目的字符。 这是引用符,转义; c1-c2 匹配括号中的任何一个字符。 c1-c2 匹配词(word)的开始()。( ) 将 (

21、和 ) 之间的表达式定义为“组”(group),并且将匹配这个表达式的字符保存到一个临时区域(一个正则表达式中最多可以保存9个),它们可以用 1 到9 的符号来引用。| 将 两个匹配条件进行逻辑“或”(Or)运算。例如正则表达式(him|her) 将当前任务挂起,返回job_idfg job_id 把后台作业放到前台执行bg job_id 把作业放到后台执行例题:自定义函数function foo() # foo为函数名 local a=$1; # 局部变量 echo $a; return 0; # 返回值foo “cool!” # 函数调用echo $?自定义函数 16进制转点分十进制a()

22、 local str=$1 echo -n $(16#$str:0:2) str=$str:2 if x$str = x then echo; return else echo -n .; a $str fi#Usagea DDB14CCF15.整数计算 id+ id- +id id - + ! * * / % 计算 & | 位操作= = != 比较& | 逻辑操作expr?expr:expr 三元操作符 = *= /= %= += -= = &= = |= 赋值操作符y=2000 闰年计算 echo $(y%4=0 & y%100!=0 | y%400=0) ( y+ ) 自增1tmp=$(

23、16#a) 进制转换16.浮点运算echo “scale=5; 3/7|bc l .42857echo 100.43KB 20.12KB | awk print $1- $2 80.31echo ibase=16;F|bc -l 15例题:随机字符串生成typeset -r DEFAULT_STR_LEN=5typeset -ra dict=(a b c d e f g h i j k l m n o p q r s t u v w x y z)function get_random_letter() echo -n $dict$(RANDOM%$#dict*) return 0function get_random_string() local slen str $# -eq 1 & slen=$1 | slen=$DEFAULT_STR_LEN

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

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