Shell脚本学习教程(菜鸟从入门到精通)

前言

这本教程是写给那些在UNIX环境下发现必须写些Shell 脚本,以利于工作进行的计算机用户与软件开发人员。例如,你可能是正在念计算科学的学生,手上有学校给你的第一个UNIX系统账号,你想知道在UNIX下更多的东西,例如你的Windows个人计算机无法处理的那些工作(这种情况下,你通常得写几个脚本来定制个人环境)。或者,你可能是个系统管理新手,需要为公司或学校写几个专用程序(可能是处理事件日志文件,账号、账单管理之类的事情)。你也可能是MacOs的开发老手,但转到崭新的MacOSX的世界,它的安装程序是以Shell脚本写成。不管你来自哪里,如果你想学Shell脚本,那就是写给你的。

一、目录详情

第1章 背景知识
1.1 UNIX简史
1.2 软件工具的原则
此处提供简短的UNIX历史沿革。特别是贝尔实验室的运算环境,也就是UNIX开发的地方,激发了许多软件工具设计上的哲学。该章还会介绍这些原则,并在本书中贯彻执行。
第2章 入门
2.1 脚本编程语言与编译型语言的差异
2.2 为什么要使用 Shell 脚本
2.3 一个简单的脚本
2.4 自给自足的脚本:位于第一行的 #!.
2.5 Shell的基本元素
2.6 访问Shell脚本的参数
2.7 简单的执行跟踪
2.8 国际化与本地化
该章从编译语言与脚本语言间的取舍开始讨论。之后再介绍两个相当简单但很实用的Shell脚本程序。涵盖范围包括了命令、选项、参数、Shell变量、echo与printf的输出、基本输入/输出重定向、命令查找、从脚本里访问参数以及执行跟踪。最后则以国际化与本地化结束;这是在今日“地球村”环境下渐受重视的议题。
第3章 查找与替换
3.1 查找文本
3.2 正则表达式
3.3 字段处理
这里会介绍以正则表达式进行文字查找(或比对)。我们还会说明修改与提取文字的操作。这些都是最基本的Shel1脚本编写的操作。
第4章 文本处理工具
4.1 排序文本
4.2 删除重复
4.3 重新格式化段落
4.4 计算行数、字数以及字符数
4.5 打印
4.6 提取开头或结尾数行
该章介绍的是一些文字处理的软件工具,这些在Shell脚本编写时,都会一再地使用。其中最重要的两个就是sort与uniq,在重组与降低数据量上,它们扮演很重要的角色。本章还会带你看看如何重新编排段落、计算文字单位、显示文件以及取出文件的前几行、后几行数据。
第5章 管道的神奇魔力
5.1 从结构化文本文件中提取数据
5.2 针对 Web 的结构型数据
5.3 文字解密好帮手
5.4 单词列表
5.5 标签列表
该章以几个小型脚本为例,展示结合简单的UNIX工具程序能够产生更强大、更灵活的工具。本章的内容采取cookbook(问题描述与解决方案)的形式,它们共同的部分在于所有的解决方案都组合自线性的管道(pipelines)。
第6章 变量、判断、重复动作
6.1 变量与算术
6.2 退出状态
6.3 case 语句
6.4 循环
6.5 函数
这章介绍Shell语言里不可或缺的部分。包含了Shell变量与算法、退出状态的重要概念、如何判断,以及Shell循环的处理。最后以Shell的函数作结束。
第7章 输入/输出、文件与命令执行
7.1 标准输入、标准输出与标准错误输出
7.2 使用 read 读取行
7.3 关于重定向
7.4 print的完整介绍
7.5 波浪号展开与通配符
7.6 命令替换、
7.7 引用
7.8 执行顺序与 eval
7.9 内建命令
该章为Shell描述的另一章,也是结尾,重点放在输入/输出、Shell所执行的各种替换、加引号、命令行执行顺序,以及Shell内置命令上。
第8章 产生脚本
8.1 路径查找
8.2 软件构建自动化
我们在这里会示范如何结合UNIX的工具以处理更复杂的文本处理工作。本章的程序比第5章的还大,但仍是几分钟便能消化掉。甚至它们所完成的工作,如果使用传统的程序语言,例如C、C++或Java来做,会很困难。
第9章 Awk的惊人表现
9.1 awk命令行
9.2 awk程席模型
9.3 程序元卖
9.4 记录与字段
9.5 模式与操作
9.6 在awk里的单行程序
9.7 语句
9.8 用户定义函数
9.9 字符串函数
9.10 数值函数
该章介绍的是awk语言必备的组成部分。awk是一套功能强大且自给自足的语言。而awk程序更可用来与其他软件工具箱里的其他程序相结合,以执行简单的数据提取、处理与格式编排工作。
第10章 文件处理
10.1 列出文件
10.2 使用touch 更新修改时间
10.3 临时性文件的建立与使用
10.4 寻找文件
10.5 执行命令:xargs
10.6 文件系统的空间信息
10.7 比较文件…
该章介绍了处理文件的几个主要工具。包括列出文件、产生临时文件,以及利用指定标准寻找文件的find命令。另外还有两个与磁盘空间有关的重要命令, 以及比较文件间异同的几个程序。
第11章 扩展实例:合并用户数据库
11.1 问题描述
11.2 密码文件
11.3 合开密码文件
11.4 改变文件所有权
11.5 其他真实世界的议题…
将所有东西串起来,解决既有趣又难易适中的挑战性工作。
第12章 拼写检查
12.1 spell程序
12.2 最初的 UNIX 拼写检查原型
12.3 改良的ispell与aspell
12.4在awk内的拼写检査程序.
该章利用拼写检查的问题,展现如何以数种方式解决它。这里展现了原始的UNIXShell脚本管道以及两个小型的脚本:ispe11与aspe11命令,可自由下载,它们更适用于批处理的拼写检查工作。我们以awk写了一个大小适当的拼写检查程序充分展现使用该语言的简单利落。
第13 章进程
13.1 进程建立…
13.2 进程列表
13.3 进程控制与删除
13.4 进程系统调用的追踪
13.5 进程账…
13.6 延迟的进程调度
13.7 /proc文件系统
该章将重点从文本处理的领域转到工作.(iob)与系统管理上。我们介绍了几个用于管理进程的必备工具,还有sleep命令,这在脚本需要等待某些事发生时很有用,另外则是其他一些用于延迟的标准工具,或修正日期时间命令的处理。最重要的是,该章也包括了trap命令,它可以让Shell脚本控制UNIX的信号。
第14章 Shel 可移植性议题与扩展
14.1 迷思
14.2 bash的shopt 命令
14.3 共通的扩展
14.4 下载信息
14.5 其他扩展的Bourne式Shell
14.6 Shell版本
14.7 Shell的初始化与终止
这里介绍的是一些更有用的扩展,可使用于ksh与bash之下,而非POSIX。-般情况下,你都能安心地将这些扩展套用在你的脚本里。该章还会带你看几个gotchas”,这是等待粗心大意的Shell脚本编写者跳入的陷阱。内容包括了在编写脚本时该注意的事项,还有在执行时可能出现的矛盾。除此之外,还包括有ksh与bash的下载与安装。该章最后会探讨各种不同的Shell实现间,Shell初始化与终结的差异。
第15章 安全的Shell脚本:起点
15.1 安全性 Shell 脚本提示
15.2 限制性Shell
15.3 特洛伊木马
15.4 为Shell脚本设置setuid:坏主意
15.5 ksh93与特权模式…
该章会粗略介绍编写She11脚本时的安全性议题。

