Shell 编程从入门到精通绝版收藏

所需积分/C币:50 2019-03-25 17:59:27 3.54MB PDF
收藏 收藏
举报

本文收藏的是Shell编程从入门到精通,是Linux业内某顶级的大佬撰写,资料为绝版资源。
8.5重定向标准输出和标准错误.. 看垂非 8.6重定向到空设备 8.7read命令 97 第九章Shel1信号发送与捕捉. ,,∴,,,.,,98 9.1 Linux信号类型 9.2ki11命令 9.3trap命令 .100 第十章She1l编程时常用的系统文件 ,102 10.1 Linux系统目录结构 10.2环境变量文件 ,103 10.3系统配置文件 ..103 10.4/dev目录.... ,,,104 0.5/proc目录 .104 10.5.1/proc 垂·垂 bD春·垂 垂垂垂 ,,,105 10.5.2/proc/net .甲 105 10.5.3/proc/sys ,,106 第十一章Shel1常用命令与工具. ,,,,,,108 108 11.2echo.. 11.3 printf 画面垂 l1.4cat,..., b tac 11.6 rev 11.7wc 111 p 11.9 mkdir 11.10mV,, ,112 rename 112 11.12 dirname 11.13 basename 113 11.14du.....,.,,,.,, ...113 11.15 cut 114 11.16tr.., 114 11.17 stat ●看 11.18seq 115 11.19shuC,,,,,,,,,,,,,,,,, ●· 116 11. 20 sort 116 1.2 I unig..... 11.22tee 118 11.23join... 119 1.24 paste. 19 11.25 head .120 1.26 tail ,,,,,,,,,,,,,,,,,,,,,,,,,,,,⊥20 11. 27 find 11. 28 xargs n 122 11.30date,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 123 11.31 wget 124 126 cp 127 11.34 rsync..,,,,,, ,128 nohup 128 11.36icon. 129 l, 37 uname 129 11. 38 sshpass 画面垂 129 11.39tar ,,,,130 11. 40 logger 130 11.41 netstat 垂垂鲁 ,,,131 11.42ss 131 11.431so ,,132 11.44ps.... 133 11.15top 131 1. 46 free 135 11.47df ...,136 11. 48 vmstat ,136 11.49 iostat....,.,.,, ...137 11.50sar 137 11.51 dstat 138 11.52ip..,,,, ●看 138 11.53 139 11.54Lime,,,,,,,,,, ●· ,,,,140 11.55 eval 141 1.56ssh.., 11.57 iptables. .142 第十二章Shel1脚本编写实战 145 12.1获取随机字符串或数字 145 12.2定义一个颜色输出字符串函数 146 12.3批量创建用 147 12.4检查软件包是否安装 .147 12.5检查服务状态. ,147 12.6检查主机存活状态 .148 12.7监控CPU、内存和硬榅利用率 149 12.8批量上机磁盘利用率监控. 150 12.9检查网站可用性 ,,,151 12.10检查 MYSQL主从同步状态 152 12.11屏蔽访问频繁的IP 153 12.12判断输入是否为IP 154 12.13判断输入是否为数字 155 12.14找出包含关键字的文件 ,,,,,,,,155 12.15监控目录,将新创建的文件名追加到日志中 156 12.16多个网卡选择. ,,,,156 12.17查看网卡实时流量. .157 12.18 My SQL数据库备份 垂垂鲁 ,.158 12.19 nginx启动脚本 158 12.20选择SSH连接主机 12.21FTP下载文件 160 12.22输入五个100数之内的字符,统计和、最小和最大 161 12.23将结果分别赋值给变量 161 12.24批量修改文件 .162 12.25统计当前目录中以.hml结尾的文件总大小 ,162 12.26扫描主机端口状态 ...,,...162 12.27 Expect实现SSH免交互执行命令 163 12.28批量修改服务器用户密码 165 12.29打印乘法口诀. 165 12.30 getopts工具完善脚本命令行参数 166 第一章 Shell基础知识 1.1She11简介 Shel1是一个C语言编写的脚本语言,它是用户与 Linux的桥梁,用户输入命令交给Shel1处理, Shell将相应的操作传递给内核( Kernel),内核把处理的结果输岀给用户。 下面是流程示意图 用户 命令 解析命令 并传递给内核 She‖ 执行动作 Kerne Shell既然是工作在 Linux内核之上,那我们也有必要了解下 Linux相关知识 Linux是·套免费试用和自由传播的类Unix操作系统,是一个基于 POSIX和UNⅠX的多用户、多任 务、支持多线程和多CP的操作系统。 1983年9月27日, Richard stallman(理查德马修-斯托曼)发起GNU计划,它的目标是创建 套完仝自由的操作系统。为保证GU软件可以自由的使用、复制、修改和发布,所有的GU软件都 有一份在禁止其他人添加任何限制的情况下授权所有权利给仁何人的协议条款,GNU通用公共许可 证( GNU General plubic license,GPL),说白了就是不能做商业用途 GNU是" gnu is Not unix"的递归缩写。UNIX是一种广泛使用的商业操作系统的名称。 1985年, Richard sta1lman又创立了自由软件基金会( Free software foundation,FSF)来为 GNU计划提供技术、法律以及财政支持。 1990年,GNU计划开发主要项目有 Emacs(文本编辑器)、GCC( GNU Compiler Collection,GⅦU编 译器集合)、Bash等,GC是一套GNU开发的编程语言编译器。还有开发一些UNIX系统的程序库和 工具。 1991年, Linuxs torvalds(林纳斯-托瓦兹)开发出了与UNIX兼容的 Linux操作系统内核并在 GPL条款下发布。 1992年, Linux与其他GN软件结合,完全自由的GN/inux操作系统正式诞生,简称 Linux 1995年1月, Bob young创办AC公司,以GNU/ Linux为核心,开发出了 Redhat linux商业版 Linux基本思想有两点:第一,一切都是文件;第二,每个软件都有确定的用途。与Unix思想十分 相近。 1.2She11基木分两大类 1.2.1图形界面 Shell( GuI Shel1) GuⅠ为Ⅷniκ或者类Unix操作系统构造一个功能完善、操作简单以及界面友好的桌面环境。主流桌 面环境有KDF, gnome等 1.2.2命令行界面Shel1( clI She1l) CLI是在用户提示符下键入可执行指令的界面,用户通过键盘输入指令,完成一系列操作。 在 Linux系统上主流的CLI实现是Bash,是许多 Linux发行版默认的 Shell。还有许多Unix上 Shel1,例如tcsh、csh、ash、bsh、ksh等。 1.3第一个Shel1脚本 本教程主要讲解在大多 Linux发行版下默认 Bash shel1。 Linux系统是 Redhat下的Cent0S操作系 统,完全免费。与其商业版RHEL( Red Hal Enterprise linux)出白同样的源代码,不同的是 CentOs并不包含封闭源代码软件和售后支持。 用ⅵi打开test.sh,编写: t vi test. sh #!/bin/bash echo" Hello world! 第一行指定解释器,第二行打印 Hello world! 写好后,开始执行,执行Shel脚木有三种方法: 方法1:直接用bash解释器执行 t bash test. sh Hello world! 当前终端会新生成一个子bash去执行脚本。 方法2:添加可执行权限 +1 test. sh rw-r--r--. l rootroot 32 Aug 1801: 07 test. sh f chuo +x Lest. sh #./ test. sh bash:./test. sh: Permission denied t chmod +x test. sh 牛,/test.sh#./在当前目录 Hello world 这种方式默认根据脚本第一行指定的解释器处理,如果没写以当前默认 Shell解释器执行 方法3: source命令执行,以当前默认 Shell解释器执行 source test. sh Hello world 1.4She11变量 1.4.1系统变量 在命令行提示符直接执行enw、set查看系统或环境变量。enⅴ显示用户环境变量,set显示She11 预先定义好的变量以及用户变量。可以通过 export导出成用户变量。 些写She1l脚本时常用的系统交量 SHELL 默认She1l SHOME 当前用户家目录 SIFS 内部字段分隔符 SLANG 默认语言 SPATH 默认可执行程序路径 SPWD 当前目录 当前用户ID 当前用户 $ SHISTSIZE历史命令大小,可通过 HISTTIMEFORMAT变量设置命令执行时间 RANDOM 随机生成一个0至32767的整数 HOSTNAME主机名 1.4.2普通变量与临时环境变量 普通变量定义:VAR= value 临时环境变量定义: export var= value 变量引用:$VAR 下面看下他们之问区别: Shell进程的环境变量作用域是Shel进程,当 export导入到系统变量时,则作用域是 Shell进程 及其Shel1子进程 root@localhost w]# ps axj ep pts 1580789027890278902? i sshd: root@pts/0 78902789047890478904pts/0 79092ss 00:00 bash 78904790927909278904pts/0 00:00 ps ax]千 78904790937909278904pt 79092s 0o:00 grep-- color=aut。pts [r。 ot(glocal。st-]#echo 78904 Root@localhost -]# VAR=12 3 [root@loca lhost -1# echo $VAR 123 Troot@localhost -1# bash [rootelocaThost -]# echo $s 79136 [root@localhost -]4 ps ax]f grep pts 0789027890278 00: 00\- sshd: rootapts/0 78902789047890478904pts/0 79152ss 00:00 bash 00:00 79136791527915278904pts/0 79152R ps ax]f 19136791537915278904pts/0 79152S 00:00 grep-- color=aut。pts [root@ locale。st~]#ech。sVAR [root@loca lhost w# exit exIt You have new mail in / var/spool/mail/root Troot@localhost -] echo $VAR Troot@localhost -] export VAR You have new mail in /var/spool/mail/root rootloca lhost "] bash Root(a loca Host M# echo $$ Troot@localhost -] ps ax]f grep pts 58078902 90278902? 00: 00 sshd: rootapts/0 78902789047890478904pts/0 79258Ss bash 78904 92427924278904pts/0 79258S 00:00 bash 79242792587925878904pts/079258R 00 f 79242792597925878904 79258s+ 00:00 grep --color=auto pts [root@loca lhost N]# echo $VAR 123 Troot@loca host N]# ps -ef grep ssh root 1580 0an01? 00: 00: 00/usr/sbin/sshd-D ps axjf输出的第一列是PID(父进程I),第二列是PID(子进程ID) SSH连接Shel1时,当前终端PPID(-bash)是sshd守护程序的PID(root@pts/0),因此在当 前终端下的所有进程的PPID都是-bash的PID,比如执行命令、运行脚本。 所以当在-bash下设置的变量,只在-bash进程下有效,而-bash下的子进程bash是无效的,当 export后才有效。 进一步说明:再重新连接SSH,去除上面定义的变量测试下 rootaloca lhost I grep pts 1580798877988779887 0:00 sshd:r。 tapes/0 9887798917989179891pts/0 79934Ss 00:00 bash 34 ps -ax]f 9891799357993479891pts/0 79934s+ 00:00 color=auto pts Lrooti loca I host -] echo $s 79891 [roota oca root@7 aTh。st-]# cat test,sh :/bin/bash ps -ax]f i grep pts echo VAR rooted loca lhost m# bash test. sh 1580798877988779887? 1 ss 00: 00_ sshd: rootapts/0 9887798917989179891pts/0 9950Ss 9891799507995079891pts/0 79950S C:00 bash test. sh 79950799527995079891pt 7995079951 79950 79891pts 79950R 0000 79950S+ C:00 grep pts 9950 rootialoca lhost XbOPt VAR Trootaloca lhost bash test, sh 580798877988779887? nd: root@pts/o 79887798917989179891pts/0 9955ss 00000 0:00 9891799557995579891pts/0 9955s+ bash test sh 9955799567995579891pts/0 9955R+ C:00 A ps-a 9577995579891pts/0 79955s C:00 grep pts 79955 所以在当前 shell定义的变量一定要 export,否则在写脚本时,会引用不到。 还需要注意的是退出终端后,所有用户定义的变量都会清除。 在/etc/ profile下定义的变量就是这个原理,后面有章节会讲解 Linux常用变量文件, 1.4.3位置变量 位置变量指的是函数或脚本后跟的第n个参数 $1-$n,需要注意的是从第10个开始要川花括号调用,例如${10} shift可对位置变量控制,例如 #!/bin/bash echo 1:$1 shift echo2: $2 shift echo 3 f bash test. sh a. b c 123 每执行一次shi[命令,位置变量个数就会减一,而变量值则提前一位。 shilu n,可设置向前栘动 1.4.4特殊变量 $0 脚本自身名字 返回上一条命令是否执行成功,0为执行成功,非0则为执行失败 $$$ # 位置参数总数 所有的位置参数被看做一个字符串 $@每个位置参数被看做独立的字符串 $s当前进程PID 上一条运行后台进程的PID 1.5变量引用 赋值运算符 示例 变量赋值 两个变量相加 5.1自定义变量与引用 #VAR=123 echO SVAR 123 #VAR+=456

