Linux系统命令及Shell脚本实践指南pdf完整版|百度网盘下载

编者的话:Linux系统命令和Shell脚本实践指南pdf

《Linux系统命令与Shell脚本实践指南》由浅入深,全面系统地介绍了Linux系统的基本命令和shell脚本的开发。作为Linux初学者的一本书,小编为大家带来Linux系统今日命令与Shell脚本练习指南pdf,有需要的快来下载吧

简介

《Linux系统命令与Shell脚本实践指南》由浅入深,全面系统地介绍了Linux系统的基本命令和shell脚本的开发。作为一本面向 Linux 入门用户的书,本书力求让语言易于理解,

用例简单明了,便于读者阅读和理解。同时,书中穿插了大量需要读者实践的内容,不仅可以加深读者对内容的理解和消化,还可以通过动手操作激发读者对linux系统和shell编程的兴趣。实践,以更好地带动读者学习。

全书共18章,从知识结构上分为三个部分。第一部分为前8章,全面介绍了linux的基础知识和常用命令;第二部分是第9章和第10章,主要是linux下交互式和非交互式编辑器的使用;

第三部分是第11-18章,主要是shell脚本的开发。这三个部分的内容各有侧重,读者可以根据实际需要选择阅读。

《Linux系统命令与Shell脚本实践指南》是笔者根据多年Linux环境运维经验编写而成。内容丰富,注重实战讲解。非常适合Linux初学者和基于Linux平台的软件开发者。学习或咨询。

从内容结构来看,本书摒弃了各章独立的写作风格,而是采用了各章有机结合的方式,自上而下自成一体,不仅加深了读者对单一的知识点,也有利于从全局的角度掌握linux系统和shell编程的精髓。

相关内容部分预览

关于作者

王军拥有近 8 年的系统工程师和网络工程师工作经验。 2006年初开始从事信息技术工作,曾参与过校园交换网、企业办公网、大中型互联网公司的高可用网络架构设计。

拥有丰富的网络实践经验。 2008年进入Linux系统运维领域,先后就职于国内多家知名企业(eBay、51job、阿里云),担任网络工程师和系统工程师。工作内容涉及大型商用云计算虚拟化平台运维,

系统架构、企业网络设计。自己设计和部署了国内多个大型网站的高可用集群。对系统、网络、数据库有深入了解,多次在国内一些技术论坛和博客发表技术文档,备受关注。现任国家电网公司子公司高级技术顾问。

目录

