跳转至

引言

正如这本书的书名所示,这是一本关于如何更好地使用Linux的教程,更准确地说,是如何更好地使用Linux shell的教程。虽然现在,大家的电脑上基本都使用Windows和MacOS,但是当我们真正深入计算机的世界的时候,Linux可能会变得更加常用。

不知道大家在第一次尝试Linux(尤其是没有图形界面的系统)的时候,有没有对着一个奇怪的黑色框框感到疑惑,不知所措。你可能会选择去浏览器上查一查自己的第一步该做什么,然后把网上的一些命令代码直接粘贴到那个黑框里面并按下回车。如果运气好,你的命令会正常运行,然后得到你想要的结果(也是一些看起来枯燥的文字),而更多时候,你可能会发现运行的结果是一个error或者和网上查到的结果完全不同。

Linux shell就是这样一个奇怪而又迷人的世界,在这个世界中,没有花里胡哨的图形(吗?其实不一定),只有一堆文字,很多时候你甚至不需要鼠标,只需要键盘。但是在这个世界里,你能做的事和你在普通的有图形的操作系统中能做的一样多,甚至有的时候能做得更好更快。而且这通常是我们操作Linux系统的最好的方式。

如果你想要深入计算机的世界,Linux一定是你无法绕开的部分;如果你想要深入Linux的世界,Linux shell也一定是你无法绕开的部分。那么,欢迎你打开这本书,让我们一起走进Linux shell的世界吧。

这本书是什么

正如上面写的那样,这是一本关于Linux shell的教程。

在这本书中,我会涉及的内容包括下面这些:

  1. Linux shell的基础概念
  2. 对于所有种类的Linux shell通用的核心概念
  3. 一些简单常用的命令
  4. 一些命令的常见用法
  5. 一些命令的原理
  6. bash(一种常见的Linux shell)的核心特性
  7. 怎么写bash脚本
  8. ...

在这本书中,我不会涉及的内容包括:

  1. 一些复杂的命令(例如:git,docker)的用法
  2. 常见命令的不常见用法
  3. bash以外的其他shell的细节特性
  4. 命令的具体代码实现

为什么要写这本书

实际上,在我写这本书的时候,“我应该在这本书中包含哪些内容?”这样的问题一直困扰着我。一些命令的使用细节其实阅读一下文档或者简单上网搜索一下就能得到答案,就算是我写,也只是文档的翻译而已。特别是在进入LLM的时代之后,一些本来不那么朴素的问题,询问一下AI也能得到答案了。

那么,我为什么还要写这样一本书呢?实际上,当我回想我学习使用Linux shell的过程的时候,我意识到,我真正开始领悟Linux shell的时候,是我不再只是上网搜索或者询问AI,然后直接复制粘贴命令运行的时候。我之前不管是通过查阅文档,还是搜索和询问AI,我都只是了解了一个独立的命令的一个用法。直到我积累了足够多的shell的知识,并且了解了其中的原理,我才逐渐了解它们背后的联系,并且开始理解Linux的设计哲学。从这以后,面对一些新的,稍微有些复杂的操作时,我也开始能够自己直接上手写一个命令或者一个脚本了。于是我想,能否写一本书,向那些入门Linux shell的同学,直接展示shell以及那些命令背后的联系呢?

因此,这本书诞生了。在这本书中,我在尽量尝试向大家展示操作系统、shell、命令之间的一个完整的体系,这样大家就能更加深入地理解Linux shell了。

如何使用这本书

这本书整体分为三篇。初级篇首先介绍了一些必要的基本概念,之后的内容主要是一些日常使用Linux系统的时候最常用的命令以及它们的用法,同时会介绍一些背后的原理。中级篇的内容则是一些常用且功能功能更加强大的命令以及一些shell的特性和高级用法。高级篇则主要是介绍如何写bash脚本。每一篇又分为若干章节,每个章节都是一个独立的主题,但是其中的一些章节之间也存在着递进的关系。

也就是说,这本书你可以从任何一章,甚至是任何一个小节开始看,都相对独立。但同时,章节之间也会有一些联系(callback),这种情况下我都会放上对应的链接,你可以直接点击跳转过去。

这本书的内容假设读者拥有一点C或者C++基础,因此可能并不适合完全没有计算机基础的同学阅读。在这之上,对于完全没有使用过Linux系统或者刚刚开始使用Linux系统的同学,建议从头开始阅读。对于已经有一定Linux使用经验的同学,可以根据目录快速浏览一下初级篇中不熟悉的部分,然后从中级篇开始。对于已经完全熟悉Linux使用,但是想要学习bash脚本的同学,建议直接从高级篇开始。

如何提供反馈和贡献

这本书还处于初期阶段,目前只完成了初级篇和附录A,并且内容中可能会有一些错误别字,拼写错误等。

如果你发现了错误,请你在项目库的GitHub仓库中提issue,或者给我发送邮件.

如果你认为书中的内容需要改进,或者有待探讨,可以在每一章的最下面发表评论,或者邮件联系我。