模块 2.2:终端与Linux直觉

模块 2.2:终端与Linux直觉

Table of Contents

终端本质上只是另一种和电脑交互的方式。


终端到底是什么

在上一节里,我们主要是在图形界面里和电脑打交道:

  • 用文件夹看文件
  • 用编辑器打开项目
  • 用鼠标点击、拖动、双击

这些在日常使用中非常常用。

但电脑并不只能通过图形界面操作。

还有另一种方式是使用终端命令来操作。

在 macOS 中使用终端

“终端”会默认安装在我们的 Mac 上,可以在应用程序启动台中找到它。

双击即可进入终端,它打开之后的界面非常简单,只有一个空白窗口,等待着用户输入命令。

这个输入命令的窗口,通常就叫:

  • 终端
  • 命令行
  • CLI
  • Terminal

这几个词在入门阶段你可以先大致当成同一类东西。

它们的核心特点就是:

你不再靠鼠标点来点去,而是直接告诉电脑“你现在要做什么”。

比如:

  • 进入某个文件夹
  • 看当前文件夹里有哪些文件
  • 创建一个新文件
  • 运行一个程序
  • 连接一台远程服务器(也就是另外一台电脑)

后面这些动作,我们都会越来越频繁地通过终端完成。而且我相信你会爱上终端操作的掌控感。

当然我也知道,很多人第一次看到终端,第一反应通常不是“这东西很强”,而是:

  • 这界面怎么密密麻麻只有一堆英文
  • 敲命令看不懂,眼都要花了
  • 我是不是一不小心就会把电脑弄坏
  • 我明明会用电脑,为什么到了这里突然像不会了

实际上,终端的操作逻辑非常简单,你唯一需要克服的只是心理恐惧感,直面它,上手操作它,30 分钟就可以上手。


为什么学软件开发要用终端

很多开发动作,本来就更适合在终端里完成。

比如做下面这件事:

在用户文件夹下创建 Projects 文件夹,再在 Projects 文件夹下创建一个 zero2tech 文件夹,再在 zero2tech 文件夹下创建 index.html 文件

这样的操作,在终端可以用一行命令来完成:

mkdir -p ~/Projects/zero2tech && touch ~/Projects/zero2tech/index.html

这些动作全靠图形界面当然也可以完成,但就是:

  • 更慢
  • 更绕
  • 更难描述
  • 更难让别人远程帮你排查问题

更重要的是,当你操作的是一个远程服务器(设想你通过网络连接在控制另一台电脑)的时候,通过命令来操作,其效率远远高于远程桌面。

尤其在 AI 时代,这一点会更明显。

比如当你把终端里的命令、报错等贴给大语言模型时,它更容易理解你现在到底在做什么,以及你当前的环境和处境。

所以终端不是一种“高手专属工具”。

而是:

后面整条开发路径里,最基础的一种工作方式。


终端和文件、路径是什么关系

文件、文件夹、路径,这些上一节你已经接触过的那些概念,在终端操作的语境下,可能会换一种表达方式。

比如:

  • 文件夹,在终端里通常叫目录
  • 路径,还是路径
  • 打开一个文件夹,常常会变成“进入某个目录”
  • 查看文件夹下面的文件,常常会变成“列出当前目录里的文件”

换句话说:

文件、路径的概念仍然没有变,但操作方式不一样,而且有些说法上的差异。


先建立一个最重要的感觉

刚开始用终端时,你最需要先建立一个感觉:

你现在正处在电脑里的哪个位置。

因为终端里的很多命令,都会默认对“你当前所在的位置”生效。

比如:

  • 你当前在哪个目录
  • 你接下来创建的文件会出现在哪
  • 你运行的命令会对哪个目录或者目录下的文件起作用

所以后面只要一迷路,就先问自己一句:

我现在在哪个路径下?

这句话和上一节的“我现在操作的是哪个位置”其实是同一件事。

只是到了终端里,它会变得更重要。


认识几个马上会用到的命令