《Linux系统命令与Shell脚本实践指南》
前言推荐1
前言推荐2
前言
第一章Linux 1介绍
1.1 Linux 1发展历程
1.2 linux特点2
1.3 系统安装3
1.3.1 安装前规划3
1.3.2 安装redhat 4
1.3.3 安装centos 11
1.4 系统登录16
1.4.1 首次登录系统设置 16
1.4.2 使用图形方式登录 21
1.4.3 使用终端方式登录 23
1.4.4 开始学习使用linux命令 24
1.5 系统启动过程 25
1.5.1 系统启动概述 25
1.5.2 系统运行级别 26
1.5.3 服务启动脚本 27
.1.5.4 grub 介绍 29
1.6 获取帮助 31
1.6.1 使用手册页 31
1.6.2 使用信息页 32
1.6.3 其他获取帮助的方法 32
第 2 章 linux 用户管理 33
2.1 linux 用户和用户组 33
2.1.1 uid 和 gid 33
2.1.2 /etc/passwd 和 /etc/shadow 342.2 linux 账户管理 36
2.2.1 添加和删除用户 36
2.2.2 添加和删除用户组 39
2.2.3 检查用户信息 39
2.3 切换用户 40
2.3.1 切换到其他用户 40
2.3.2 使用其他用户 身份执行命令:sudo 41
2.4 日常任务管理 43
2.4.1 单时刻执行任务:at 43
2.4.2 定期执行任务:cron 44
2.4.3 /etc/crontab 管理 45
第三章 linux 文件管理 46
3.1 文件和目录管理 46
3.1.1 绝对和相对路径 47
3.1.2 文件相关操作 48
3.1.3 目录相关操作 51
3.1.4 文件时间戳 53
3.2 文件和目录的权限 54
3.2.1 权限查看文件或目录:ls -al 54
3.2 .2 文件隐藏属性 55
3.2.3 更改文件权限:chmod 56
3.2.4 更改文件所有者:chown 56
3.2.5 更改文件所属组:chgrp 57
3.2.6 文件特殊属性:suid/sgid/sticky 57< br>3.2.7 默认权限和 umask 58
3.2.8 查看文件类型:文件 60
3.3 查找文件 60
3.3.1 常规搜索:find 61
3.3.2 数据库搜索:locate 61
3.3.3 查找可执行文件:which/whereis 62
3.4 文件压缩与打包 63
3.4.1 gzip/gunzip 63
3.4.2 tar 63
3.4.3 bzip2 63
3.4.4 cpio 64
第4章linux文件系统65
4.1文件系统65
4.1.1什么是文件系统65
4.1.2 ext2文件系统介绍65
4.1.3 ext3文件系统介绍66
4.2 磁盘分区,创建文件系统,挂载66
4.2.1 创建文件系统:fdisk 66
4.2.2 磁盘挂载:mount 69
4.2 .3 设置启动自动挂载:/etc/fstab 70
4.2.4 磁盘检查:fsck, badblocks 70
4.3 Linux 逻辑卷 71
4.3.1 什么是逻辑卷 71
4.3、 2 如何制作逻辑卷 72
4.4 硬链接和软链接 76
4.4.1 什么是硬链接 76
4.4.2 什么是软链接 77
第 5 章 字符处理 79
5.1 管道 79
5.2 使用 grep 搜索 text79
5.3 使用 sort80 排序
5.4 使用 uniq 删除重复项82
5.5 使用 cut 剪切 text82
5.6 使用 tr 转换 text83 < br>5.7 使用 paste 进行文本合并 84
5.8 使用 split 分割大文件 84
第 6 章 网络管理 86
6.1 网络接口配置 86
6.1.1 使用 ifconfig 检查和配置网卡86< br>6.1.2 将ip配置信息写入配置文件 87
6.2 路由和网关设置 88
6.3 dns客户端配置 89
6.3 .1 /etc/hosts 89
6.3.2 / etc/resolv.conf 90
6.4 网络测试工具 90
6.4.1 ping 90
6.4.2 主机 91
6.4.3 traceroute 91
6.4.4 常见网络故障排除 92
第 7 章 流程管理 94
7.1 什么是流程 94
7.2 不同之处nce 进程与程序之间 95
7.3 进程观察:ps,top 95
7.4 进程终止:kill,killall 98
7.5 查询进程打开文件:lsof 99
7.6 进程优先级调整: nice, renice 101
第八章 linux下软件安装 103
8.1 编译安装源码包 103
8.1.1 编译安装打印helloworld程序 103
8.1.2 使用源码包编译安装apache 106
8.2 rpm 安装软件108
8.2. 1 什么是rpm 108
8.2.2 rpm包管理命令:rpm 109
8.2.3包依赖110
8.2.4使用rpm包安装gcc 110
8.2.5使用rpm包安装安装apache 112
8.3 yum 安装软件114
8.3.1 yum 命令114 基本用法
8.3.2 使用yum 安装apache 115
8.3.3 redhat 使用yum 115 问题
8.3 . 4 自建本地yum源118
8.3.5 自建网络yum源121
8.4 三种安装方式对比123
8.5 重建rpm包124
8.5.1 创建重建环境124< br>8.5.2 快速重建 rpm 包 124
8.5.3 从规范文件重建 rpm 包 125
8.5.4 规范文件介绍 126
第 9 章 vi 和 vim 编辑器 129
9.1 vi和 vim 编辑器介绍 129
9.2 vi 编辑器 129
9.2.1 模式介绍 129
9.2.2 案例练习 130
9.3 vim 编辑器 134
9.3.1 多行编辑134< br>9.3.2 多文件编辑 134
9.3.3 使用vimtutor深入学习vim 136
9 .4 gedit 编辑器 137
9.4.1 gedit 编辑器介绍 137
9.4.2 启动 gedit 编辑器 138
第 10 章 正则表达式 139
10.1 正则表达式基础 139
10.1.1 什么是正则表达式 139
10.1.2 基本正则表达式 140
10.1 .3 扩展正则表达式 143
10.1.4 通配符 14410.2 正则表达式示例 146
10.3 文本处理工具 sed 150
10.3.1 sed 介绍 150
10.3.2 删除 151
10.3.3 查找和替换 152
10.3.4字符转换 153
10.3.5 插入文本 153
10.3.6 读取文本 154
10.3.7 打印 154
10.3.8 写入文件 154
10.3.9 sed 脚本 155
10.3.10 高级替换 155
10.3.11 sed 摘要 156
10.4 文本处理工具awk 157
10.4.1 打印指定字段158
10.4.2 指定打印分隔符158
10.4.3内部变量 nf 159
10.4.4 打印固定字段 159
10.4.5 截取字符串 159
10.4.6 确定字符串的长度 160
10.4.7 使用 awk 对列求和 160
第 11 章 Shell 编程概述 161
11.1 shell 简介 161
11.1.1 什么是 shell 161
11.1.2 shell 的历史 163
11.1.3 shell 的功能164
11.1.4 shell编程的优点 164< br>11.2 第一个shell脚本 164
11.2.1 编辑第一个shell l 脚本 164
11.2.2 运行脚本 165
11.2.3 shell 脚本故障排除 166
11.3 shell 内部构建命令 169
第 12 章 Bash Shell 安装 184
12.1 确定你的 shell版本 184
12.2 安装 Bash 184
12.3 使用新版本的 Bash Shell 186
12.4 在 Windows 中安装 bash 187
第 13 章 shell 编程基础知识 191
13.1 变量 191
13.1.1 局部变量 191
13.1.2 环境变量 191
13.1.3 变量命名 197
13.1.4 变量赋值与取值 198< br>13.1.5 取消变量 199
13.1.6特殊变量 199
13.1.7 数组 200
13.1.8 只读变量 202
13.1.9 变量作用域 203
13.2 转义和引用 205
13.2.1 转义 205
13.2.2 引用 206
13.2.3 命令替换 207
13.3 运算符 208
13.3.1 算术运算符 209
13.3.2 位运算符 209
13.3.3 递增和递减 211
13.4 其他算术运算 211
13.4.1 使用 $[] 的运算 211
13 .4.2 使用 expr 进行运算 212
13.4.3 内置运算命令声明 212
13.4.4 算术扩展 213
13.4.5 使用 bc 进行运算 213
13.5 特殊字符 215
13.5、 1 通配符 215
13.5.2 引用 215
13.5.3 评论 215
13.5.4 大括号 216
13.5.5 控制字符 217
13.5.6 杂项 217
第 14 章测试和判断 218
14.1 测试 218
14.1.1 测试结构 218
14.1.2 文件测试 219
14.1.3 字符串测试 220
14.1.4 整数比较 222
14.1. 5 逻辑测试器和逻辑运算符 223
14.2 判断 224
14.2.1 if 判断结构 224
14.2.2 if/else 判断结构 225
14.2.3 if/elif/else 判断结构 226
br>14.2.4 案例结构 227
第 15 章循环 229
15.1 For 循环 229
15.1.1 带列表的循环 229
15.1.2 不带列表的循环 231
15.1.3 c 类 for 循环 232
15.1.4 无限 for 循环 233
15.2 while 循环 234
15.2.1 while 循环的语法 234
15.2.2 使用 wh ile 逐行读取文件 235
15.2.3 无限循环 236
15.3 直到循环 237
15.3.1 直到循环的语法 237
15.3.2 无限循环直到 238
15.4 选择循环 238
15.5 嵌套循环 239
15.6 循环控制 241
15.6.1 break 语句 241
15.6.2 continue 语句 241
第 16 章函数 243
16.1 函数的基础知识 243
16.1.1 函数的定义和调用 243
16.1.2 函数的返回值 244
16.2 带参数的函数 246
16.2.1位置参数 246
16.2.2 指定位置参数值 247
16.2.3 移动位置参数 248
16.3 函数库 249
16.3.1 自定义函数库 249
16.3.2 简介到函数库 /etc/init.d/functions 249
16.4 递归函数 251
第 17 章重定向 255
17.1 重定向简介 255
17.1. 1 重定向的基本概念 255
17.1.2 文件标识符和标准输入和输出 255
17.2 i/o 重定向 255
17.2.1 i/o 重定向符号和用法 255
17.2 .2 使用exec 260
17.2.3 here document 262
第 18 章脚本示例 263
18.1 批量添加用户脚本 263
18.2 检测服务器存活 266
18.3 使用 expect 自动输入 268
18.4 自动登录 ftp 备份 270
18.5 文件安全检测脚本 272
18.6 ssh 自动登录备份 273
18.7 使用 rsync 备份 275
18.8 使用 netcat 备份 277
18.9 使用 iptables 创建防火墙 279
18.10 自定义启动项的初始化脚本 282
18.11 使用脚本操作mysql数据库 286
18.12 基于lvm快照的mysql数据库备份 288
18.13 自动安装lamp环境第291页