二、下载地址

1、下载地址:Shell脚本学习教程 选择如下图红色框文件内容下载

在这里插入图片描述

2、部分章节效果(电子版字迹清晰,可读性很强)

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/3269131.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

T-CNN——利用张量 CNN 增强缺陷检测

1. 摘要 缺陷检测是制造业中一个重要而具有挑战性的问题。本研究引入了张量卷积神经网络(T-CNN),并在罗伯特-博世制造工厂生产的超声波传感器组件缺陷检测的实际应用中验证了其性能。与同类 CNN 模型相比,作者的量子启发 T-CNN 通…

飞凌嵌入式亮相第七届全国大学生嵌入式芯片与系统设计竞赛北部赛区决赛现场

7月20日,2024年第七届全国大学生嵌入式芯片与系统设计竞赛北部赛区决赛在保定大学科技园正式开赛。本次大赛由全国大学生嵌入式芯片与系统设计竞赛组委会、北部赛区执委会主办,保定国家大学科技园与北京邮电大学联合承办,飞凌嵌入式作为本土嵌…

chrome浏览器驱动(所有版本)

chrome浏览器驱动 114之前版本 https://chromedriver.storage.googleapis.com/index.html 125以后 125以后版本下载链接在此,只有后面status是绿色对勾的才可以下载,驱动大版本一致就可以使用,不需版本号一模一样;下载所需版本只…

