linux shell脚本攻略第3版_那些被遗忘的 UNIX/Linux 经典著作

来自:程序员书库(ID:OpenSourceTop) 编译书单来自:https://medium.com/@sarahelson81/top-6-books-for-unix-and-shell-scripting-beginners-d3e4de7af7a6

你可以通过许多种不同的方式去学习新的编程语言,有些人关注博客,有些人看在线教程,而有些人则喜欢安安静静坐下来读一本好书,就我个人而言,我还是比较信赖传统的学习方式,Unix自1960年诞生以来,就一直在不断发展,特别是对于移动开发和服务器环境管理,学习Unix非常重要,因为它为高级编程奠定了基础。

本文,我将会列出一些需要阅读的书籍,如果你希望Unix和shell脚本编写的熟练程度,不妨从这几本书里选择

1、《UNIX环境高级编程(第3版)》

28a191fc485c1dac0b5bcc236ba61bc3.png

这本书是市场上最好的书之一,W.Richard Stevens在30年前就写下了这本书,开发人员一致认为本书是永恒的经典,新的第3版支持当今领先的系统平台,反映了最新技术进展和最佳实践,并且符合最新的Single UNIX Specification第4版(SUSv4)。

如果你想学习Unix,这是最好的入门书籍,对于已经了解了Unix并希望进一步提升学习的程序员,也大力推荐这本书,总之本书所有层次UNIX/Linux程序员

2、《Linux/UNIX系统编程手册》

b38c34bd34aca1cfbc8dddc6f1feb873.png

这本书的作者Michael Kerrisk是Unix的维护者,他从1987年开始研究Unix,从1990年开始关注Linux。但是,要理解本书,你需要清楚地了解Unix的基本概念。涵盖了逾500个系统调用及库函数,并给出逾200个程序示例,另含88张表格和115幅示意图。

总体而言,本书布局合理,论述清晰,说理透彻,尤其是作者对示例代码的构思巧妙,独具匠心,仔细研读定会受益良多。

3、《Linux程序设计》

226280633f3323e79424719467d5860a.png

Richard Stones和Neil Mathew写的这本书,有几个版本可供选择,目前是第四版,对于想要成为一名Unix编程专家的初学者来说,这是最好的入门书籍之一,这本书从shell一直讲到x-window编程,从简单的TCP/IP网络协议到最大限度利用Linux中的开发工具,使你很容易就学会在不同版本的Linux版本上编写出运行良好的程序。

4、《How Linux Works》

7b6eeafc2b3002040148af2d8f6f4c0d.png

这本书由布莱恩·沃德(Brian Ward)撰写,程序员通常都把时间花在理解技术上(如.Net或Java)背后的工作流程/原理,却很少有人把时间花在Linux上,通过阅读这本书,开发人员就能详细了解每个细节是如何运作的:

  • 网络是如何运作的
  • 系统重新启动的过程
  • ......

5、《Linux Kernel Development》

73270a7919f3c6ed820d822f81226ac3.png

本书由Robert Love编写,主要关注Linux内核级编程新手所犯的错误。理解内核是Linux开发人员的基本要求之一。不管你是专家还是初学者,这本书都会在很多方面帮助你,它详细讲解了内核的接口、设计和实现,通过实际例子来解释内核编程,章节包括使用虚拟内存的内存分配,内核数据结构、处理内核Bug等。

6、《Advanced Unix Programming》

032c7e153bb38dd7a3d1bd9ef53c1154.png

Mark J. Rochkind编写了这本书的第二版,为开发人员提供了一种更现代的学习方法。这本书既可用作工作指南,也可用作参考书。书中介绍了Linux的历史,还包括套接字、线程等细节。早些时候,Stevens的书被认为是最适合学习Linux的开发人员的书,但是就可读性而言,这本书稍微好一些。

7、《UNIX编程环境》

73ed5a234a0d79a9a8918adbcd2f4ea6.png

是Brian W.Kernighan和Rob Pike两位UNIX大师的合力之作,书中引用了大量编程实例,由浅入深地讲解了如何使用unix及其各种工具,以及如何用c语言在unix环境下写出高质量的程序。对于想深入掌握unix和c语言的程序设计人员是一本很好的参考书。

8、《UNIX操作系统设计》

e5f59499552dae0221bf78013cbc7e8a.png

这本书很老,但是不可错过,是Linux之父Linux Torvalds曾捧读的经典著作。它向读者展示了UNIX最开始的设计和实现,UNIX内核体系结构,紧密耦合的多处理机UNIX系统和松散耦合的分布式UNIX系统等,为从事UNIX系统研究与实用程序开发人员提供了一本极有价值的参考资料。