linux基本操作(编写shell脚本)

终于来到了shell脚本章节。过去,作者出售了很多关于 shell 脚本有多重要的问题。确实,shell脚本在Linux系统管理员的运维工作中非常重要。现在作者将带你正式进入 shell 脚本的世界。

现在,你明白什么是 shell 脚本了吗?如果你懂的最好,不懂也没关系。相信随着学习的深入,你会越来越了解什么是shell脚本。首先,它是一个脚本,而不是一种正式的编程语言。因为它在 linux shell 中运行,所以称为 shell 脚本。说白了,一个shell脚本就是一个命令的集合。比如我要实现如下操作: 1)进入/tmp/目录; 2) 列出当前目录下的所有文件名; 3)将当前所有文件复制到/root/目录下; 4)删除当前目录下的所有文件。 shell 窗口中的简单 4 个步骤要求您键入命令 4 次并按 enter 4 次。这很麻烦吗?当然,这 4 步操作非常简单。如果更复杂的命令设置需要几十个操作怎么办?在那种情况下,一次在键盘上打字会很麻烦。所以你不妨把所有的操作都记录在一个文档中,然后调用文档中的命令,这样一步操作就可以完成了。其实这个文件是一个shell脚本,但是这个shell脚本有它的特殊格式。

Shell 脚本可以帮助我们非常方便地管理服务器,因为我们可以指定一个任务调度来定期执行某个 shell 脚本来达到我们想要的效果。这对于 Linux 系统管理员来说是一件非常自豪的事情。目前的139邮箱非常好用。发送电子邮件时,您还可以向用户发送电子邮件通知短信。使用这个,我们可以在我们的linux服务器上部署监控shell脚本,比如网卡流量异常或者服务器异常。当web服务器停止时,可以给管理员发邮件,同时可以给管理员发报警短信,让我们及时知道服务器有问题。

