为什么要用这本书学习命令行
假设你已经下定决心开始学习命令行了,而关于命令行的免费网络资料、图书多到让人眼花缭乱,为什么要唯独选择这一本呢?先来看看你属于哪一种读者。
1. 目标读者
如果你符合以下任何一种情况,这本书正是为你而写:
- 准备从零上手Linux系统管理员的工作,学习让日常系统管理任务自动化;
- Linux系统爱好者,但还不熟悉Linux系统和命令行的常见操作;
- 主要在Windows、Android等图形界面和IDE 中编程,但渴望搭建并使用Linux系统;
- 厌倦了一眼望不到头的业务代码,不想35 岁“卷”不动的时候被扫地出门;
- 曾经想象过自己也能像电影里的黑客一样“运筹帷幄之中,决胜千里之外”。
总结一下,本书适合所有想入门命令行开发的读者,尤其是参考其他图书或者资料学习有困难的读者。本书不敢说包教包会,但只要你愿意下功夫,定能学有所成。此外,对Python 语言、数据分析和开源技术感兴趣的读者均可阅读本书。
现在,你已经确定自己属于本书的目标读者了,那么在真正开启阅读之前,先来了解一下这本书的特色吧——所谓“知己知彼,百战不殆”,更好地认识一本书,才能更高效地学习一本书。首先用简单的条目跟大家交代一下图书的核心特点,其次介绍一下全书章节的组织结构,最后聊一下大家关注的内容时效性问题。
2. 核心特点
面向初学者
这本书简单易学,绝不在一开始就堆砌专业术语,而是注重趣味性和参与感,学习的过程就像你一边敲键盘,我们一边在你身旁聊一聊那些让你疑惑的点,聊着聊着你就学会了。除了带大家手把手操作,书中还会重点讲解思路与方法,说明不同部分之间的内在联系和区别,以便大家建立知识网,知其然亦知其所以然。
强调实用性
书中每个概念、工具都尽量配合代码示例,方便各位自学。随书代码开源3,以容器形式提供完整的操作环境,大家既可以手动搭建环境,也可以先体验效果,再决定要不要深入了解。除了介绍应用的使用方法,书中还包含安装和卸载方法——装卸自如,大家可以根据个人情况灵活取舍。
注重准确性
网络资源浩如烟海,但准确性参差不齐,大家筛选的过程需要耗费大量精力。而我们经过多年的学习,自身已经掌握了大量命令行知识并阅读消化了不少资料,因此,我们在写作本书的过程中遵循了一条原则:尽量使用第一手资料,避免大家被不靠谱的转述带着走弯路。
针对多种操作系统
本书以Linux 用户为主,兼顾macOS和Windows 用户:介绍了在3种平台上搭建命令行环境的方法,示例代码在Linux Mint 20、macOS和Windows(WSL:Ubuntu 20.04 LTS)下通过测试。
3可访问图灵社区本书主页下载。
另外,还需要强调一点,这本书的写作离不开开源工具和社区,期待读者也能以开放的心态阅读本书,学成之后可以积极参与开源活动,力争为开源技术贡献一份力量。
3. 章节组织和阅读建议
你可以将本书内容看作对一个问题的回答:如何愉快、高效地使用命令行工具,使之成为日常工作的得力助手?围绕这个主题,本书正文由8章组成,可分为两部分。
- 第一部分为前5章,介绍命令行工具的基本概念和使用方法。从第1章一步步带大家搭建Linux系统开始,我们便摆开架势要从0 到1 大干一场;第2章我们来学习处于Linux系统核心位置的文件系统;第3章我们需要研究一下如何对琳琅满目的命令行应用和包进行有效管理;第4章我们来攻克命令行世界最重要的工具—— shell;第5章我们要掌握如何处理文本数据。
- 第二部分为后3章,每章各讨论一个主题,彼此之间内容相对独立,分别详细展示了如何使用命令行进行数据分析、文本编辑和进程管理。
对于没有特殊偏好、希望了解Linux系统基本概念和使用方法、未来可能尝试将Linux 作为主要工作环境的读者,可以在读完第一部分后留出一段时间多练习,待熟练使用后再进入第二部分。
对数据分析感兴趣的读者,由于未来主要使用Python(以及R、Julia)等语言,而Python 社区的大部分开发者和用户使用Linux/macOS(统称为*nix)系统,因此了解*nix 系统基础知识、熟练使用*nix 系统是用好Python 的基本功。第6章介绍如何使用多种命令行应用进行数据概览、数据筛选、数值计算、数据分组等工作,它们短小精悍,使用方便,和Python 互为补充,相得益彰。建议这部分读者按顺序阅读1~6章,掌握相关内容不论对于学习Python 还是做基于Python 的数据分析工作,都有很好的促进作用。
对Linux系统运维、数据库管理(DBA)或者后端应用(Web 服务端、中间件等)开发感兴趣的读者,可以先跳过第6章,以后有需要时再阅读。
对于轻度命令行用户(比如大多数时间在macOS、Windows 下使用图形应用,只是偶尔需要登录服务器修改一下配置文件、执行一个应用、启动一个服务等),读完第一部分后,再看看7.1 节,就足以应付日常工作了,以后可以在工作中慢慢熟悉其他部分。
最后需要特别提一下,附录A 和附录B 包含了几个专题,虽然不属于本书主题范围,但与之密切相关。比如不熟悉键盘盲打的读者,不妨看一下附录A,这样掌握命令行工具将获得事半功倍的效果;比如对开源文化感兴趣的读者,不妨读读附录B 推荐的图书,这将有助于大家深刻认识开源运动及其未来发展。
4. 内容会不会很快过时
在这个技术发展日新月异的时代,信息产生和过时的速度越来越快,大家投入时间和精力阅读某本书或者学习某项技能的同时往往会担心:如果刚学会就过时了怎么办?作为长年的技术书籍阅读者,笔者完全理解这种心情,本书采用下面的方法解决内容的时效性问题。
- 首先,在各章主题的选择上,坚持抓大放小,将基础、核心的内容讲透,不追求大而全。
- 其次,每章内容都采用从原理到实现的顺序,即从一般到特殊,从稳定到善变。
以文本编辑为例:我们首先介绍模式编辑的基本原理,只要人类还在使用以字母为单位的输入设备,模式编辑就不会过时;然后我们介绍标准Vim,即Vim 各种版本都具有的最核心的功能——不论Vim 如何变化,其核心是稳定的,虽然稳定程度相较模式编辑稍逊一筹;最后我们通过插件拓展Vim 的功能,仍然采用从原理到实现的顺序,比如使用ack.vim 插件实现全文搜索——虽然ack.vim 或许不会陪伴我们很长时间,但对全文搜索的需求是稳定存在的,即使不用Vim,我们仍然要从是否能方便地打开项目文件、是否能方便地进行全文搜索等几个维度考察其他编辑器。
借助这种原理和实现分离的结构,笔者可以方便地更新善变的那部分内容,从而保证内容的时效性。当然,我们更希望看到你的意见和建议(作者联系方式见“互动与勘误”一节),让更多人掌握命令行这一强大的生产力工具。
5. 插画版权说明
图灵《第一行代码》系列图书封面的最初创意由陈冰提出。本书内文方框排版格式中及封面上的企鹅插画的绘制直接参考了Linux 的吉祥物Tux,版权如下:
lewing@isc.tamu.edu Larry Ewing and The GIMP。