什么是终端?
我们总在说在终端中如何操作,那么终端到底是什么呢?为什么它会有这么大的权利?
要说清终端是什么,我们先来看看操作系统的组成。简化来说,操作系统分为两个部分,一部分称作内核,另一部分成为用户交互界面。内核部分负责系统的全部逻辑操作,由海量命令组成,这一部分是系统运行的命脉,不与用户接触;交互界面则是开机之后所有我们所看到的东西,比如窗口,软件,应用程序等等。
那么我们若我们想对系统内核的某些操作逻辑做出一些修改,应该怎么办呢?终端就是连接内核与交互界面的这座桥,它允许用户在交互界面上打开一个叫做「Terminal 终端」的应用程序,在其中输入命令,系统会直接给出反馈。
因为终端这座桥,实际允许用户间接控制系统内核,也就是系统的大脑,因此它理论上具备控制一切的权利
基础知识
命令由三个部分组成,第一个部分是命令对象,在 say hi
这个命令中,「say」 是我们的命令对象,我们希望电脑说话;第二个部分是修饰命令对象的关键词,可有可无,若我希望电脑说话时慢一点,可以输入 say -r 500 hi
,这里的 「-r 500」 则是修饰说话语速的关键词;第三部分是命令内容,这里填写希望电脑说的内容是「hi」这句话。
我们先来尝试让电脑将我们所打的话复述出来,这一步的指令是 echo "想说的话"
,将这句指令复制进终端并回车后,可以看到,它会将我们输入进去的文字在下一行重新打出来。
终端运行常常离不开对文件,文件夹的操作。
当你需要使用终端对文件夹进行操作时,终端需要你告诉它,你想要修改的文件在哪里,这时我们需要了解路径的概念。系统中的每一个文件都有一个存放位置,这一存放位置就称作路径。
终端启动后,它的默认路径在当前用户文件夹的根目录上,为了确定这一点,你可以输入 pwd
命令来查看当前路径。在下图中,输入命令后,终端告诉我当前路径是 /Users/我的名字
。
路径的一般写法为 /文件夹名/文件夹名
,但路径其实分为两种。一种叫相对路径,另一种叫绝对路径,它们两有什么区别呢?
我们从当前路径说起,当前路径指的是现在终端所处的位置,若你想改变当前路径,则可以输入 cd /其他文件夹
。比如我希望系统将当前路径改为所有应用程序文件夹,则输入 cd /Applications
,在下图中可以看到,Legolas 前出现了一个 Applications,表示当前路径已经在应用程序文件夹中。
刚刚提到的路径的一般写法 「/文件夹名/文件夹名」,它指的其实就是绝对路径,你必须指定它从根目录一直到达具体的文件夹。
与其相对的是相对路径,相对路径允许你告诉终端从现在开始,接下来应该怎么走。相对路径的书写方法实在绝对路径前加一个 .
。
若你现在已经处在应用程序文件夹中,想前往其中的一个名叫 Utilities 的子文件夹应该怎么办?
下图中,当前位置的绝对路径是 /Applications/Utilities
,但由于我已经处于 /Applications
文件夹中,因此可以使用相对路径的写法 cd ./Utilities
,表示将当前路径转到 Utilities 文件夹。
说了这么多关于路径的写法,你可能已经头大了,懒得去这么写,那么有没有快速导入路径的方法呢?有,直接将待编辑文件或文件夹拖入终端中即可,它会自动把绝对路径提取出来,实际情况下常用的也是这种自动提取或手动复制的方法。
<figcaption class="ss-image-caption" style="font-style: normal; font-weight: 400; font-size: 14px; line-height: 14px; text-align: center; color: rgb(142, 135, 135); margin-top: 20px; outline: none !important;">拖入快速提取路径</figcaption>
当你想要查看当前路径下有什么文件时,可以使用 ls
命令,它会列举当前路径下的全部文件,若你希查看进阶设定,比如列举当前路径下的全部文件并展开所有子文件夹,可以在 ls
命令后加上 -R
的识别符,新指令就变成了 ls -R
,运行结果如下,可以看到我放在资源文件夹中的所有子文件都被显示出来了。
讲到这里,你也许会发现自己的终端已经满满当当的了,看着不舒服,这时可以使用 clear
指令来清屏,运行结果如下。
以上讲的所有指令,都是无害指令,这里的无害指的是不会对系统文件造成破坏,但是还有一些指令,可以瞬间删掉你的整个系统,若你知道这些指令的用法那也没问题,但若是不小心根据网上的教程用了从而误删了东西就不好了。内核为了确保你知道某些指令的用法,要求你必须在这些有风险的指令前加输 sudo
,这就是所谓的超级管理员指令,它会在你密码确认后,赋予 sudo 之后的命令最高权限,可以进行任何操作。
比如我需要把电脑上的 Windows 分区彻底删除时,只需要输入下面这串代码,一瞬间整个磁盘分区就会被删除:
sudo diskutil eraseVolume free none diskx
到这里为止,终端的非常基础教学就已经讲完了,这只是略过了终端海量指令中最常见的一小部分,毕竟终端控制的是整个系统的内核,其指令库非常之大,没有办法全部讲完。那么,当你在网上见到一个新命令的时候,怎么知道它该如何用?你可以使用 man 指令查看其用法,比如,当你见到了一个磁盘管理命令 diskutil
,可以使用 man diskutil
来查看这个磁盘管理命令的具体用法说明,想要退出这个说明按下键盘 Q
即可。
若你使用的是带有触控条的 Mac,可以点按触控条按钮进行快速更改终端颜色,添加书签等操作。