有一个问题需要达成一致。建议将自定义脚本放在 /usr/local/sbin/ 目录中。这样做的目的是为了更好地管理文档;其次,将来接管您的管理每个人都知道将自定义脚本放在哪里,以便于维护。

【shell脚本的基本结构及执行方式】

Shell 脚本通常以 .sh 为后缀。这并不是说没有.sh就不能执行脚本,只是大家的习惯。所以,你找到一个后缀为.sh的文件后,它一定是一个shell脚本。 test.sh 中的第一行必须是“#! /bin/bash”,表示该文件使用 bash 语法。如果未设置此行,则无法执行您的 shell 脚本。 '#' 表示注释,如前所述。后面还有一些关于脚本的相关评论,以及作者和创作日期或版本等。当然,这些评论不是必须的。如果你很懒,你可以省略它们,但我不建议省略它们。因为随着工作时间的增加,你会编写越来越多的 shell 脚本。如果您回顾一天编写的脚本,您可能会忘记该脚本的用途和编写时间。的。所以有必要写一个笔记。此外,您不是唯一的系统管理员。如果其他管理员看到你的脚本,他看不懂是不是很郁闷。脚本的下方是要运行的命令。

shell脚本的执行很简单,就是“sh filename”,你也可以这样执行

默认情况下,我们用vim编辑的文档是没有执行权限的,所以需要添加一个执行权限,这样就可以直接使用'./filename'来执行脚本了。另外,在使用sh命令执行shell脚本时,可以添加-x选项来查看脚本的执行过程,这有助于我们调试脚本出了什么问题。