谨防评论插件暴露服务器 IP

不少评论区插件支持邮件推送,当有新评论的时候会发送邮件,这样就能及时知道有评论了。例如我使用的 Twikoo 就支持邮件推送(还有其他方式,这里不展开)。 但是,这个会暴露真实的服务器 IP。为此&#xff0c…

与Zoom集成获取会议开始和结束事件

一、注册一个Zoom免费帐号(需要在国外注册,国内不允许) 二、进入Zoom应用市场创建一个应用 点击”发展”(开发)菜单,选择构建应用。 同意条款: 选择应用类型: 设置应用信息&#x…

【第四天】计算机网络知识 HTTP1.0,HTTP1.1与HTTP2.0的区别 HTTP3.0

HTTP1.0,HTTP1.1与HTTP2.0的区别 HTTP1.0 默认是短链接,可以强制开启长连接。HTTP1.1默认长连接。HTTP2.0采用多路复用。 HTTP1.0: 默认使用短链接,每次请求都需要建立一个TCP连接。它可以设置:Connection: keep-aliv…

Spring Boot 与 MongoDB 整合指南

MongoDB MongoDB 是一种基于文档的NoSQL数据库,以其高性能、高可用性和易扩展性而著称。它使用 BSON(类似 JSON 的二进制格式)来存储数据,提供了灵活的数据模型,使得开发者可以更轻松地存储和查询复杂的数据结构。将M…

夯实数字经济的“新基建”-基于大数据与区块链技术的新型基础设施

随着我国数据市场的蓬勃发展,构建契合数据特性、加速数据流通与价值释放的新型数据基础设施变得尤为关键。数字基础设施作为数字经济蓬勃发展的基石,其完善与否直接关系到数据能否有效存储、顺畅流通及高效利用,进而促进数据资源向数据资产的…

Python 教程(四):Python运算符合集

目录 专栏列表前言1. 算术运算符2. 比较运算符3. 逻辑运算符4. 位运算符5. 赋值运算符6. 成员运算符7. 身份运算符总结 在前三篇教程中,我们学习了 Python 的基本语法和数据结构以及字符串的特性。本篇教程,我们将深入探讨 Python 中的运算符合集。 专栏…

【docker】部署证书过期监控系统mouday/domain-admin

证书过期了再去部署证书容易被骂,就找了一个开源的证书过期系统来部署一下 过程 官方文档:https://domain-admin.readthedocs.io/zh-cn/latest/manual/install.html#docker 直接下载镜像是超时的,切换一下文档推荐的镜像源 新建docker配置…

ERROR: Cannot find command ‘git’- do you have ‘git’ installed and in your PATH?