9、《莱昂氏UNIX源代码分析》

6ddb9261fcf5c57168769cbe8be3ab37.png

本书由上、下两篇组成。上篇为UNIX版本6的源代码,下篇是莱昂先生对UNIX操作系统版本6源代码的详细分析。本书语言简洁、透彻,曾作为未公开出版物广泛流传了二十多年,是一部杰出经典之作。

以上提到的名单仅代表我的个人观点,市面上还有许多书,都值得称赞,程序员也都非常喜欢,要成为一名更好的程序员,Linux是一定要学的,因为它教会您很多关于网络、系统编程、操作系统以及进程间通信的知识。所以,赶紧深入研究shell脚本和内核编程吧

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
前言 第一部分 shell 第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.3 找出你所属于的用户组 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 不匹配行首 5
目 录 献辞 致谢 序(一) 序(二) 历史注记 上篇 UNIX操作系统本6源代码 UNIX操作系统过程分类索引 3 UNIX操作系统文件及过程 5 UNIX操作系统定义的符号列表 7 UNIX操作系统源代码交叉引用列表 9 第一部分 初始化、进程初始化 25 第二部分 陷入、中断、系统调用和 进程管理 75 第三部分 程序交换、基本输入/输出、 块设备 109 第四部分 文件和目录、文件系统、管道 133 第五部分 面向字符的特殊文件 181 下篇 莱昂氏UNIX源代码分析 前言 207 第1章 绪论 209 1.1 UNIX操作系统 209 1.2 公用程序 209 1.3 其他文档 210 1.4 UNIX程序员手册 210 1.5 UNIX文档 211 1.6 UNIX操作系统源代码 211 1.7 源代码中各部分 212 1.8 源代码文件 212 1.9 分析的使用 212 1.10 对程序设计水平的一条注释 212 第2章 基础知识 214 2.1 处理机 214 2.2 处理机状态字 214 2.3 通用寄存器 214 2.4 指令集 215 2.5 寻址方式 216 2.5.1 寄存器方式 217 2.5.2 寄存器延迟方式 217 2.5.3 自动增1方式 217 2.5.4 自动减1方式 217 2.5.5 变址方式 217 2.5.6 立即方式 218 2.5.7 相对方式 218 2.6 UNIX汇编程序 219 2.7 存储管理 219 2.8 段寄存器 220 2.9 页说明寄存器 220 2.10 存储分配 220 2.11 状态寄存器 221 2.12 “i”和“d”空间 221 2.13 启动条件 221 2.14 专用设备寄存器 221 第3章 阅读“C”程序 222 3.1 某些选出的例子 222 3.2 例1 222 3.3 例2 223 3.4 例3 223 3.5 例4 225 3.6 例5 225 3.7 例6 227 3.8 例7 227 3.9 例8 228 3.10 例9 228 3.11 例10 229 3.12 例11 229 3.13 例12 230 3.14 例13 230 3.15 例14 231 3.16 例15 231 3.17 例16 232 3.18 例17 233 第4章 概述 235 4.1 变量分配 235 4.2 全局变量 235 4.3 “C”预处理程序 235 4.4 第一部分 236 4.4.1 第1组“.h”文件 236 4.4.2 汇编语言文件 237 4.4.3 在第一部分中的其他文件 237 4.5 第二部分 237 4.6 第三部分 238 4.7 第四部分 238 4.8 第五部分 239 第一部分 初始化、进程初始化 第5章 两个文件 241 5.1 文件malloc.c 241 5.1.1 列表维护规则 241 5.1.2 malloc(2528) 242 5.1.3 mfree(2556) 243 5.1.4 结论 244 5.2 文件prf.c 244 5.2.1 printf(2340) 244 5.2.2 printn(2369) 245 5.2.3 putchar(2386) 246 5.2.4 panic(2419) 247 5.2.5 prdev(2433)、deverror(2447) 247 5.3 包含的文件 247 第6章 系统初启 249 6.1 操作员的动作 249 6.2 start(0612) 249 6.3 main(1550) 251 6.4 进程 252 6.5 proc〔0〕的初始化 252 6.6 sched(1940) 253 6.7 sleep(2066) 253 6.8 swtch(2178) 253 6.9 再回到main 254 第7章 进程 256 7.1 进程映像 256 7.2 proc结构(0358) 257 7.3 user结构(0413) 257 7.4 每个进程数据区 258 7.5 段 258 7.6 映像的执行 258 7.7 核心态执行 259 7.8 用户态执行

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值