shell脚本中使用了命令'date',它的作用是打印当前系统时间。事实上,shell 脚本中的日期使用率非常高。我经常在 shell 脚本中使用几个选项:

%Y 表示年,%m 表示月,%d 表示日期,%H 表示小时,%M 表示分钟,%S 表示秒

注意 %y 和 %Y 之间的区别。

-d 选项也经常被使用,它可以打印 n 天前或 n 天后的日期,当然也可以打印 n 个月/年前或更晚的日期。

一周中的其他日子也很常用

[shell 脚本中的变量]

在 shell 脚本中使用变量使我们的脚本更专业,更像一门语言。开个玩笑,变量当然不是出于专业目的。如果你编写一个 1000 行长的 shell 脚本,并且某个命令或路径在脚本中出现了数百次。突然觉得路径不对,想改。不是要换几百次吗?您当然可以使用批量替换命令,但它很麻烦,而且脚本也很臃肿。变量的作用就是解决这个问题。

在 test2.sh 中使用了反引号,你还记得它的作用吗? 'd'和'd1'作为变量出现在脚本中,定义变量的格式是“变量名=变量值”。在脚本中引用变量时,需要加上'$'符号,这与前面介绍的shell中的自定义变量是一致的。我们来看看脚本执行结果。

让我们使用 shell 来计算两个数字的和。

数学计算应包含在“[]”中并用“$”括起来。脚本的结果是:

Shell 脚本也可以与用户交互。

这使用读取命令,该命令从标准输入中获取变量的值,后跟变量名。 “read x”表示需要用户通过键盘输入获取x变量的值。脚本执行流程如下:

我们不妨加个-x选项来看看执行过程:

test4.sh 中有更简洁的方式。

read -p 选项的作用类似于 echo。执行如下:

你有没有用过这个命令“/etc/init.d/iptables restart” 之前的/etc/init.d/iptables文件其实是一个shell脚本,为什么后面可以跟一个“restart”?这里涉及到 shell 脚本的预设变量。

其实shell脚本执行的时候可以跟变量,后面可以跟多个。还不如写个脚本,你就明白了。

执行过程如下:

在脚本中,您会想知道 $1 和 $2 是从哪里来的吗?这些实际上是shell脚本的默认变量,其中$1的值是执行时输入的1,$2的值是执行。当时输入$2,

当然,shell 脚本的默认变量没有限制,这次你明白了。还有一个 $0,但它代表脚本本身的名称。不妨修改一下脚本。

你一定猜到了执行结果。

【shell脚本中的逻辑判断】

如果你学过C或其他语言,相信你不会对if感到陌生。我们还可以在 shell 脚本中使用 if 逻辑判断。 shell中if判断的基本语法是:

1) 没有别的

if判断语句;那么

命令

fi

((a<60)) 形式出现在 if1.sh 中,这是 shell 脚本中的独特形式。是否使用括号都会报错。请记住这个表格。执行结果为:

2) 与其他

if判断语句;那么

命令

其他

命令

fi

执行结果为:

3) 使用 elif

if判断语句一;那么

命令

elif判断语句2;那么

命令

其他

命令

fi

这里&&表示“和”,当然也可以使用||表示“或”,执行结果:

