第 1 章 文件安全与权限 1 1.1 文件 1 1.2 文件类型 2 1.3 权限 2 1.4 改变权限位 4 1.4.1 符号模式 4 1.4.2 chmod 命令举例 5 1.4.3 绝对模式 5 1.4.4 chmod 命令的其他例子 6 1.4.5 可以选择使用符号模式或绝对模式 7 1.5 目录 7 1.6 suid/guid 7 1.6.1 为什么要使用 suid/guid 8 1.6.2 设置 suid/guid 的例子 8 1.7 chown 和 chgrp 9 1.7.1 chown 举例 9 1.7.2 chgrp 举例 9 1.7.4 找出其他用户所属于的组 10 1.8 umask 10 1.8.1 如何计算 umask 值 10 1.8.2 常用的 umask 值 11 1.9 符号链接 12 1.9.1 使用软链接来保存文件的多个映像 12 1.9.2 符号链接举例 12 1.10 小结 13 第 2 章 使用 find 和 xargs 14 2.1 find 命令选项 14 2.1.1 使用 name 选项 15 2.1.2 使用 perm 选项 16 2.1.3 忽略某个目录 16 2.1.4 使用 user 和 nouser 选项 16 2.1.5 使用 group 和 nogroup 选项 16 2.1.6 按照更改时间查找文件 17 2.1.7 查找比某个文件新或旧的文件 17 2.1.8 使用 type 选项 17 2.1.9 使用 size 选项 18 2.1.10 使用 depth 选项 18 2.1.11 使用 mount 选项 18 2.1.12 使用 cpio 选项 18 2.1.13 使用 exec 或 ok 来执行 shell 命令 19 2.1.14 find 命令的例子 20 2.2 xargs 20 2.3 小结 21 第 3 章 后台执行命令 22 3.1 cron 和 crontab 22 3.1.1 crontab 的域 22 3.1.2 crontab 条目举例 23 3.1.3 crontab 命令选项 23 3.1.4 创建一个新的 crontab 文件 24 3.1.5 列出 crontab 文件 24 3.1.6 编辑 crontab 文件 24 3.1.7 删除 crontab 文件 25 3.1.8 恢复丢失的 crontab 文件 25 3.2 at 命令 25 3.2.1 使用 at 命令提交命令或脚本 26 3.2.2 列出所提交的作业 27 3.2.3 清除一个作业 27 3.3 &命令 27 3.3.1 向后台提交命令 28 3.3.2 用 ps 命令查看进程 28 3.3.3 杀死后台进程 28 3.4 nohup 命令 29 3.4.1 使用 nohup 命令提交作业 29 3.4.2 一次提交几个作业 29 3.5 小结 30 第 4 章 文件名置换 31 4.1 使用* 31 4.2 使用? 32 4.3 使用[...]和[!...] 32 4.4 小结 33 第 5 章 shell 输入与输出 34 5.1 echo 34 5.2 read 35 5.3 cat 37 5.4 管道 38 5.5 tee 39 5.6 标准输入、输出和错误 40 5.6.1 标准输入 40 5.6.2 标准输出 40 5.6.3 标准错误 40 5.7 文件重定向 40 5.7.1 重定向标准输出 41 5.7.2 重定向标准输入 42 5.7.3 重定向标准错误 42 5.8 结合使用标准输出和标准错误 43 5.9 合并标准输出和标准错误 43 5.10 exec 44 5.11 使用文件描述符 44 5.12 小结 45 第 6 章 命令执行顺序 46 6.1 使用&& 46 6.2 使用|| 46 6.3 用()和{ }将命令结合在一起 47 6.4 小结 48 第二部分 文本过滤 第 7 章 正则表达式介绍 49 7.1 使用句点匹配单字符 50 7.2 在行首以^匹配字符串或字符序列 50 7.3 在行尾以$匹配字符串或字符 51 7.4 使用*匹配字符串中的单字符或其重复序列 51 7.5 使用\屏蔽一个特殊字符的含义 52 7.6 使用[]匹配一个范围或集合 52 7.7 使用\{\}匹配模式结果出现的次数 53 7.8 小结 55 第 8 章 grep 家族 56 8.1 grep 57 8.1.1 双引号引用 57 8.1.2 grep 选项 57 8.1.3 查询多个文件 57 8.1.4 行匹配 57 8.1.5 行数 58 8.1.6 显示非匹配行 58 8.1.7 精确匹配 58 8.1.8 大小写敏感 58 8.2 grep 和正则表达式 58 8.2.1 模式范围 59 8.2.2 不匹配行首 59 8.2.3 设置大小写 59 8.2.4 匹配任意字符 59 8.2.5 日期查询 59 8.2.6 范围组合 60 8.2.7 模式出现机率 60 8.2.8 使用 grep 匹配“与”或者“或”模式 61 8.2.9 空行 61 8.2.10 匹配特殊字符 61 8.2.11 查询格式化文件名 61 8.2.12 查询 IP 地址 61 8.3 类名 62 8.4 系统 grep 命令 62 8.4.1 目录 63 8.4.2 passwd 文件 63 8.4.3 使用 ps 命令 63 8.4.4 对一个字符串使用 grep 64 8.5 egrep 64 8.6 小结 65 第 9 章 AWK 介绍 66 9.1 调用 awk 66 9.2 awk 脚本 67 9.2.1 模式和动作 67 9.2.2 域和记录 67 9.2.3 awk 中正则表达式及其操作 70 9.2.4 元字符 70 9.2.5 条件操作符 70 9.2.6 awk 内置变量 73 9.2.7 NF、NR 和 FILENAME 74 9.2.8 awk 操作符 75 9.2.9 内置的字符串函数 78 9.2.10 字符串屏蔽序列 80 9.2.11 awk 输出函数 printf 81 9.2.12 printf 修饰符 81 9.2.13 awk 数组 86 9.3 小结 88 第 10 章 sed 用法介绍 89 10.1 sed 怎样读取数据 89 10.2 调用 sed 89 10.2.1 保存 sed 输出 90 10.2.2 使用 sed 在文件中查询文本的方式 90 10.2.3 基本 sed 编辑命令 90 10.3 sed 和正则表达式 91 10.4 基本 sed 编程举例 91 10.4.1 使用 p(rint)显示行 91 10.4.2 打印范围 91 10.4.3 打印模式 92 10.4.4 使用模式和行号进行查询 92 10.4.5 匹配元字符 92 10.4.6 显示整个文件 92 10.4.7 任意字符 92 10.4.8 首行 92 10.4.9 最后一行 93 10.4.10 打印行号 93 10.4.11 附加文本 93 10.4.12 创建 sed 脚本文件 94 10.4.13 插入文本 94 10.4.14 修改文本 95 10.4.15 删除文本 96 10.4.16 替换文本 96 10.5 使用替换修改字符串 97 10.6 将 sed 结果写入文件命令 97 10.7 从文件中读文本 98 10.8 匹配后退出 98 10.9 显示文件中的控制字符 99 10.10 使用系统 sed 99 10.10.1 处理控制字符 99 10.10.2 处理报文输出 101 10.10.3 去除行首数字 101 10.10.4 附加文本 102 10.10.5 从 shell 向 sed 传值 102 10.10.6 从 sed 输出中设置 shell 变量 102 10.11 快速一行命令 102 10.12 小结 103 第 11 章 合并与分割 104 11.1 sort 用法 104 11.1.1 概述 104 11.1.2 sort 选项 104 11.1.3 保存输出 105 11.1.4 sort 启动方式 105 11.1.5 sort 对域的参照方式 105 11.1.6 文件是否已分类 105 11.1.7 基本 sort 106 11.1.8 sort 分类求逆 106 11.1.9 按指定域分类 106 11.1.10 数值域分类 106 11.1.11 唯一性分类 107 11.1.12 使用 k 的其他 sort 方法 108 11.1.13 使用 k 做分类键排序 108 11.1.14 指定 sort 序列 108 11.1.15 pos 用法 108 11.1.16 使用 head 和 tail 将输出分类 109 11.1.17 awk 使用 sort 输出结果 109 11.1.18 将两个分类文件合并 110 11.2 系统 sort 110 11.3 uniq 用法 111 11.4 join 用法 112 11.5 cut 用法 114 11.5.1 使用域分隔符 115 11.5.2 剪切指定域 115 11.6 paste 用法 116 11.6.1 指定列 116 11.6.2 使用不同的域分隔符 116 11.6.3 paste 命令管道输入 117 11.7 split 用法 117 11.8 小结 118 第 12 章 tr 用法 119 12.1 关于 tr 119 12.1.1 字符范围 119 12.1.2 保存输出 120 12.1.3 去除重复出现的字符 120 12.1.4 删除空行 120 12.1.5 大写到小写 121 12.1.6 小写到大写 121 12.1.7 删除指定字符 121 12.1.8 转换控制字符 122 12.1.9 快速转换 122 12.1.10 匹配多于一个字符 123 12.2 小结 123 第三部分 登录环境 第 13 章 登录环境 125 13.1 /etc/profile 125 13.2 用户的$HOME.profile 128 13.3 stty 用法 129 13.4 创建.logout 文件 131 13.5 小结 131 第 14 章 环境和 shell 变量 132 14.1 什么是 shell 变量 132 14.2 本地变量 132 14.2.1 显示变量 133 14.2.2 清除变量 133 14.2.3 显示所有本地 shell 变量 133 14.2.4 结合变量值 134 14.2.5 测试变量是否已经设置 134 14.2.6 使用变量来保存系统命令参数 135 14.2.7 设置只读变量 135 14.3 环境变量 136 14.3.1 设置环境变量 136 14.3.2 显示环境变量 136 14.3.3 清除环境变量 137 14.3.4 嵌入 shell 变量 137 14.3.5 其他环境变量 139 14.3.6 set 命令 140 14.3.7 将变量导出到子进程 140 14.4 位置变量参数 141 14.4.1 在脚本中使用位置参数 142 14.4.2 向系统命令传递参数 142 14.4.3 特定变量参数 143 14.4.4 最后的退出状态 144 14.5 小结 145 第 15 章 引号 146 15.1 引用必要性 146 15.2 双引号 146 15.3 单引号 147 15.4 反引号 147 15.5 反斜线 148 15.6 小结 149 第四部分 基础shell编程 第 16 章 shell 脚本介绍 151 16.1 使用 shell 脚本的原因 151 16.2 脚本内容 151 16.3 运行一段脚本 152 16.4 小结 153 第 17 章 条件测试 154 17.1 测试文件状态 154 17.2 测试时使用逻辑操作符 155 17.3 字符串测试 155 17.4 测试数值 156 17.5 expr 用法 157 17.5.1 增量计数 158 17.5.2 数值测试 158 17.5.3 模式匹配 158 17.6 小结 159 第 18 章 控制流结构 160 18.1 退出状态 160 18.2 控制结构 160 18.2.1 流控制 161 18.2.2 循环 161 18.3 if then else 语句 161 18.3.1 简单的 if 语句 162 18.3.2 变量值测试 162 18.3.3 grep 输出检查 163 18.3.4 用变量测试 grep 输出 163 18.3.5 文件拷贝输出检查 164 18.3.6 当前目录测试 164 18.3.7 文件权限测试 165 18.3.8 测试传递到脚本中的参数 165 18.3.9 决定脚本是否为交互模式 165 18.3.10 简单的 if else 语句 166 18.3.11 变量设置测试 166 18.3.12 检测运行脚本的用户 166 18.3.13 将脚本参数传入系统命令 167 18.3.14 null:命令用法 167 18.3.15 测试目录创建结果 168 18.3.16 另一个拷贝实例 169 18.3.17 多个 if 语句 169 18.3.18 测试和设置环境变量 169 18.3.19 检测最后命令状态 170 18.3.20 增加和检测整数值 171 18.3.21 简单的安全登录脚本 172 18.3.22 elif 用法 173 18.3.23 使用 elif 进行多条件检测 173 18.3.24 多文件位置检测 174 18.4 case 语句 175 18.4.1 简单的 case 语句 175 18.4.2 对匹配模式使用| 176 18.4.3 提示键入 y 或 n 177 18.4.4 case 与命令参数传递 177 18.4.5 捕获输入并执行空命令 178 18.4.6 缺省变量值 179 18.5 for 循环 180 18.5.1 简单的 for 循环 181 18.5.2 打印字符串列表 181 18.5.3 对 for 循环使用 ls 命令 181 18.5.4 对 for 循环使用参数 182 18.5.5 使用 for 循环连接服务器 183 18.5.6 使用 for 循环备份文件 183 18.5.7 多文件转换 183 18.5.8 多sed 删除操作 184 18.5.9 循环计数 184 18.5.10 for 循环和本地文档 184 18.5.11 for 循环嵌入 185 18.6 until 循环 186 18.6.1 简单的 until 循环 186 18.6.2 监视文件 187 18.6.3 监视磁盘空间 187 18.7 while 循环 188 18.7.1 简单的 while 循环 188 18.7.2 使用 while 循环读键盘输入 188 18.7.3 用 while 循环从文件中读取数据 189 18.7.4 使用 IFS 读文件 189 18.7.5 带有测试条件的文件处理 190 18.7.6 扫描文件行来进行数目统计 191 18.7.7 每次读一对记录 193 18.7.8 忽略#字符 193 18.7.9 处理格式化报表 194 18.7.10 while 循环和文件描述符 196 18.8 使用 break 和 continue 控制循环 197 18.8.1 break 197 18.8.2 跳出 case 语句 197 18.8.3 continue 197 18.8.4 浏览文件行 198 18.9 菜单 199 18.10 小结 201 第 19 章 shell 函数 202 19.1 在脚本中定义函数 203 19.2 在脚本中使用函数 203 19.3 向函数传递参数 203 19.4 从调用函数中返回 203 19.5 函数返回值测试 204 19.6 在 shell 中使用函数 204 19.7 创建函数文件 204 19.8 定位文件 205 19.9 检查载入函数 205 19.10 执行 shell 函数 205 19.10.1 删除 shell 函数 206 19.10.2 编辑 shell 函数 206 第 26 章 shell 工具 289 26.1 创建保存信息的文件 289 26.1.1 使用 date 命令创建日志文件 289 26.1.2 创建唯一的临时文件 290 26.2 信号 291 26.2.1 杀死一个进程 292 26.2.2 检测信号 293 26.3 trap 294 26.3.1 捕获信号并采取相应的行动 294 26.3.2 捕获信号并采取行动的另一个例子 295 26.3.3 锁住终端 297 26.3.4 忽略信号 298 26.4 eval 300 26.4.1 执行含有字符串的命令 300 26.4.2 给每个值一个变量名 301 26.5 logger 命令 302 26.5.1 使用 logger 命令 303 26.5.2 在脚本中使用 logger 命令 303 26.6 小结 305 第 27 章 几个脚本例子 306 27.1 pingall 306 27.2 backup_gen 306 27.3 del.lines 312 27.4 access.deny 313 27.5 logroll 316 27.6 nfsdown 317 27.7 小结 317 第 28 章 运行级别脚本 318 28.1 怎么知道系统中是否含有运行级别目录 318 28.2 确定当前的运行级别 319 28.3 快速熟悉 inittab 319 28.4 运行级别 320 28.4.1 各种运行级别 321 28.4.2 运行级别脚本的格式 321 28.4.3 安装运行级别脚本 322 28.5 使用 inittab 来启动应用程序 323 28.6 启动和停止服务的其他方法 324 28.7 小结 324 第 29 章 cgi 脚本 325 29.1 什么是 Web 页面? 325 29.2 cgi 325 29.3 连接 Web 服务器 326 29.4 cgi 和 HTM 脚本 326 29.4.1 基本 cgi 脚本 326 29.4.2 显示 shell 命令输出 328 29.4.3 使用 SSI 330 29.4.4 访问计数器 330 29.4.5 使用一个链接来显示当前 Web 环境变量 332 29.4.6 其他常用的环境变量 334 29.5 get 和 post 方法简介 335 29.5.1 get 方法 335 29.5.2 post 方法 340 29.5.3 填充列表项 347 29.5.4 自动刷新页面 348 29.6 小结 349 附录 常用 shell 命令 350 根据提供的文件内容,以下是关于LINUX与UNIX SHELL编程指南的知识点: ### 文件安全与权限 - **文件**: 操作系统中用来存储信息的基本实体。 - **文件类型**: 包括普通文件、目录、字符设备文件、块设备文件、管道文件和链接文件等。 - **权限**: 文件或目录访问权限,通常包括读、写、执行权限,分别对应用户(u)、组(g)和其他(o)。 - **改变权限位**: 通过`chmod`命令,可以使用符号模式或绝对模式来修改权限。 - **目录**: 存储文件和子目录的容器。 - **suid/guid**: Set User ID和Set Group ID位,允许用户以文件所有者或组的权限来执行文件。 - **chown 和 chgrp**: 分别用来更改文件的所有者和组。 - **umask**: 默认的文件和目录创建权限屏蔽字,用来定义新创建文件和目录的权限。 - **符号链接**: 是一个特殊文件,它指向另一个文件的路径名。 - **find**: 用于在目录树中查找文件,并执行与找到的文件相关的各种操作。 - **xargs**: 将输入转换成命令行参数,通常与find命令配合使用。 ### 后台执行命令 - **cron 和 crontab**: 定时任务调度器,用于自动化周期性任务。 - **at**: 提交一次性任务执行。 - **&命令**: 将命令放到后台执行。 - **nohup**: 在后台运行程序时忽略挂起信号。 ### 文件名置换 - **使用***: 匹配任意多个字符。 - **使用?**: 匹配任意单个字符。 - **使用[...]和[!...]**: 指定字符集合或排除字符集合。 ### Shell 输入与输出 - **echo**: 输出命令行的文本。 - **read**: 从标准输入读取一行。 - **cat**: 连接文件并打印到标准输出。 - **管道**: 允许将一个命令的输出直接作为另一个命令的输入。 - **tee**: 读取标准输入,并将其内容输出到标准输出和文件。 - **标准输入、输出和错误**: 分别对应输入、输出和错误信息。 - **文件重定向**: 将标准输入、输出和错误重定向到文件或其他设备。 - **exec**: 执行指定的命令并替换当前的shell进程。 - **文件描述符**: 用于进程和文件之间数据交换的抽象标识符。 ### 命令执行顺序 - **使用&&**: 当前面的命令执行成功时,才执行后面的命令。 - **使用||**: 当前面的命令执行失败时,才执行后面的命令。 - **用()和{}将命令结合在一起**: 用来分组命令,使得可以按照特定顺序执行。 ### 正则表达式 - **使用句点匹配单字符**: 通配符来匹配任意单个字符。 - **在行首以^匹配字符串**: 用来匹配行的开始位置。 - **在行尾以$匹配字符串**: 用来匹配行的结束位置。 - **使用*匹配字符串中的单字符或其重复序列**: 用来匹配零个或多个先前字符。 - **使用\屏蔽一个特殊字符**: 用来屏蔽特殊字符的特殊意义。 - **使用[]匹配一个范围或集合**: 用来匹配字符集中的任意一个字符。 - **使用\{\}匹配模式结果出现的次数**: 用来匹配特定次数的字符模式。 ### grep 家族 - **grep**: 用于搜索和过滤文本。 - **egrep**: 扩展grep,支持更复杂的正则表达式。 ### AWK - **调用awk**: 使用awk脚本来处理文本数据。 - **awk脚本**: 包含模式和动作。 - **域和记录**: 分别对应输入数据的字段和记录。 - **正则表达式**: 在awk中的使用方式。 - **内置变量**: 如NF、NR等。 - **输出函数printf**: 以格式化的方式输出文本。 - **数组**: awk中的数据结构。 ### sed 用法介绍 - **sed**: 用于非交互式编辑文本。 - **基本sed编辑命令**: 包括插入、删除和修改文本行。 - **使用替换修改字符串**: 替换文本行中的字符串。 - **将sed结果写入文件命令**: 保存sed命令的输出结果。 ### 合并与分割 - **sort**: 用于排序文本行。 - **uniq**: 移除排序后相邻的重复行。 - **join**: 根据匹配字段合并两个文件。 - **cut**: 移除文本文件的某部分。 - **paste**: 将两个或多个文件合并。 - **split**: 将文件分割成不同的文件。 ### tr 用法 - **tr**: 用于替换或删除字符。 ### 登录环境 - **/etc/profile**: 系统级别的登录脚本。 - **$HOME/.profile**: 用户级别的登录脚本。 - **stty**: 用于控制终端设置。 ### 环境和 shell 变量 - **什么是shell变量**: 在shell环境中使用的变量。 - **本地变量**: 在当前shell中定义的变量。 - **环境变量**: 用于在shell进程中设置环境信息的变量。 - **位置变量参数**: 用于在脚本或命令中引用传递给脚本的参数。 ### 引号 - **引用必要性**: 在shell编程中用于界定变量和防止特殊字符的扩展。 - **双引号、单引号、反引号和反斜线**: 在shell中处理字符串时的区别和用途。 ### shell 脚本介绍 - **使用shell脚本的原因**: 用于自动化任务和程序流程。 - **脚本内容**: 包括shebang、执行权限、变量、控制流结构等。 - **运行一段脚本**: 通过shell执行脚本文件。 ### 条件测试 - **测试文件状态**: 检查文件的读、写、执行权限。 - **测试时使用逻辑操作符**: 结合多个测试条件。 - **字符串测试、测试数值和expr用法**: 用于各种数据类型和表达式的测试。 ### 控制流结构 - **退出状态**: 命令执行后的返回值。 - **控制结构**: 如if、case、for、until、while等。 - **循环**: 重复执行一组命令直到满足特定条件。 - **使用break和continue控制循环**: 提前退出循环或跳过当前迭代。 ### shell 函数 - **在脚本中定义函数**: 用于封装和复用代码。 - **向函数传递参数**: 提供函数运行时所需的数据。 - **从调用函数中返回**: 结束函数执行并返回值。 - **在shell中使用函数**: 可以在当前shell会话中调用函数。 ### shell 工具 - **创建保存信息的文件**: 使用命令如date创建日志文件。 - **信号**: 用于进程间通信。 - **trap**: 捕获和处理信号。 - **eval**: 执行包含变量和命令的字符串。 - **logger**: 在系统日志中记录消息。 ### 几个脚本例子 - **pingall、backup_gen、del.lines等**: 实际脚本例子,展示了脚本的编写和使用方法。 ### 运行级别脚本 - **了解系统中的运行级别目录**: 用于管理系统的运行级别。 - **inittab**: 系统启动时读取的配置文件。 - **运行级别**: 系统的不同运行状态。 - **使用inittab来启动应用程序**: 通过inittab配置应用程序的启动。 ### cgi 脚本 - **什么是Web页面?**: Web服务器返回给客户端的内容。 - **cgi**: 公共网关接口,用于创建动态网页。 - **连接Web服务器**: 如何在Web服务器上运行cgi脚本。 - **cgi和HTM脚本**: 结合HTM和cgi技术。 - **get和post方法**: 用于向服务器提交数据的方法。 - **使用SSI**: 服务器端包含,一种嵌入式服务器端脚本技术。 - **访问计数器**: 实现跟踪网站访问次数的脚本。 - **显示当前Web环境变量**: 通过cgi脚本获取和显示环境变量。 ### 附录 常用 shell 命令 - 提供了一系列在LINUX和UNIX系统中常用的shell命令参考。 以上总结了文档中提及的关于LINUX与UNIX SHELL编程的核心知识点,涵盖了文件操作、权限管理、文本处理、脚本编写、环境变量配置、工具使用等多个方面,适用于希望学习和提升shell编程技能的读者。
- 粉丝: 5
- 资源: 49
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- (源码)基于SimPy和贝叶斯优化的流程仿真系统.zip
- (源码)基于Java Web的个人信息管理系统.zip
- (源码)基于C++和OTL4的PostgreSQL数据库连接系统.zip
- (源码)基于ESP32和AWS IoT Core的室内温湿度监测系统.zip
- (源码)基于Arduino的I2C协议交通灯模拟系统.zip
- coco.names 文件
- (源码)基于Spring Boot和Vue的房屋租赁管理系统.zip
- (源码)基于Android的饭店点菜系统.zip
- (源码)基于Android平台的权限管理系统.zip
- (源码)基于CC++和wxWidgets框架的LEGO模型火车控制系统.zip