Book description
对于系统管理员、程序员和最终用户而言,shell命令或精心设计的shell脚本不仅能节省时间和精力,还可以提升各种常见任务的一致性和可重复性。作为一款流行的Unix shell,bash让你能够利用和自定义Unix或Linux系统的任意功能。
本书将全面讲述bash,内容适用于所有Unix和Linux用户,无论新人还是老手(包括熟练的Windows用户和管理员)。书中提供了300多个bash实例,每个实例均包含一个或多个示例脚本,能够帮你解决各种各样的问题。你将学到如何处理输入/输出、文件操作、程序执行、管理任务以及许多其他挑战。
本书实例包括:
- 标准输出和输入以及执行命令
- shell变量、shell逻辑和算术
- 中级shell工具和高级脚本编写
- 使用find、locate和slocate查找文件
- 处理日期和时间
- 为各种最终用户任务创建shell脚本
- 处理涉及解析操作的任务
- 编写安全的shell脚本
- 配置和自定义bash
Table of contents
- 封面
- 扉页
- 版权
- 版权声明
- O’Reilly Media, Inc.介绍
- 目录 (1/2)
- 目录 (2/2)
- 前言
-
第1章 bash入门
- 1.1 为什么是bash
- 1.2 bash shell
- 1.3 提示符揭秘
- 1.4 显示当前位置
- 1.5 查找并运行命令
- 1.6 获取文件的相关信息
- 1.7 显示当前目录下的所有隐藏(点号)文件
- 1.8 使用shell引用
- 1.9 使用或替换内建命令与外部命令
- 1.10 确定是否处于交互模式
- 1.11 将bash安装为默认shell
- 1.12 持续更新bash
- 1.13 获取Linux版的bash
- 1.14 获取xBSD版的bash
- 1.15 获取macOS版的bash
- 1.16 获取Unix版的bash
- 1.17 获取Windows版的bash
- 1.18 不获取bash的情况下使用bash
- 1.19 更多的bash文档
-
第2章 标准输出
- 2.1 输出到终端/终端窗口
- 2.2 保留输出中的空白字符
- 2.3 在输出中加入更多格式控制
- 2.4 消除输出中的换行符
- 2.5 保存命令输出
- 2.6 将输出保存到其他文件
- 2.7 保存ls命令的输出
- 2.8 将输出和错误消息发送到不同文件
- 2.9 将输出和错误消息发送到同一文件
- 2.10 追加输出
- 2.11 仅使用文件的起始或结尾部分
- 2.12 跳过文件标题
- 2.13 丢弃输出
- 2.14 保存或分组多个命令的输出
- 2.15 将输出作为输入,连接两个程序
- 2.16 将输出作为输入,同时保留其副本
- 2.17 以输出为参数连接两个程序
- 2.18 在一行中多次重定向
- 2.19 重定向不起作用时保存输出
- 2.20 交换STDERR和STDOUT
- 2.21 避免意外覆盖文件
- 2.22 有意覆盖文件
- 第3章 标准输入
- 第4章 执行命令
-
第5章 脚本编程基础:shell变量
- 5.1 记录脚本
- 5.2 在shell脚本中嵌入文档
- 5.3 提高脚本可读性
- 5.4 将变量名与周围的文本分开
- 5.5 导出变量
- 5.6 查看所有的变量值
- 5.7 在shell脚本中使用参数
- 5.8 遍历传入脚本的参数
- 5.9 处理包含空格的参数
- 5.10 处理包含空格的参数列表
- 5.11 统计参数数量
- 5.12 丢弃参数
- 5.13 获取默认值
- 5.14 设置默认值
- 5.15 使用空值作为有效的默认值
- 5.16 不止使用字符串常量作为默认值
- 5.17 对不存在的参数输出错误消息
- 5.18 修改部分字符串
- 5.19 获得某个数的绝对值
- 5.20 用bash实现basename
- 5.21 用bash实现dirname
- 5.22 选取CSV的替换值
- 5.23 使用数组变量
- 5.24 转换大小写
- 5.25 转换为驼峰命名法
- 第6章 shell逻辑与算术
- 第7章 中级shell工具
- 第8章 中级shell工具(续)
- 第9章 查找文件:find、locate、slocate
- 第10章 脚本编程的附加特性
- 第11章 处理日期和时间
- 第12章 帮助最终用户完成任务的shell脚本
-
第13章 与解析相关的任务
- 13.1 解析shell脚本参数
- 13.2 解析参数时使用自定义错误消息
- 13.3 解析HTML
- 13.4 将输出解析到数组
- 13.5 用函数调用解析输出
- 13.6 用read语句解析文本
- 13.7 用read将输入解析至数组
- 13.8 读取整个文件
- 13.9 正确书写复数形式
- 13.10 一次提取一个字符
- 13.11 清理svn源代码树
- 13.12 用MySQL设置数据库
- 13.13 提取数据中的特定字段
- 13.14 更新数据文件中的特定字段
- 13.15 修剪空白字符
- 13.16 压缩空白字符
- 13.17 处理固定长度记录
- 13.18 处理没有换行的文件
- 13.19 将数据文件转换为CSV
- 13.20 解析CSV数据文件
-
第14章 编写安全的shell脚本
- 14.1 避开常见的安全问题
- 14.2 避免解释器欺骗
- 14.3 设置安全的$PATH
- 14.4 清除所有的别名
- 14.5 清除命令散列
- 14.6 防止核心转储
- 14.7 设置安全的$IFS
- 14.8 设置安全的umask
- 14.9 在$PATH中查找人皆可写的目录
- 14.10 将当前目录加入$PATH
- 14.11 使用安全的临时文件
- 14.12 验证输入
- 14.13 设置权限
- 14.14 密码被泄露到进程列表
- 14.15 编写setuid或setgid脚本
- 14.16 限制访客
- 14.17 使用chroot囚牢
- 14.18 以非root用户身份运行
- 14.19 更安全地使用sudo
- 14.20 在脚本中使用密码
- 14.21 使用无密码的SSH (1/2)
- 14.21 使用无密码的SSH (2/2)
- 14.22 限制SSH命令
- 14.23 断开非活跃会话
-
第15章 高级脚本编程
- 15.1 以可移植的方式查找bash
- 15.2 设置兼容POSIX工具的$PATH
- 15.3 开发可移植的shell脚本
- 15.4 用虚拟机测试脚本
- 15.5 使用可移植的循环
- 15.6 使用可移植的echo
- 15.7 仅在必要时分割输出
- 15.8 以十六进制形式查看输出
- 15.9 使用bash的网络重定向
- 15.10 查找自己的IP地址
- 15.11 从另一台机器获取输入
- 15.12 在脚本运行期间重定向输出
- 15.13 解决“Argument list too long”错误
- 15.14 向syslog记录脚本日志
- 15.15 正确地使用logger
- 15.16 在脚本中发送电子邮件
- 15.17 用阶段自动化进程
- 15.18 一心二用
- 15.19 在多个主机上执行SSH命令
-
第16章 bash的配置与自定义
- 16.1 bash启动选项
- 16.2 自定义提示符 (1/2)
- 16.2 自定义提示符 (2/2)
- 16.3 在程序运行前出现的提示符
- 16.4 永久修改$PATH
- 16.5 临时修改$PATH
- 16.6 设置$CDPATH
- 16.7 当找不到命令时
- 16.8 缩短或修改命令名称
- 16.9 调整shell行为及环境
- 16.10 用.inputrc调整readline的行为
- 16.11 通过添加~/bin来存放个人工具
- 16.12 使用辅助提示符:$PS2、$PS3、$PS4
- 16.13 在会话间同步shell历史记录
- 16.14 设置shell的历史选项
- 16.15 创建更好的cd命令
- 16.16 一次性创建并切换到新目录
- 16.17 直达底部
- 16.18 用可装载的内建命令为bash添加新特性
- 16.19 改善可编程补全
- 16.20 正确使用初始化文件
- 16.21 创建自包含的可移植rc文件
- 16.22 自定义配置入门 (1/3)
- 16.22 自定义配置入门 (2/3)
- 16.22 自定义配置入门 (3/3)
-
第17章 内务及管理任务
- 17.1 批量重命名文件
- 17.2 在Linux中使用GUN Texinfo和info
- 17.3 批量解压ZIP文件
- 17.4 用screen恢复断开的会话
- 17.5 共享单个bash会话
- 17.6 记录整个会话或批量作业
- 17.7 注销时清除屏幕
- 17.8 获取用于数据恢复的文件元数据
- 17.9 为多个文件创建索引
- 17.10 使用diff和patch
- 17.11 统计文件间存在多少差异
- 17.12 删除或重命名名称中包含特殊字符的文件
- 17.13 将数据追加到文件开头
- 17.14 就地编辑文件
- 17.15 将sudo应用于一组命令
- 17.16 查找仅出现在一个文件中的行
- 17.17 保留最近的N个对象
- 17.18 写入循环日志
- 17.19 循环备份
- 17.20 搜索不包含grep进程自身在内的ps输出
- 17.21 确定某个进程是否正在运行
- 17.22 为输出添加前缀或后缀
- 17.23 对行进行编号
- 17.24 生成序列
- 17.25 模拟DOS的pause命令
- 17.26 为数值添加逗号
- 第18章 写得少,干得快
- 第19章 窍门与陷阱:新手常见错误
- 附录A 参考
- 附录B bash自带的示例
- 附录C 命令行处理
- 附录D 修订控制
- 附录E 从源代码构建bash
- 关于作者
- 关于封面
Product information
- Title: bash shell脚本编程经典实例 (第2版)
- Author(s):
- Release date: January 2021
- Publisher(s): Posts & Telecom Press
- ISBN: 9787115553782
You might also like
book
bash 网络安全运维
如果你希望抵御攻击者的威胁,就应注重网络安全运维的速度和效率。 在危急时刻,掌握标准命令行界面(CLI)是一项非常宝贵的技能,因为没有其他软件应用程序可以与CLI的可用性、灵活性、敏捷性相媲美。本书将向你展示如何使用带有bash shell 的CLI执行数据收集和分析、入侵检测、逆向工程和管理等任务。 作者深入介绍了命令行工具和技术,以帮助安全从业者收集数据、分析日志和监控网络。渗透测试人员将学习如何利用Linux的功能来支持攻击性操作。 在书中包含的四部分内容中,安全从业者、管理者、学生将会看到: 基础:防御和攻击原则、命令行、bash基础及常规表达。 安全防御操作:数据收集和分析、实时日志监控、恶意软件分析。 渗透测试:脚本混淆和命令行模糊及远程访问工具。 安全管理:用户、组、权限,以及设备和软件清单。
book
Python深度学习入门: 从零构建CNN和RNN
深度学习技术的发展如火如荼,这些知识正迅速成为机器学习从业者甚至许多软件开发工程师的“加分项”。深度学习是一个立体的领域,仅从数学层面或代码层面学习,难免以偏概全,无法融会贯通。 本书作者认为,理解深度学习和神经网络需要多种思维模型。因此,本书从数学、示意图、Python代码三个维度帮助你立体地理解每一个概念,带你领略深度学习领域的全貌,从内到外地理解构建神经网络的每一步。你将学到以下内容。 为理解深度学习的概念和原理构建多种思维模型。 掌握嵌套函数、链式法则等数学概念。 掌握学习率衰减、权重初始化、dropout等优化技巧。 从零构建CNN和RNN等常见的神经网络架构。 使用PyTorch实现神经网络。
book
Istio 学习指南
你已经成功地将应用程序转换为微服务架构,但现在要跨不同环境(公有云到公有云、私有云到公有云、虚拟机到容器)运行服务,你的云原生软件开始遇到可靠性问题。 如何处理日益增加的复杂性?通过Istio服务网格,你将能够管理流量、控制访问、实施监控、获取遥测数据、管理配额、实现链路跟踪,并在微服务上拥有更大的弹性。 在本书中,两位作者解释了为什么服务需要服务网格,并逐步演示了Istio如何适应分布式应用程序的生命周期。你将了解用于启用和管理Istio中多种功能的工具和API。 探索Istio解决的可观察性挑战。 使用请求路由、流量转移、故障注入以及运行可靠服务网格必不可少的其他功能。 生成并收集遥测信息。 尝试不同的部署模式,包括A/B、蓝/绿和金丝雀。 获取有关如何在Istio支持下开发和部署实际应用程序的示例。
book
Python机器学习基础教程
机器学习已成为许多商业应用和研究项目不可或缺的一部分,海量数据使得机器学习的应用范围远超人们想象。本书将向所有对机器学习技术感兴趣的初学者展示,自己动手构建机器学习解决方案并非难事! 书中重点讨论机器学习算法的实践而不是背后的数学,全面涵盖在实践中实现机器学习算法的所有重要内容,帮助读者使用Python和scikit-learn库一步一步构建一个有效的机器学习应用。 机器学习的基本概念及其应用 常用机器学习算法的优缺点 机器学习所处理的数据的表示方法,包括重点关注数据的哪些方面 模型评估和调参的高级方法 管道的概念 处理文本数据的方法,包括文本特有的处理方法 进一步提高机器学习和数据科学技能的建议