先认识下面几个马上会用到的命令:

  • pwd:查看当前路径
  • ls:查看当前目录里有什么
  • cd:进入某个目录
  • mkdir:创建目录
  • touch:创建文件
  • cat:查看文本文件内容
  • rm:删除文件
  • rmdir:删除空目录
  • clear:清空终端画面

还有三个路径符号,这一节也会马上遇到:

  • ~:家目录
  • /:根目录
  • ..:上一级目录

比如:

cd ~

表示回到你的家目录。

cd /

表示去根目录。

cd ..

表示回到上一层。


现在亲手做一遍

下面这组操作,建议你真的在终端里敲一遍。

任务很简单:

在家目录里创建一个练习目录,进去以后新建文件,编辑文件,查看文件,最后再把文件和目录删掉。

这一套做完,终端最核心的一条闭环你就走过一遍了。


第一步,找到自己现在在哪

先输入:

pwd

你会看到终端打印出一条路径。

这条路径就是你当前所在的位置。

接着输入(下面两行命令请逐行输入感受变化):

cd ~
pwd

第一行的效果是先回到家目录,第二行的效果是把它的完整路径打印出来。

如果你用的是 macOS,大概率会看到类似:

/Users/你的用户名

如果你用的是 Linux,常见会像:

/home/你的用户名

这里先记住:~ 在终端里经常用来表示家目录。

请注意这个符号是英文打字法下的 ~,而不是中文打字法下的 ~ 并不是同一个符号。


第二步,看看当前目录里有什么

继续输入:

ls

你会看到当前目录里的文件和文件夹列表。

这一步的感觉很重要:

pwd 是看我在哪,ls 是看这里有什么。

如果你想顺手看一下根目录,也可以输入:

cd /
ls

你会看到系统最外层的一批目录。

看完以后,再回到家目录:

cd ~

第三步,创建目录并进入目录

现在在家目录里创建一个练习目录:

mkdir terminal-practice
ls

这时候你应该能在列表里看到 terminal-practice

然后进入它:

一个小 tips:敲下面的第一行命令时,尝试在输入 cd ter 之后按一下 Tab 键,终端会尝试自动补全后面的部分。
Tab 键也就是 键,在 Mac 自带键盘上一般位于 Q 键左侧。

cd terminal-practice
pwd

如果这一步成功,pwd 打印出来的路径最后一段通常会是:

terminal-practice

这时候你也可以顺手试一下:

cd ..
pwd
cd terminal-practice

这三行的意思是:

  • 先回到上一层
  • 看看自己是不是回到了家目录
  • 再重新进入练习目录

第四步,创建文件并查看效果

现在在 terminal-practice 里创建一个文件:

touch hello.txt
ls

如果这一步成功,你会在 ls 的结果里看到 hello.txt

接着输入:

cat hello.txt

此时大概率什么都不会显示。

这不是报错,而是因为这个文件刚创建出来,里面还是空的。

这一步也很重要,因为你已经感受到两件事:

  • touch 负责创建文件
  • cat 负责查看文本文件内容

第五步,用 Vim 往文件里写一点内容

现在我们来完成这一节最经典的一步:

vim hello.txt

输入以后,你会进入 Vim

先别慌,按下面这组动作来:

  1. 按键盘上的 i
  2. 输入一句话,比如 hello terminal
  3. Esc
  4. 输入 :wq
  5. 按回车

如果一切顺利,你就会退出 Vim,回到终端。

然后马上输入:

cat hello.txt

如果你看到了刚才写进去的内容,说明你已经完成了:

  • 打开一个文件
  • 进入编辑状态
  • 写入内容
  • 保存退出
  • 回到终端查看结果

这一步很关键,因为这是你第一次在终端环境里真正改动一个文件。


再练一次不保存退出

刚才你练的是保存退出。

现在再练一次“不保存直接退出”,这样后面被困在 Vim 里时你心里会更稳。

输入:

vim hello.txt

然后按下面这组动作来:

  1. i
  2. 随便多输入几个字
  3. Esc
  4. 输入 :q!
  5. 按回车

回到终端以后,再输入:

cat hello.txt