...展开详情
试读 127P Shell 编程从入门到精通绝版收藏
立即下载 低至0.43元/次 身份认证VIP会员低至7折
抢沙发
一个资源只可评论一次,评论内容不能少于5个字
上传资源赚积分or赚钱
最新推荐
Shell 编程从入门到精通绝版收藏 50积分/C币 立即下载
1/127
Shell 编程从入门到精通绝版收藏第1页
Shell 编程从入门到精通绝版收藏第2页
Shell 编程从入门到精通绝版收藏第3页
Shell 编程从入门到精通绝版收藏第4页
Shell 编程从入门到精通绝版收藏第5页
Shell 编程从入门到精通绝版收藏第6页
Shell 编程从入门到精通绝版收藏第7页
Shell 编程从入门到精通绝版收藏第8页
Shell 编程从入门到精通绝版收藏第9页
Shell 编程从入门到精通绝版收藏第10页
Shell 编程从入门到精通绝版收藏第11页
Shell 编程从入门到精通绝版收藏第12页
Shell 编程从入门到精通绝版收藏第13页
Shell 编程从入门到精通绝版收藏第14页
Shell 编程从入门到精通绝版收藏第15页
Shell 编程从入门到精通绝版收藏第16页
Shell 编程从入门到精通绝版收藏第17页
Shell 编程从入门到精通绝版收藏第18页
Shell 编程从入门到精通绝版收藏第19页
Shell 编程从入门到精通绝版收藏第20页

试读结束, 可继续阅读

50积分/C币 立即下载 >