新書推薦:
《
逝去的武林(十周年纪念版 武学宗师 口述亲历 李仲轩亲历一九三零年代武人言行录)
》
售價:NT$
250.0
《
唐代冠服图志(百余幅手绘插画 图解唐代各类冠服 涵盖帝后 群臣 女官 士庶 军卫等 展现唐代社会风貌)
》
售價:NT$
398.0
《
知宋·宋代之科举
》
售價:NT$
454.0
《
那本书是(吉竹伸介与又吉直树 天才联动!)
》
售價:NT$
454.0
《
传播的跃迁:人工智能如何革新人类的交流
》
售價:NT$
505.0
《
纯粹·古代中国的历史与制度
》
售價:NT$
286.0
《
生活来来往往 别等来日方长 新版(伍佰:“讲好了这一辈子,再度重相逢。”别等,别遗憾!珍惜当下才是最好的解药)
》
售價:NT$
265.0
《
一个英国军事顾问眼中的二战
》
售價:NT$
1265.0
|
編輯推薦: |
详尽梳理Linux命令行和shell命令知识,写shell脚本原来如此简单:* 好口碑:有口皆碑的Linux作品,中文版累计入库10万册。* 不过时:内容经3次迭代,经过时间检验。* 体系化:含丰富示例,适用于所有Linux发行版。* 新内容:新增“实战演练”环节,助你温故而知新。
|
內容簡介: |
这是一本关于Linux命令行与shell脚本编程的系统性教程,主要包括四大部分 :Linux命令行、shell脚本编程基础、高级shell脚本编程,以及创建和管理实用的脚本。本书这一版针对Linux系统的新特性进行了更新,不仅涵盖了详尽的动手教程和现实世界中的实用信息,还提供了与所学内容相关的参考信息和背景资料。通过本书的学习,你能轻松写出自己的shell脚本。本书适合Linux系统管理员及相关开发人员阅读。
|
關於作者: |
理查德·布卢姆(Richard Blum),从事系统管理和网络管理工作近40年,在Unix、Linux、Novell、Windows Server等领域身经百战,著有多部Linux图书。此外,他的Linux在线课程被世界多所大学和学院采用。克里斯蒂娜·布雷斯纳汉(Christine Bresnahan),拥有近40年的系统管理经验,Udemy讲师,讲授两门Linux在线课程,持有CompTIA Linux+、LPIC-1、Linux Essentials认证。【译者介绍】门佳,GNU/Linux深度用户,喜欢溯本求源,挖掘技术背后的来龙去脉,对程序语言设计理论、编译技术、操作系统设计与实现、Web开发等领域均有涉猎,译著包括《Linux Shell脚本攻略》《shell脚本实战(第2版)》《bash shell脚本编程经典实例(第2版)》以及本书第2版和第3版等。
|
目錄:
|
第 一部分 Linux命令行 第 1 章 初识Linux shell 2 1.1 Linux初探 21.1.1 深入探究Linux内核 3 1.1.2 GNU实用工具 71.1.3 Linux桌面环境 91.2 Linux发行版 131.2.1 核心Linux发行版 141.2.2 特定用途的Linux发行版 141.3 小结 15第 2 章 走进shell 162.1 进入命令行 162.1.1 控制台终端 162.1.2 图形化终端 172.2 通过Linux控制台终端访问CLI 182.3 通过图形化终端仿真器访问CLI 202.4 使用GNOME Terminal终端仿真器 212.4.1 访问GNOME Terminal 212.4.2 菜单栏 252.5 使用Konsole终端仿真器 272.5.1 访问Konsole终端仿真器 272.5.2 菜单栏 292.6 使用xterm终端仿真器 322.6.1 访问xterm 332.6.2 命令行选项 332.7 小结 34第 3 章 bash shell基础命令 36 3.1 启动shell 363.2 使用shell提示符 373.3 与bash手册交互 373.4 浏览文件系统 413.4.1 Linux文件系统 413.4.2 遍历目录 443.5 列出文件和目录 463.5.1 显示基本列表 463.5.2 显示长列表 483.5.3 过滤输出列表 493.6 处理文件 513.6.1 创建文件 513.6.2 复制文件 513.6.3 使用命令行补全 533.6.4 链接文件 543.6.5 文件重命名 553.6.6 删除文件 573.7 管理目录 573.7.1 创建目录 573.7.2 删除目录 583.8 查看文件内容 603.8.1 查看文件类型 603.8.2 查看整个文件 613.8.3 查看部分文件 633.9 小结 64第 4 章 更多的bash shell命令 664.1 监测程序 664.1.1 探查进程 664.1.2 实时监测进程 724.1.3 结束进程 744.2 监测磁盘空间 754.2.1 挂载存储设备 754.2.2 使用df命令 784.2.3 使用du命令 794.3 处理数据文件 804.3.1 数据排序 804.3.2 数据搜索 834.3.3 数据压缩 854.3.4 数据归档 864.4 小结 87第 5 章 理解shell 88 5.1 shell的类型 885.2 shell的父子关系 915.2.1 查看进程列表 955.2.2 别出心裁的子shell用法 965.3 理解外部命令和内建命令 995.3.1 外部命令 1005.3.2 内建命令 1015.4 小结 106第 6 章 Linux环境变量 107 6.1 什么是环境变量 1076.1.1 全局环境变量 1086.1.2 局部环境变量 1096.2 设置用户自定义变量 1106.2.1 设置局部用户自定义变量 1106.2.2 设置全局环境变量 1116.3 删除环境变量 1136.4 默认的shell环境变量 1136.5 设置PATH环境变量 1176.6 定位系统环境变量 1186.6.1 登录shell 1196.6.2 交互式shell进程 1236.6.3 非交互式shell 1246.6.4 环境变量持久化 1246.7 数组变量 1256.8 小结 126第 7 章 理解Linux文件权限 127 7.1 Linux的安全性 1277.1.1 /etc/passwd文件 1277.1.2 /etc/shadow文件 1297.1.3 添加新用户 1297.1.4 删除用户 1327.1.5 修改用户 1327.2 使用Linux组 1357.2.1 /etc/group文件 1357.2.2 创建新组 1367.2.3 修改组 1377.3 理解文件权限 1377.3.1 使用文件权限符号 1377.3.2 默认文件权限 1397.4 更改安全设置 1407.4.1 修改权限 1407.4.2 改变所属关系 1417.5 共享文件 1427.6 访问控制列表 1447.7 小结 145第 8 章 管理文件系统 147 8.1 探索Linux文件系统 1478.1.1 Linux文件系统的演进 1478.1.2 日志文件系统 1488.1.3 卷管理文件系统 1508.2 使用文件系统 1518.2.1 创建分区 1518.2.2 创建文件系统 1558.2.3 文件系统的检查与修复 1578.3 逻辑卷管理 1588.3.1 LVM布局 1598.3.2 Linux中的LVM 1598.3.3 使用Linux LVM 1628.4 小结 163第 9 章 安装软件 1649.1 软件包管理基础 1649.2 基于Debian的系统 1659.2.1 使用apt管理软件包 1659.2.2 使用apt安装软件包 1679.2.3 使用apt升级软件 1699.2.4 使用apt卸载软件包 1709.2.5 apt仓库 1719.3 基于Red Hat的系统 1739.3.1 列出已安装的软件包 1739.3.2 使用dnf安装软件 1749.3.3 使用dnf升级软件 1759.3.4 使用dnf卸载软件 1769.3.5 处理损坏的依赖关系 1769.3.6 RPM仓库 1769.4 使用容器管理软件 1779.4.1 使用snap容器 1779.4.2 使用flatpak容器 1799.5 从源代码安装 1809.6 小结 183第 10 章 文本编辑器 18510.1 vim编辑器 18510.1.1 检查vim软件包 185 10.1.2 vim基础 187 10.1.3 编辑数据 189 10.1.4 复制和粘贴 189 10.1.5 查找和替换 190 10.2 nano编辑器 19110.3 Emacs编辑器 19310.3.1 检查Emacs软件包 193 10.3.2 在控制台中使用Emacs 194 10.3.3 在GUI中使用Emacs 199 10.4 KDE系编辑器 20010.4.1 KWrite编辑器 200 10.4.2 Kate编辑器 204 10.5 GNOME编辑器 20810.5.1 启动gedit 208 10.5.2 gedit的基本功能 209 10.5.3 管理插件 211 10.6 小结 213第二部分 shell脚本编程基础 第 11 章 构建基础脚本 216 11.1 使用多个命令 21611.2 创建shell脚本文件 21711.3 显示消息 21811.4 使用变量 22011.4.1 环境变量 220 11.4.2 用户自定义变量 221 11.4.3 命令替换 222 11.5 重定向输入和输出 22411.5.1 输出重定向 224 11.5.2 输入重定向 225 11.6 管道 22611.7 执行数学运算 22811.7.1 expr命令 228 11.7.2 使用方括号 230 11.7.3 浮点数解决方案 231 11.8 退出脚本 23411.8.1 查看退出状态码 234 11.8.2 exit命令 235 11.9 实战演练 23711.10 小结 238第 12 章 结构化命令 23912.1 使用if-then语句 23912.2 if-then-else语句 24212.3 嵌套if语句 24312.4 test命令 24612.4.1 数值比较 248 12.4.2 字符串比较 249 12.4.3 文件比较 253 12.5 复合条件测试 26212.6 if-then的高级特性 26312.6.1 使用单括号 264 12.6.2 使用双括号 265 12.6.3 使用双方括号 266 12.7 case命令 26712.8 实战演练 26812.9 小结 273第 13 章 更多的结构化命令 27413.1 for命令 27413.1.1 读取列表中的值 275 13.1.2 读取列表中的复杂值 276 13.1.3 从变量中读取值列表 277 13.1.4 从命令中读取值列表 278 13.1.5 更改字段分隔符 279 13.1.6 使用通配符读取目录 280 13.2 C语言风格的for命令 28213.2.1 C语言中的for命令 282 13.2.2 使用多个变量 283 13.3 while命令 28413.3.1 while的基本格式 284 13.3.2 使用多个测试命令 285 13.4 until命令 28613.5 嵌套循环 28713.6 循环处理文件数据 29013.7 循环控制 29113.7.1 break命令 291 13.7.2 continue命令 294 13.8 处理循环的输出 29613.9 实战演练 29713.9.1 查找可执行文件 297 13.9.2 创建多个用户账户 299 13.10 小结 300第 14 章 处理用户输入 301 14.1 传递参数 30114.1.1 读取参数 301 14.1.2 读取脚本名 303 14.1.3 参数测试 305 14.2 特殊参数变量 30514.2.1 参数统计 305 14.2.2 获取所有的数据 307 14.3 移动参数 30914.4 处理选项 31014.4.1 查找选项 311 14.4.2 使用getopt命令 314 14.4.3 使用getopts命令 317 14.5 选项标准化 31914.6 获取用户输入 32014.6.1 基本的读取 320 14.6.2 超时 322 14.6.3 无显示读取 323 14.6.4 从文件中读取 323 14.7 实战演练 32414.8 小结 328第 15 章 呈现数据 329 15.1 理解输入和输出 32915.1.1 标准文件描述符 329 15.1.2 重定向错误 332 15.2 在脚本中重定向输出 33315.2.1 临时重定向 333 15.2.2 永久重定向 334 15.3 在脚本中重定向输入 33515.4 创建自己的重定向 33615.4.1 创建输出文件描述符 336 15.4.2 重定向文件描述符 337 15.4.3 创建输入文件描述符 337 15.4.4 创建读/写文件描述符 338 15.4.5 关闭文件描述符 339 15.5 列出打开的文件描述符 34015.6 抑制命令输出 34115.7 使用临时文件 34215.7.1 创建本地临时文件 342 15.7.2 在/tmp目录中创建临时文件 344 15.7.3 创建临时目录 344 15.8 记录消息 34515.9 实战演练 34615.10 小结 348第 16 章 脚本控制 34916.1 处理信号 34916.1.1 重温Linux信号 349 16.1.2 产生信号 350 16.1.3 捕获信号 352 16.1.4 捕获脚本退出 353 16.1.5 修改或移除信号捕获 354 16.2 以后台模式运行脚本 35616.2.1 后台运行脚本 356 16.2.2 运行多个后台作业 358 16.3 在非控制台下运行脚本 35916.4 作业控制 36016.4.1 查看作业 360 16.4.2 重启已停止的作业 362 16.5 调整谦让度 36316.5.1 nice命令 363 16.5.2 renice命令 364 16.6 定时运行作业 36416.6.1 使用at命令调度作业 364 16.6.2 调度需要定期运行的脚本 368 16.7 使用新shell启动脚本 37116.8 实战演练 37216.9 小结 378第三部分 高级shell脚本编程 第 17 章 创建函数 380 17.1 脚本函数基础 38017.1.1 创建函数 381 17.1.2 使用函数 381 17.2 函数返回值 38317.2.1 默认的退出状态码 383 17.2.2 使用return命令 384 17.2.3 使用函数输出 385 17.3 在函数中使用变量 38617.3.1 向函数传递参数 386 17.3.2 在函数中处理变量 388 17.4 数组变量和函数 39017.4.1 向函数传递数组 390 17.4.2 从函数返回数组 392 17.5 函数递归 39217.6 创建库 39317.7 在命令行中使用函数 39517.7.1 在命令行中创建函数 395 17.7.2 在.bashrc文件中定义函数 396 17.8 实战演练 39817.8.1 下载及安装 398 17.8.2 构建库 398 17.8.3 shtool库函数 399 17.8.4 使用库 400 17.9 小结 401第 18 章 图形化桌面环境中的脚本编程 402 18.1 创建文本菜单 40218.1.1 创建菜单布局 403 18.1.2 创建菜单函数 40418.1.3 添加菜单逻辑 404 18.1.4 整合shell脚本菜单 405 18.1.5 使用select命令 406 18.2 创建文本窗口部件 40718.2.1 dialog软件包 408 18.2.2 dialog选项 413 18.2.3 在脚本中使用dialog命令 415 18.3 图形化窗口部件 41718.3.1 KDE环境 417 18.3.2 GNOME环境 420 18.4 实战演练 42418.5 小结 427第 19 章 初识sed和gawk 428 19.1 文本处理 42819.1.1 sed编辑器 428 19.1.2 gawk编辑器 431 19.2 sed编辑器基础命令 43719.2.1 更多的替换选项 437 19.2.2 使用地址 438 19.2.3 删除行 441 19.2.4 插入和附加文本 443 19.2.5 修改行 445 19.2.6 转换命令 446 19.2.7 再探打印 447 19.2.8 使用sed处理文件 449 19.3 实战演练 45119.4 小结 456第 20 章 正则表达式 457 20.1 正则表达式基础 45720.1.1 定义 457 20.1.2 正则表达式的类型 458 20.2 定义BRE模式 45920.2.1 普通文本 459 20.2.2 特殊字符 460 20.2.3 锚点字符 461 20.2.4 点号字符 463 20.2.5 字符组 464 20.2.6 排除型字符组 466 20.2.7 区间 466 20.2.8 特殊的字符组 467 20.2.9 星号 468 20.3 扩展正则表达式 46920.3.1 问号 469 20.3.2 加号 470 20.3.3 花括号 470 20.3.4 竖线符号 472 20.3.5 表达式分组 472 20.4 实战演练 47320.4.1 目录文件计数 473 20.4.2 验证电话号码 474 20.4.3 解析email地址 476 20.5 小结 477第 21 章 sed进阶 47821.1 多行命令 47821.1.1 next命令 479 21.1.2 多行删除命令 482 21.1.3 多行打印命令 482 21.2 保留空间 48321.3 排除命令 48521.4 改变执行流程 48721.4.1 分支 487 21.4.2 测试 489 21.5 模式替换 49021.5.1 &符号 491 21.5.2 替换单独的单词 491 21.6 在脚本中使用sed 49221.6.1 使用包装器 492 21.6.2 重定向sed的输出 49321.7 创建sed实用工具 49421.7.1 加倍行间距 494 21.7.2 对可能含有空行的文件加倍行间距 495 21.7.3 给文件中的行编号 495 21.7.4 打印末尾行 496 21.7.5 删除行 498 21.7.6 删除HTML标签 500 21.8 实战演练 50221.9 小结 506第 22 章 gawk进阶 50822.1 使用变量 50822.1.1 内建变量 508 22.1.2 自定义变量 514 22.2 处理数组 51522.2.1 定义数组变量 515 22.2.2 遍历数组变量 516 22.2.3 删除数组变量 517 22.3 使用模式 51722.3.1 正则表达式 517 22.3.2 匹配操作符 518 22.3.3 数学表达式 519 22.4 结构化命令 51922.4.1 if语句 519 22.4.2 while语句 521 22.4.3 do-while语句 522 22.4.4 for语句 523 22.5 格式化打印 52322.6 内建函数 52622.6.1 数学函数 526 22.6.2 字符串函数 527 22.6.3 时间函数 529 22.7 自定义函数 52922.7.1 定义函数 529 22.7.2 使用自定义函数 530 22.7.3 创建函数库 530 22.8 实战演练 53122.9 小结 532第 23 章 使用其他shell 534 23.1 什么是dash shell 53423.2 dash shell的特性 53523.2.1 dash命令行选项 535 23.2.2 dash环境变量 536 23.2.3 dash内建命令 538 23.3 dash脚本编程 53923.3.1 创建dash脚本 539 23.3.2 不能使用的特性 539 23.4 zsh shell 54123.5 zsh shell的组成 54223.5.1 shell选项 542 23.5.2 内建命令 543 23.6 zsh脚本编程 54623.6.1 数学运算 547 23.6.2 结构化命令 548 23.6.3 函数 549 23.7 实战演练 54923.8 小结 550第四部分 创建和管理实用的脚本 第 24 章 编写简单的脚本实用工具 55224.1 备份 55224.1.1 日常备份 552 24.1.2 创建按小时归档的脚本 559 24.2 删除账户 56224.2.1 功能需求 562 24.2.2 创建脚本 570 24.2.3 运行脚本 575 24.3 系统监控 57724.3.1 获得默认的shell审计功能 577 24.3.2 权限审计功能 58124.3.3 创建脚本 582 24.3.4 运行脚本 585 24.4 小结 586第 25 章 井井有条 588 25.1 理解版本控制 58825.1.1 工作目录 589 25.1.2 暂存区 590 25.1.3 本地仓库 590 25.1.4 远程仓库 590 25.1.5 分支 590 25.1.6 克隆 591 25.1.7 使用Git作为VCS 591 25.2 设置Git环境 59125.3 使用Git提交文件 59525.4 小结 601附录 A bash命令快速指南 602 附录 B sed和gawk快速指南 612
|
|