ERROR: Cannot find command ‘git’- do you have ‘git’ installed and in your PATH? 目录 ERROR: Cannot find command ‘git’- do you have ‘git’ installed and in your PATH? 【常见模块错误】 【解决方案】 欢迎来到英杰社区https://bbs.csdn.net/topics/61780…

Linux安装TrueNAS(网络附加存储)教程 –第1部分

TrueNAS CORE(原名FreeNAS)是一款流行的存储系统,可帮助您构建自己的高质量存储设置,而无需支付软件费用。您可以将其安装在计算机硬件或虚拟机 (VM) 上,以获得开源存储的好处。 您可以在家中、办公室或数据中心使用T…

vue element-ui日期控件传参

前端&#xff1a;Vue element-ui <el-form-item label"过期时间" :rules"[ { required: true, message: 请选择过期时间, trigger: blur }]"><el-date-picker v-model"form.expireTime" type"date" format"yyyy-MM-dd&…

LoRaWAN网络中的chirpstack

目录 一、chirpstack介绍 二、网关与chirpstack之间的通信 三、NS与AS之间的通信 1、Protobuf 2、gRPC 一、chirpstack介绍 ChirpStack 是一个开源的 LoRaWAN 网络服务器&#xff0c;可用于 设置私有或公共 LoRaWAN 网络。ChirpStack 提供了一个 Web 界面 用于管理网关、设…

重塑与整合奖励机制以对齐大模型

人工智能咨询培训老师叶梓 转载标明出处 大模型的对齐问题&#xff0c;即如何使模型的输出倾向于具备期望的属性&#xff08;如有帮助、无害、真实或创造性&#xff09;&#xff0c;是当前人工智能领域的热点问题。来自芝加哥大学、Google Research、Google DeepMind 和斯坦福大…

搜索引擎搜索功能(三)

SearchEngine 王宇璇/submit - 码云 - 开源中国 (gitee.com)https://gitee.com/yxuan-wang/submit/tree/master/SearchEngine 搜索功能&#xff1a; 对用户输入的词语&#xff0c;短语或句子进行分词&#xff0c;然后将分词后的结果进行查询&#xff0c;得到多个数组&#x…

C#基础——类、构造函数和静态成员

类 类是一个数据类型的蓝图。构成类的方法和变量称为类的成员&#xff0c;对象是类的实例。类的定义规定了类的对象由什么组成及在这个对象上可执行什么操作。 class 类名 { (访问属性) 成员变量; (访问属性) 成员函数; } 访问属性&#xff1a;public&#xff08;公有的&…

ubuntu22.04 安装 NVIDIA 驱动以及CUDA

目录 1、事前问题解决 2、安装 nvidia 驱动 3、卸载 nvidia 驱动方法 4、安装 CUDA 5、安装 Anaconda 6、安装 PyTorch 1、事前问题解决 在安装完ubuntu之后&#xff0c;如果进入ubuntu出现黑屏情况&#xff0c;一般就是nvidia驱动与linux自带的不兼容&#xff0c;可以通…

[ECharts] There is a chart instance already initialized on the dom. 已存在图表,渲染重复

报错&#xff1a;已存在图表&#xff0c;渲染重复 解决: 在合适的时机执行 dispose 方法即可 // echarts 全局存入 实例 let myChart: any;// 在你的 initChart 初始化 Echarts 方法中 先执行清理方法 const initChart () > {// 执行清理方法然后初始化if(myChart){cons…

MATLAB怎么实现多条曲线共用一个图例

y1 sin(x); y2 3*sin(x); y3 cos(x); y4 3*cos(x); 例子&#xff1a;如果我们有4条曲线&#xff0c;分布是cos类和sin类&#xff0c;我们的图例就想区分是cos类还是sin类。 第一步&#xff08;关键步骤&#xff09; 我们要把我们所需要的类别曲线先画一遍&#xff0c; …