一本免费书,帮 FDE 应对没有图形界面的客户服务器
William Shotts 的《The Linux Command Line》从零讲起,覆盖管道、进程、Vim 和脚本,是和客户连线排障的基本功。

要点速览
- 作者以 Creative Commons BY-NC-ND 许可免费提供 PDF 下载。544 页的第三版纸质书由 No Starch Press 出版。
- 这本书写给对命令行一无所知的读者。配套教程包含 Permissions、Job Control、I/O Redirection 和 Expansion 等章节。
- 值得保留的四个习惯:用串联命令代替点鼠标;先预览通配符会展开成什么;申请 sudo 之前先看文件权限;SSH 断开时让进程继续运行。
设想这样一个场景:你通过 SSH 登录客户的虚拟机,排查一条数据管道为什么停了。手边没有 IDE,也没有用惯的 alias,客户那边还有人在电话会议上等着。
这次会话的头几分钟顺不顺,取决于你对 shell 有多熟。William Shotts 的《The Linux Command Line》教的正是这套基本功,PDF 可以在作者的网站 LinuxCommand.org 免费下载。
一本写给零基础读者的书
Linux Pro Magazine 的一篇书评指出,这本书不要求读者有任何基础。书评认为,它可能是这一主题下最好读的书,同时在广度和深度上都讲得足够。
出版方的说法更进一步:这是一门讲透 Linux 实际如何运作的完整课程。书中内容包括文件系统导航、管道、进程、Vim 和 shell 脚本。
边界最好一开始就弄清楚。Shotts 明确表示,配套的《Adventures with the Linux Command Line》不是系统管理手册,只是一组有趣主题的合集,比如 Midnight Commander、终端复用器、AWK、Vim 和 SQL。
对前线部署工程师(FDE)来说,看日志、挪文件、跑任务是第一位的;深入的服务器运维以后可以从别的资料里学。
合上书后值得保留的四个习惯
用串联命令代替点鼠标。 Learning the Shell 教程开篇就说,图形界面适合很多任务,但不是所有任务。到了客户现场,这一点会变得非常具体。
举个假设的例子:客户反馈磁盘满了。你先敲 df -h 找出哪个分区满了,再用 du -sh /var/log/* | sort -h | tail -5 列出最大的五个日志目录。两条命令,电话还没挂,答案就有了。
先预览 shell 会把命令变成什么。 I/O Redirection 和 Expansion 是教程十个章节中的两个,在别人的机器上,这两项都可能酿成代价高昂的失误。要把日志发给同事,command > output.txt 2>&1 会把输出和错误写进同一个文件;少了 2>&1,你发出去的文件可能恰好缺了报错的那一行。
扩展的风险更大。在客户机器上用通配符执行 rm 之前,先用同样的通配符执行 echo,看看它会展开成哪些文件。
申请 sudo 之前先看文件权限。 Permissions 也是教程的一个章节。在客户的数据目录里遇到“Permission denied”时,先用 ls -l 看清文件属于哪个用户和组,再去找客户;问对问题,更能赢得对方 IT 团队的尊重。
SSH 断开时让进程继续运行。 导入任务跑到一半、SSH 会话断开时,Job Control 能救你。最稳妥的做法是一开始就让任务脱离会话,比如 nohup ./import.sh > import.log 2>&1 &,再用 tail -f import.log 跟踪进度。
如果已经在前台启动了,按 Ctrl+Z,输入 bg,再输入 disown。对于要跑几个小时的任务,开工前先打开 tmux 是个好习惯;终端复用器也是《Adventures》里的主题之一。
应该按什么顺序读?
刚接触命令行的人,或者习惯在 macOS 和 IDE 里工作的工程师,应该从 Learning the Shell 的十个章节开始。在一台干净的虚拟机上把每条命令都亲手敲一遍,不要只看不练。
然后读这本书补足深度,《Adventures》留到最后,等基础命令已经成了条件反射再看。如果你每天都在写 bash 脚本,快速翻一遍即可,只在自己敲键盘仍会犹豫的章节停下来。
至于求职:看 FDE 招聘启事时,留意岗位是否需要在客户的基础设施上工作;如果需要,熟练使用 shell 就值得展示出来。与其在简历上写“精通 Linux”,不如描述一次具体事件:谁的机器、你敲了什么、花了多长时间。
你准备好 SSH 登录客户的机器了吗?
先试着回答下面三道题,再看答案,然后在虚拟机上实际跑一遍。
第一题:command 2>&1 > out.txt 和 command > out.txt 2>&1 有什么区别?答案:shell 从左到右解析重定向。第一种写法中,错误被指向此刻输出所指的地方,也就是屏幕,所以文件里只有输出;只有第二种写法会把两者都收进文件。
第二题:在一个包含 a.tmp、b.tmp 和 config.yaml 的目录里,echo rm *.tmp 会打印什么?答案:rm a.tmp b.tmp。如果打印出来的那一行里有你不想丢的文件,你就刚刚避免了一次事故。
第三题:一个脚本已经在前台跑了 40 分钟,网络又不稳定。怎样做才能在 SSH 会话断开时不丢掉这个任务?答案:Ctrl+Z、bg、disown。最常见的错误是条件反射地按下 Ctrl+C,40 分钟的工作就白费了。
如果三道题都能毫不犹豫地答出来,你就具备了这本书承诺的基本功。如果卡住了,就回到教程中对应的章节。
下载或购买之前
LinuxCommand.org 上的免费版本是第七版互联网版(Seventh Internet Edition),共 596 页,以 Creative Commons BY-NC-ND 许可发布。No Starch Press 的第三版纸质书共 544 页,ISBN 9781718504523,出版方称其中有近 40 页新内容。
不同格式的发布日期不同:Apple Books 上电子书的日期是 2026 年 2 月 17 日,Penguin Australia 上平装本的日期是 2026 年 3 月 3 日。哪个版本都可以,关键是先在虚拟机上把命令敲熟,再到客户的机器上去敲。
这篇文章对你有帮助吗?
感谢你的反馈!