Skip to content

Commit

Permalink
2024-05-16 15:31:02
Browse files Browse the repository at this point in the history
  • Loading branch information
wizardforcel committed May 16, 2024
1 parent 137ae4c commit 9263c99
Show file tree
Hide file tree
Showing 18 changed files with 216 additions and 159 deletions.
16 changes: 15 additions & 1 deletion docs/linux-net-prof/linux-net-prof_15.md
Original file line number Diff line number Diff line change
Expand Up @@ -185,7 +185,21 @@ $AllowedSender UDP, 127.0.0.1, 192.168.0.0/16, *.coherentsecurity.com

接下来,我们将向下滚动到同一文件的“全局指令”部分。就在那一行之前,我们将添加一行作为“模板”,以命名传入的文件并标识它们的位置。我们可以使用几个以“%”分隔的变量,其中最常见的如下:

![在我们的配置中,我们将使用主机 IP 作为文件名,然后按日期拆分日志:```$template remote-incoming-logs, "/var/log/%$year%-%$month%-%$day%/%FROMHOST-IP%.log"*.* ?remote-incoming-logs```使用以下命令检查文件语法:```$ rsyslogd -N 1rsyslogd: version 8.2001.0, config validation run (level 1), master config /etc/rsyslog.confrsyslogd: End of config validation run. Bye.```可以用于模板化 syslog 文件的其他变量名称包括以下内容:![](img/B16336_12_Table_04.jpg)
![](img/B16336_12_Table_03.jpg)

在我们的配置中,我们将使用主机 IP 作为文件名,然后按日期拆分日志:

```
$template remote-incoming-logs, "/var/log/%$year%-%$month%-%$day%/%FROMHOST-IP%.log"*.* ?remote-incoming-logs
```
使用以下命令检查文件语法:

```
$ rsyslogd -N 1
rsyslogd: version 8.2001.0, config validation run (level 1), master config /etc/rsyslog.confrsyslogd: End of config validation run. Bye.
```

可以用于模板化 syslog 文件的其他变量名称包括以下内容:![](img/B16336_12_Table_04.jpg)

现在,保存文件并重新启动`rsyslog`服务:

Expand Down
20 changes: 10 additions & 10 deletions docs/linux-sh-scp-bc/SUMMARY.md
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
+ [前言](linux-sh-scp-bc_00.md)
+ [第一章开始使用 Shell 脚本](linux-sh-scp-bc_01.md)
+ [第二章使用变量](linux-sh-scp-bc_02.md)
+ [第三章使用循环和 sleep 命令](linux-sh-scp-bc_03.md)
+ [第四章创建和调用子程序](linux-sh-scp-bc_04.md)
+ [第五章创建交互式脚本](linux-sh-scp-bc_05.md)
+ [第六章使用脚本自动化任务](linux-sh-scp-bc_06.md)
+ [第七章-文件操作](linux-sh-scp-bc_07.md)
+ [第八章使用 wget 和 curl](linux-sh-scp-bc_08.md)
+ [第九章调试脚本](linux-sh-scp-bc_09.md)
+ [第十章脚本最佳实践](linux-sh-scp-bc_10.md)
+ [第一章开始使用 Shell 脚本](linux-sh-scp-bc_01.md)
+ [第二章使用变量](linux-sh-scp-bc_02.md)
+ [第三章使用循环和 sleep 命令](linux-sh-scp-bc_03.md)
+ [第四章创建和调用子程序](linux-sh-scp-bc_04.md)
+ [第五章创建交互式脚本](linux-sh-scp-bc_05.md)
+ [第六章使用脚本自动化任务](linux-sh-scp-bc_06.md)
+ [第七章文件操作](linux-sh-scp-bc_07.md)
+ [第八章使用 wget 和 curl](linux-sh-scp-bc_08.md)
+ [第九章调试脚本](linux-sh-scp-bc_09.md)
+ [第十章脚本最佳实践](linux-sh-scp-bc_10.md)
18 changes: 9 additions & 9 deletions docs/linux-sh-scp-cb/SUMMARY.md
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
+ [前言](linux-sh-scp-cb_00.md)
+ [第一章外壳某事](linux-sh-scp-cb_01.md)
+ [第二章拥有一个好的命令](linux-sh-scp-cb_02.md)
+ [第三章文件输入,文件输出](linux-sh-scp-cb_03.md)
+ [第四章发短信和开车](linux-sh-scp-cb_04.md)
+ [第五章纠缠的网络?一点也不!](linux-sh-scp-cb_05.md)
+ [第六章备份计划](linux-sh-scp-cb_06.md)
+ [第七章老男孩网络](linux-sh-scp-cb_07.md)
+ [第八章戴上监视器的帽子](linux-sh-scp-cb_08.md)
+ [第九章管理调用](linux-sh-scp-cb_09.md)
+ [第一章外壳某事](linux-sh-scp-cb_01.md)
+ [第二章拥有一个好的命令](linux-sh-scp-cb_02.md)
+ [第三章文件输入,文件输出](linux-sh-scp-cb_03.md)
+ [第四章发短信和开车](linux-sh-scp-cb_04.md)
+ [第五章纠缠的网络?一点也不!](linux-sh-scp-cb_05.md)
+ [第六章备份计划](linux-sh-scp-cb_06.md)
+ [第七章老男孩网络](linux-sh-scp-cb_07.md)
+ [第八章戴上监视器的帽子](linux-sh-scp-cb_08.md)
+ [第九章管理调用](linux-sh-scp-cb_09.md)
26 changes: 13 additions & 13 deletions docs/lrn-emb-linux-yocto-pj/SUMMARY.md
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
+ [前言](lrn-emb-linux-yocto-pj_00.md)
+ [第一章介绍](lrn-emb-linux-yocto-pj_01.md)
+ [第二章交叉编译](lrn-emb-linux-yocto-pj_02.md)
+ [第三章引导加载程序](lrn-emb-linux-yocto-pj_03.md)
+ [第四章Linux 内核](lrn-emb-linux-yocto-pj_04.md)
+ [第五章Linux 根文件系统](lrn-emb-linux-yocto-pj_05.md)
+ [第六章Yocto 项目的组件](lrn-emb-linux-yocto-pj_06.md)
+ [第七章ADT Eclipse 插件](lrn-emb-linux-yocto-pj_07.md)
+ [第八章Hob,Toaster 和 Autobuilder](lrn-emb-linux-yocto-pj_08.md)
+ [第九章 Wic 和其他工具](lrn-emb-linux-yocto-pj_09.md)
+ [第十章实时](lrn-emb-linux-yocto-pj_10.md)
+ [第十一章 安全](lrn-emb-linux-yocto-pj_11.md)
+ [第十二章虚拟化](lrn-emb-linux-yocto-pj_12.md)
+ [第十三章CGL 和 LSB](lrn-emb-linux-yocto-pj_13.md)
+ [第一章介绍](lrn-emb-linux-yocto-pj_01.md)
+ [第二章交叉编译](lrn-emb-linux-yocto-pj_02.md)
+ [第三章引导加载程序](lrn-emb-linux-yocto-pj_03.md)
+ [第四章Linux 内核](lrn-emb-linux-yocto-pj_04.md)
+ [第五章Linux 根文件系统](lrn-emb-linux-yocto-pj_05.md)
+ [第六章Yocto 项目的组件](lrn-emb-linux-yocto-pj_06.md)
+ [第七章ADT Eclipse 插件](lrn-emb-linux-yocto-pj_07.md)
+ [第八章Hob,Toaster 和 Autobuilder](lrn-emb-linux-yocto-pj_08.md)
+ [第九章Wic 和其他工具](lrn-emb-linux-yocto-pj_09.md)
+ [第十章实时](lrn-emb-linux-yocto-pj_10.md)
+ [第十一章安全](lrn-emb-linux-yocto-pj_11.md)
+ [第十二章虚拟化](lrn-emb-linux-yocto-pj_12.md)
+ [第十三章CGL 和 LSB](lrn-emb-linux-yocto-pj_13.md)
18 changes: 9 additions & 9 deletions docs/lrn-linux-bin-anls/SUMMARY.md
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
+ [前言](lrn-linux-bin-anls_00.md)
+ [第一章Linux 环境及其工具](lrn-linux-bin-anls_01.md)
+ [第二章ELF 二进制格式](lrn-linux-bin-anls_02.md)
+ [第三章 Linux 进程跟踪](lrn-linux-bin-anls_03.md)
+ [第四章 ELF 病毒技术- Linux/Unix 病毒](lrn-linux-bin-anls_04.md)
+ [第五章Linux 二进制保护](lrn-linux-bin-anls_05.md)
+ [第六章Linux 中的 ELF 二进制取证](lrn-linux-bin-anls_06.md)
+ [第七章进程内存取证](lrn-linux-bin-anls_07.md)
+ [第八章ECFS – 扩展核心文件快照技术](lrn-linux-bin-anls_08.md)
+ [第九章Linux /proc/kcore 分析](lrn-linux-bin-anls_09.md)
+ [第一章Linux 环境及其工具](lrn-linux-bin-anls_01.md)
+ [第二章ELF 二进制格式](lrn-linux-bin-anls_02.md)
+ [第三章Linux 进程跟踪](lrn-linux-bin-anls_03.md)
+ [第四章ELF 病毒技术- Linux/Unix 病毒](lrn-linux-bin-anls_04.md)
+ [第五章Linux 二进制保护](lrn-linux-bin-anls_05.md)
+ [第六章Linux 中的 ELF 二进制取证](lrn-linux-bin-anls_06.md)
+ [第七章进程内存取证](lrn-linux-bin-anls_07.md)
+ [第八章ECFS – 扩展核心文件快照技术](lrn-linux-bin-anls_08.md)
+ [第九章Linux /proc/kcore 分析](lrn-linux-bin-anls_09.md)
12 changes: 6 additions & 6 deletions docs/mgt-linux-ms-az/SUMMARY.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
+ [前言](mgt-linux-ms-az_0.md)
+ [第一章:1. Linux:云中的历史和未来](mgt-linux-ms-az_1.md)
+ [第二章:2. 理解 Linux 发行版](mgt-linux-ms-az_2.md)
+ [第三章:3. 评估和迁移规划](mgt-linux-ms-az_3.md)
+ [第四章:4. 迁移到 Azure](mgt-linux-ms-az_4.md)
+ [第五章:5\. 在 Azure 上操作 Linux](mgt-linux-ms-az_5.md)
+ [第六章:6.故障排除和问题解决](mgt-linux-ms-az_6.md)
+ [第一章:Linux:云中的历史和未来](mgt-linux-ms-az_1.md)
+ [第二章:理解 Linux 发行版](mgt-linux-ms-az_2.md)
+ [第三章:评估和迁移规划](mgt-linux-ms-az_3.md)
+ [第四章:迁移到 Azure](mgt-linux-ms-az_4.md)
+ [第五章:在 Azure 上操作 Linux](mgt-linux-ms-az_5.md)
+ [第六章:故障排除和问题解决](mgt-linux-ms-az_6.md)
28 changes: 14 additions & 14 deletions docs/ms-emb-linux-prog/SUMMARY.md
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
+ [前言](ms-emb-linux-prog_00.md)
+ [第一章起步](ms-emb-linux-prog_01.md)
+ [第二章了解工具链](ms-emb-linux-prog_02.md)
+ [第三章关于引导加载程序的一切](ms-emb-linux-prog_03.md)
+ [第四章移植和配置内核](ms-emb-linux-prog_04.md)
+ [第五章构建根文件系统](ms-emb-linux-prog_05.md)
+ [第六章 选择构建系统](ms-emb-linux-prog_06.md)
+ [第七章创建存储策略](ms-emb-linux-prog_07.md)
+ [第八章介绍设备驱动程序](ms-emb-linux-prog_08.md)
+ [第九章启动- init 程序](ms-emb-linux-prog_09.md)
+ [第十章了解进程和线程](ms-emb-linux-prog_10.md)
+ [第十一章管理内存](ms-emb-linux-prog_11.md)
+ [第十二章使用 GDB 进行调试](ms-emb-linux-prog_12.md)
+ [第十三章性能分析和跟踪](ms-emb-linux-prog_13.md)
+ [第十四章实时编程](ms-emb-linux-prog_14.md)
+ [第一章起步](ms-emb-linux-prog_01.md)
+ [第二章了解工具链](ms-emb-linux-prog_02.md)
+ [第三章关于引导加载程序的一切](ms-emb-linux-prog_03.md)
+ [第四章移植和配置内核](ms-emb-linux-prog_04.md)
+ [第五章构建根文件系统](ms-emb-linux-prog_05.md)
+ [第六章选择构建系统](ms-emb-linux-prog_06.md)
+ [第七章创建存储策略](ms-emb-linux-prog_07.md)
+ [第八章介绍设备驱动程序](ms-emb-linux-prog_08.md)
+ [第九章启动- init 程序](ms-emb-linux-prog_09.md)
+ [第十章了解进程和线程](ms-emb-linux-prog_10.md)
+ [第十一章管理内存](ms-emb-linux-prog_11.md)
+ [第十二章使用 GDB 进行调试](ms-emb-linux-prog_12.md)
+ [第十三章性能分析和跟踪](ms-emb-linux-prog_13.md)
+ [第十四章实时编程](ms-emb-linux-prog_14.md)
28 changes: 14 additions & 14 deletions docs/ms-kvm-vrt/SUMMARY.md
Original file line number Diff line number Diff line change
@@ -1,21 +1,21 @@
+ [前言](ms-kvm-vrt_00.md)
+ [第一部分:KVM 虚拟化基础](ms-kvm-vrt_01.md)
+ [第一章:*第一章*理解 Linux 虚拟化](ms-kvm-vrt_02.md)
+ [第一章:理解 Linux 虚拟化](ms-kvm-vrt_02.md)
+ [第二章:KVM 作为虚拟化解决方案](ms-kvm-vrt_03.md)
+ [第二部分:用于虚拟机管理的 libvirt 和 ovirt](ms-kvm-vrt_04.md)
+ [第三章:*第三章*安装 KVM Hypervisor、libvirt 和 oVirt](ms-kvm-vrt_05.md)
+ [第四章:*第四章*Libvirt 网络](ms-kvm-vrt_06.md)
+ [第五章:*第五章*Libvirt 存储](ms-kvm-vrt_07.md)
+ [第六章:*第六章*虚拟显示设备和协议](ms-kvm-vrt_08.md)
+ [第七章:*第七章*虚拟机:安装、配置和生命周期管理](ms-kvm-vrt_09.md)
+ [第八章:*第八章*创建和修改 VM 磁盘、模板和快照](ms-kvm-vrt_10.md)
+ [第三章:安装 KVM Hypervisor、libvirt 和 oVirt](ms-kvm-vrt_05.md)
+ [第四章:Libvirt 网络](ms-kvm-vrt_06.md)
+ [第五章:Libvirt 存储](ms-kvm-vrt_07.md)
+ [第六章:虚拟显示设备和协议](ms-kvm-vrt_08.md)
+ [第七章:虚拟机:安装、配置和生命周期管理](ms-kvm-vrt_09.md)
+ [第八章:创建和修改 VM 磁盘、模板和快照](ms-kvm-vrt_10.md)
+ [第三部分:KVM 虚拟机的自动化、定制和编排](ms-kvm-vrt_11.md)
+ [第九章:*第九章*使用云初始化自定义虚拟机](ms-kvm-vrt_12.md)
+ [第十章:*第十章*自动化 Windows 客户端部署和自定义](ms-kvm-vrt_13.md)
+ [第十一章:*第十一章*Ansible 和编排自动化](ms-kvm-vrt_14.md)
+ [第九章:使用云初始化自定义虚拟机](ms-kvm-vrt_12.md)
+ [第十章:自动化 Windows 客户端部署和自定义](ms-kvm-vrt_13.md)
+ [第十一章:Ansible 和编排自动化](ms-kvm-vrt_14.md)
+ [第四部分:可扩展性、监控、性能调优和故障排除](ms-kvm-vrt_15.md)
+ [第十二章:*第十二章*使用 OpenStack 扩展 KVM](ms-kvm-vrt_16.md)
+ [第十三章:*第十三章*使用 AWS 扩展 KVM](ms-kvm-vrt_17.md)
+ [第十二章:使用 OpenStack 扩展 KVM](ms-kvm-vrt_16.md)
+ [第十三章:使用 AWS 扩展 KVM](ms-kvm-vrt_17.md)
+ [第十四章:监视 KVM 虚拟化平台](ms-kvm-vrt_18.md)
+ [第十五章:*第十五章*KVM VM 性能调优和优化](ms-kvm-vrt_19.md)
+ [第十六章:《第十六章》:KVM 平台的故障排除指南](ms-kvm-vrt_20.md)
+ [第十五章:KVM VM 性能调优和优化](ms-kvm-vrt_19.md)
+ [第十六章:KVM 平台的故障排除指南](ms-kvm-vrt_20.md)
24 changes: 12 additions & 12 deletions docs/ms-linux-dvc-dvr-dev/SUMMARY.md
Original file line number Diff line number Diff line change
@@ -1,18 +1,18 @@
+ [前言](ms-linux-dvc-dvr-dev_00.md)
+ [第一部分:嵌入式设备驱动程序开发的内核核心框架](ms-linux-dvc-dvr-dev_01.md)
+ [第一章:*第一章*嵌入式开发人员的 Linux 内核概念](ms-linux-dvc-dvr-dev_02.md)
+ [第二章:*第二章*利用 Regmap API 并简化代码](ms-linux-dvc-dvr-dev_03.md)
+ [第三章:*第三章*深入研究 MFD 子系统和 Syscon API](ms-linux-dvc-dvr-dev_04.md)
+ [第四章:*第四章*突袭通用时钟框架](ms-linux-dvc-dvr-dev_05.md)
+ [第一章:嵌入式开发人员的 Linux 内核概念](ms-linux-dvc-dvr-dev_02.md)
+ [第二章:利用 Regmap API 并简化代码](ms-linux-dvc-dvr-dev_03.md)
+ [第三章:深入研究 MFD 子系统和 Syscon API](ms-linux-dvc-dvr-dev_04.md)
+ [第四章:突袭通用时钟框架](ms-linux-dvc-dvr-dev_05.md)
+ [第二部分:嵌入式 Linux 系统中的多媒体和节能](ms-linux-dvc-dvr-dev_06.md)
+ [第五章:*第五章*ALSA SoC 框架 – 利用编解码器和平台类驱动程序](ms-linux-dvc-dvr-dev_07.md)
+ [第五章:ALSA SoC 框架 – 利用编解码器和平台类驱动程序](ms-linux-dvc-dvr-dev_07.md)
+ [第六章:技术要求](ms-linux-dvc-dvr-dev_08.md)
+ [第七章:*第七章*解密 V4L2 和视频捕获设备驱动程序](ms-linux-dvc-dvr-dev_09.md)
+ [第七章:解密 V4L2 和视频捕获设备驱动程序](ms-linux-dvc-dvr-dev_09.md)
+ [第八章:与 V4L2 异步和媒体控制器框架集成](ms-linux-dvc-dvr-dev_10.md)
+ [第九章:*第九章*从用户空间利用 V4L2 API](ms-linux-dvc-dvr-dev_11.md)
+ [第十章:*第十章*Linux 内核功耗管理](ms-linux-dvc-dvr-dev_12.md)
+ [第九章:从用户空间利用 V4L2 API](ms-linux-dvc-dvr-dev_11.md)
+ [第十章:Linux 内核功耗管理](ms-linux-dvc-dvr-dev_12.md)
+ [第三部分:与其他 Linux 内核子系统保持最新](ms-linux-dvc-dvr-dev_13.md)
+ [第十一章:*第十一章*编写 PCI 设备驱动程序](ms-linux-dvc-dvr-dev_14.md)
+ [第十二章:*第十二章*利用 NVMEM 框架](ms-linux-dvc-dvr-dev_15.md)
+ [第十三章:*第十三章*看门狗设备驱动程序](ms-linux-dvc-dvr-dev_16.md)
+ [第十四章:*第十四章*Linux 内核调试技巧和最佳实践](ms-linux-dvc-dvr-dev_17.md)
+ [第十一章:编写 PCI 设备驱动程序](ms-linux-dvc-dvr-dev_14.md)
+ [第十二章:利用 NVMEM 框架](ms-linux-dvc-dvr-dev_15.md)
+ [第十三章:看门狗设备驱动程序](ms-linux-dvc-dvr-dev_16.md)
+ [第十四章:Linux 内核调试技巧和最佳实践](ms-linux-dvc-dvr-dev_17.md)
2 changes: 1 addition & 1 deletion docs/ms-linux-krn-dev/ms-linux-krn-dev_01.md
Original file line number Diff line number Diff line change
Expand Up @@ -399,7 +399,7 @@ struct thread_info for x86 architecture (kernel 3.10):
PER_CPU variable:
```

**```
```
#ifndef _ASM_X86_CURRENT_H
#define _ASM_X86_CURRENT_H
Expand Down
20 changes: 10 additions & 10 deletions docs/ms-linux-net-adm/SUMMARY.md
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
+ [前言](ms-linux-net-adm_00.md)
+ [第一章设置您的环境](ms-linux-net-adm_01.md)
+ [第二章重新审视 Linux 网络基础知识](ms-linux-net-adm_02.md)
+ [第三章通过 SSH 在节点之间通信](ms-linux-net-adm_03.md)
+ [第四章设置文件服务器](ms-linux-net-adm_04.md)
+ [第五章监控系统资源](ms-linux-net-adm_05.md)
+ [第六章配置网络服务](ms-linux-net-adm_06.md)
+ [第七章通过 Apache 托管 HTTP 内容](ms-linux-net-adm_07.md)
+ [第八章理解高级网络概念](ms-linux-net-adm_08.md)
+ [第九章保护您的网络](ms-linux-net-adm_09.md)
+ [第十章故障排除网络问题](ms-linux-net-adm_10.md)
+ [第一章设置您的环境](ms-linux-net-adm_01.md)
+ [第二章重新审视 Linux 网络基础知识](ms-linux-net-adm_02.md)
+ [第三章通过 SSH 在节点之间通信](ms-linux-net-adm_03.md)
+ [第四章设置文件服务器](ms-linux-net-adm_04.md)
+ [第五章监控系统资源](ms-linux-net-adm_05.md)
+ [第六章配置网络服务](ms-linux-net-adm_06.md)
+ [第七章通过 Apache 托管 HTTP 内容](ms-linux-net-adm_07.md)
+ [第八章理解高级网络概念](ms-linux-net-adm_08.md)
+ [第九章保护您的网络](ms-linux-net-adm_09.md)
+ [第十章故障排除网络问题](ms-linux-net-adm_10.md)
28 changes: 14 additions & 14 deletions docs/ms-linux-sh-scp/SUMMARY.md
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
+ [前言](ms-linux-sh-scp_00.md)
+ [第一章使用 Bash 脚本的“什么”和“为什么”](ms-linux-sh-scp_01.md)
+ [第二章创建交互式脚本](ms-linux-sh-scp_02.md)
+ [第三章. 附加条件](ms-linux-sh-scp_03.md)
+ [第四章创建代码片段](ms-linux-sh-scp_04.md)
+ [第五章替代语法](ms-linux-sh-scp_05.md)
+ [第六章使用循环迭代](ms-linux-sh-scp_06.md)
+ [第七章使用函数创建构建块](ms-linux-sh-scp_07.md)
+ [第八章介绍 sed](ms-linux-sh-scp_08.md)
+ [第九章自动化 Apache 虚拟主机](ms-linux-sh-scp_09.md)
+ [第十章 awk 基础知识](ms-linux-sh-scp_10.md)
+ [第十一章使用 Awk 总结日志](ms-linux-sh-scp_11.md)
+ [第十二章使用 Awk 改进 lastlog](ms-linux-sh-scp_12.md)
+ [第十三章使用 Perl 作为 Bash 脚本的替代方案](ms-linux-sh-scp_13.md)
+ [第十四章使用 Python 作为 Bash 脚本替代品](ms-linux-sh-scp_14.md)
+ [第一章使用 Bash 脚本的“什么”和“为什么”](ms-linux-sh-scp_01.md)
+ [第二章创建交互式脚本](ms-linux-sh-scp_02.md)
+ [第三章附加条件](ms-linux-sh-scp_03.md)
+ [第四章创建代码片段](ms-linux-sh-scp_04.md)
+ [第五章替代语法](ms-linux-sh-scp_05.md)
+ [第六章使用循环迭代](ms-linux-sh-scp_06.md)
+ [第七章使用函数创建构建块](ms-linux-sh-scp_07.md)
+ [第八章介绍 sed](ms-linux-sh-scp_08.md)
+ [第九章自动化 Apache 虚拟主机](ms-linux-sh-scp_09.md)
+ [第十章awk 基础知识](ms-linux-sh-scp_10.md)
+ [第十一章使用 Awk 总结日志](ms-linux-sh-scp_11.md)
+ [第十二章使用 Awk 改进 lastlog](ms-linux-sh-scp_12.md)
+ [第十三章使用 Perl 作为 Bash 脚本的替代方案](ms-linux-sh-scp_13.md)
+ [第十四章使用 Python 作为 Bash 脚本替代品](ms-linux-sh-scp_14.md)
Loading

0 comments on commit 9263c99

Please sign in to comment.