如果你看到的内容还是上一次保存下来的那句,而不是刚才乱加的内容,说明这次“不保存退出”也成功了。

到这里,Vim 最核心的生存动作你已经做过一遍了:

  • i
  • Esc
  • :wq
  • :q!

第六步,删除文件和目录

现在把刚才创建的内容删掉,完成这条练习链路的最后一段。

先删除文件:

rm hello.txt
ls

如果删除成功,ls 的结果里就看不到 hello.txt 了。

然后回到上一级目录,再删除练习目录:

cd ..
rmdir terminal-practice
ls

如果删除成功,列表里也看不到 terminal-practice 了。

到这里,这一套闭环就完整了:

  • 创建目录
  • 进入目录
  • 创建文件
  • 编辑文件
  • 查看文件
  • 删除文件
  • 删除目录

关于删除命令,要先有一点敬畏

rm 很常用,但也确实需要更小心一点。

因为它不像很多图形界面那样,删除前还专门弹一个确认框。

所以刚开始用删除命令时,习惯上先做两件事:

  • 先用 pwd 看清自己在哪
  • 先用 ls 看清当前目录里有什么

确认无误,再删。

这不是因为终端可怕,而是因为终端很直接。


什么叫 Linux 直觉

这一节标题里有一个词,叫:

Linux 直觉。

它指的不是“学完这节你就会 Linux 了”。

它更接近下面这种感觉:

  • 电脑里有一层一层的目录
  • 你做的动作总是在某个路径下发生
  • 很多开发工作,本质上是在处理文本文件
  • 服务器通常没有漂亮桌面,很多时候只有终端

后面的服务器课程里,你会越来越频繁地感受到这一点。

所以这一节其实是在提前适应后面的工作环境。


Windows 用户怎么办

如果你正在使用 Windows,这一节依然可以学。

只是你需要注意:

  • Windows 与 macOS 的路径写法会不一样
  • Windows 上的一些命令和 macOS、Linux 不完全一致

如果你确实想要一个更接近课程主线的终端环境,可以考虑下面两个方案:

  • Git Bash
  • WSL

这一节先不展开这些工具的细节,先把“终端里的路径感和操作感”建立起来更重要。


这一节最容易迷路的地方是什么

初学者在这一节最常见的迷路方式,通常有下面几种。

1. 不知道自己当前在哪

命令敲了很多,但不知道当前路径是什么。

这时候先输入 pwd

2. 目录切错了

很多时候不是命令失效,而是你站错了位置。

这也是为什么 cd..~ 这么重要。

3. 文件明明创建了,却找不到

通常不是文件消失了,而是它被创建在了你没注意到的位置。

先看路径,再看目录列表。

4. 进入 Vim 以后不会出来

这种事太常见了。

所以一定要跟随课程亲手做一遍保存退出和不保存退出。


这一节最应该建立的工作习惯

从这一节开始,尽量建立几个很简单但很重要的习惯。

1. 一进终端先确认路径

先看自己在哪,再做下一步。

2. 每做一步,都观察结果

比如敲完命令以后,立刻用 pwdlscat 看变化。

这样路径感和命令感会长得很快。

3. 删除前多看一眼

尤其是 rm 这种命令,先确认路径,再确认目标。

4. 多做几次完整闭环

创建、进入、编辑、查看、删除。

这样的闭环重复几次,终端就不会再像黑箱。


这节课结束时,你至少应该做到什么

学完这一节,你至少应该做到下面几件事:

  • 知道终端是另一种操作电脑的方式
  • 知道终端和文件、路径之间的关系
  • 知道 ~/.. 这几个路径符号分别在表达什么
  • 能用 pwdlscdmkdirtouchcatrmrmdir 完成一条最基本的操作链路
  • 能在 Vim 里完成一次保存退出和一次不保存退出
  • 不再把命令行视为完全陌生的黑箱
  • 开始建立对 Linux 环境的最低直觉

如果这些你已经具备了,那我们即将进入下一章,了解互联网的本质。


← 上一节:模块 2.1 认识你的电脑 | 下一节:模块 2.3 互联网是怎么工作的 →