以上只是对if语句结构的简单介绍。除了“(( ))”的形式外,还可以使用“[ ]”来判断值的大小。但是不能使用>、<、=这样的符号,

使用-lt(小于)、-gt(大于)、-le(小于或等于)、-ge(大于或等于)、-eq(等于)、-ne(不等于)。

再看&&和||的用法在如果。

如果在shell脚本中也经常判断文件的属性,比如判断是普通文件还是目录,判断文件是否有读、写、执行权限等。常用的只有几个使用的选项:

-e : 判断文件或目录是否存在

-d : 判断是否是目录,是否存在

-f : 判断是否为普通文件,是否存在

-r:判断文档是否有读权限

-w:判断是否有写权限

-x:判断是否可执行

使用if判断时,具体格式为:if [ -e filename ] ;那么

在shell脚本中,除了用if判断逻辑外,还有一种常用的方式,就是case。具体格式为:

案例变量在

值1)

命令

;;

值2)

命令

;;

值3)

命令

;;

*)

命令

;;

esac

在上述结构中,值的个数没有限制,*表示除上述值外的其他值。接下来,作者编写了一个判断输入值是奇数还是偶数的脚本。

$a的值为1或0,执行结果为:

你也可以看看执行过程:

案例脚本通常用于编写系统服务的启动脚本。例如,它们在 /etc/init.d/iptables 中使用。您可能希望查看它们。

[shell 脚本中的循环]

Shell 脚本也是一种简单的编程语言,当然循环是必不可少的。常用的循环有for循环和while循环。下面描述两个循环的结构。

脚本中的seq 1 5表示从1到5的序列,可以直接试试这个命令。脚本执行的结果是:

通过这个脚本,可以看到for循环的基本结构:

for 循环条件中的变量名;做

命令

完成

循环的条件部分也可以写成这种形式,用空格隔开。你也可以试试,for i in `ls`;回声 $i;在`cat test.txt`中完成和for i;回声 $i;完成

再看这个while循环,基本格式是:

while 条件;做

命令

完成

脚本的执行结果是:

你也可以忽略循环条件,我经常这样写监控脚本。

当 :;做

命令

完成

[shell脚本中的函数]

如果您研究过开发,您就会知道函数的作用。不管你是不是刚接触到这个概念,其实还是蛮好理解的。一个函数就是把一段代码组织成一个小单元,并给这个小单元起个名字,

使用此代码时,可以直接调用这个小单元的名称。有时脚本中的某个段落总是被重复使用。如果写成函数,每次使用都可以直接换成函数名,节省时间和空间。

fun.sh 中的 sum() 是一个自定义函数,在 shell 脚本中使用

函数函数名() {

命令

此格式用于定义函数。

最后一个脚本执行如下:

我要提醒你一点,在shell脚本中,函数一定要写在最前面,不能写在中间或最后,因为函数是要被调用的,如果在它出现之前被调用,就会肯定是错的。

shell脚本一般介绍这么多,作者给出的例子是最基础的,所以即使你完全掌握了所有的例子,也不代表你的shell脚本能力有多好。因此,在接下来的一天中尽可能多地练习,

多写脚本,你写的脚本越多,你的能力就越强。希望你能找到一本专门讲shell脚本的书,深入研究一下。那我给你留几个shell脚本练习,你最好不要偷懒。

1、编写shell脚本,计算1-100的总和;

2、编写一个需要输入数字的shell脚本,然后计算从1到输入数字的和,要求如果输入数字小于1,则重新输入,直到输入正确的数字;

3、编写shell脚本,将/root/目录下的所有目录(只需要一层)复制到/tmp/目录下;

4、编写shell脚本,批量创建用户user_00、user_01、...、user_100,所有用户都属于users组;

5、编写一个shell脚本,截取文件test.log中包含关键字'abc'的行的第一列(假设分隔符为“:”),然后对截取的数字进行排序(假设第一列的数字),然后打印出超过 10 次重复的列;

6、编写shell脚本判断输入IP是否正确(IP规则为,n1.n2.n3.n4,其中1

)。

阅读剩余
THE END