你的电脑文件系统就像一个巨大的、藏书亿万的图书馆。你可以使用图形界面,像个访客一样,推着小车,一次搬运几本书,或者给一本书贴上新的标签。 这很直观,也很简单,但当你需要整理成千上万份文献,或者把所有封面是蓝色的书都找出来复印一份时,这种方式就显得力不从心了。
这时,你就需要学习图书管理员的“咒语”——命令行。命令行工具赋予你一种与众不同的力量。它让你不必亲身跑遍每个书架,只需在总台下达一条指令,就能调动整个图书馆的资源。 想把所有以“报告”开头的文件都打包备份?一条命令足矣。想把所有上周修改过的图片都移动到新的文件夹?也只是一瞬间的事。

在本部分,我们将学习五个最基础也是最强大的指令:cp(复制)、mv(移动或改名)、mkdir(创建新书架)、rm(销毁资料)和 ln(创建索引卡片)。
掌握它们,你将从一个普通访客,变身为一个能高效管理整个图书馆的资深管理员。
在我们开始学习具体的命令前,得先掌握一个强大的“魔法”——通配符。它能让你一次性对成百上千个文件说话,而不需要一个个点名。
想象一下,你想找出所有 .jpg 格式的图片文件。难道要一个一个地输入它们的名字吗?当然不用!这时你就可以使用星号 * 这个最常用的通配符。星号代表“任何数量的任何字符”。
所以,*.jpg 就好像在说:“听着,所有以 .jpg 结尾的文件,都给我站出来!”
|$ ls *.jpg
有时候,你需要更精确一些的匹配。比如,你有一系列命名为 photo_001.jpg, photo_002.jpg 等的文件,但其中混入了一个 photo_a.jpg。
如果你只想匹配那些序号是三位数的文件,该怎么办呢?这时,问号 ? 就派上用场了。
问号代表“任何一个单个字符”。所以,photo_???.jpg 就能准确地帮你找到 photo_001.jpg 到 photo_999.jpg,而不会匹配到 photo_a.jpg。
|$ ls photo_???.jpg
还有一种更强大的匹配方式,就是使用方括号 []。它允许你指定一个字符“集合”,只要文件名中的某个位置匹配了集合中的任意一个字符,就算成功。
比如,你想找到所有以 a、b 或 c 开头的文件,可以这样写:[abc]*。这就像在说:“所有首字母是 a 或 b 或 c 的文件,都出来吧!”
你甚至可以在方括号里使用一些预设好的“角色类别”,比如 [[:alpha:]] 代表任何一个字母,[[:digit:]] 代表任何一个数字。所以,如果你想找到所有以数字开头的文件,就可以用 [[:digit:]]*。这比自己输入 [0123456789]* 要方便多了!
注意:你可能会在一些旧的资料里看到
[a-z]或[0-9]这样的写法。它们在某些情况下也能工作,但因为涉及到复杂的排序规则,有时会产生意想不到的结果。 对于初学者来说,我们更推荐使用[[:lower:]](小写字母)或[[:digit:]](数字)这样的类别写法,它们更清晰,也更可靠。
掌握了通配符,你就拥有了高效筛选文件的能力。这个“魔法”可以用在之后我们学习的几乎所有文件操作命令中,极大地提升你的效率。
mkdir:创建新的空目录(“新书架”)回到我们的图书馆,mkdir 命令就是我们用来创建新“书架”的工具,它的名字是 “make directory” 的缩写。用法非常直接:
|$ mkdir 目录名
你还可以一次性创建好几个抽屉,只需要把它们的名字一个接一个地告诉 mkdir 就行了。
|$ mkdir 图片 视频 文稿
瞧,三个新的、空空如也的目录就瞬间建好了,等待你来填充。
cp:复制文件和目录(“复印机”)cp 命令(copy)就是我们的“复印机”。它能完美地复制一份文件,或者将整个目录里的所有东西都复制一遍。
最基本的用法是“复印这个,贴到那里”:
|$ cp 源文件 目标文件
如果目标文件已经存在,cp 会默认用新的复印件直接覆盖它。如果你想复印好几个文件到某个目录里,可以这样:
|$ cp 文件1 文件2 文件3 目标目录
mv:移动和重命名(“搬运工兼改名师”)mv 命令(move)是个多面手。它既可以把文件从一个地方“搬运”到另一个地方,也可以在原地给文件“改个新名字”。无论哪种操作,完成后,原来的名字就不存在了。
给文件改名,语法和 cp 很像:
|$ mv 旧名字 新名字
把文件或目录移动到另一个目录下:
|$ mv 要移动的东西 目标目录
mv 也有一些和 cp 相似的模式,比如 -i(交互模式)可以在覆盖前询问,-v(话痨模式)可以显示操作过程。
一个常见的应用场景是,下载了一个名字很长的文件,然后用 mv 给它改个简洁明了的名字。
rm:删除文件和目录(“碎纸机”)rm 命令(remove)是我们工具箱里最需要小心使用的工具。它就像一台强力碎纸机,一旦把文件放进去,就再也无法复原了。
Linux 系统和我们平时习惯的 Windows 或 macOS 不同,它没有“回收站”。rm 删除的文件是永久消失的。所以,在按下回车键之前,请务必三思。
我们强烈建议,在对重要的文件(特别是使用了通配符时)执行 rm 之前,先用 ls 命令预览一下,看看你的通配符究竟会选中哪些文件。
例如,想删除所有 .tmp 文件,可以先 ls *.tmp 看看列表对不对,确认无误后,再执行 rm *.tmp。
删除一个或多个文件在Linux种也很简单:
|$ rm 文件1 文件2
如果要删除一个目录,rm 会有点“犹豫”,因为它担心你误删目录里的大量文件。你需要明确地告诉它“我确定要删除这个目录以及里面所有的一切”,这时就要用 -r(递归)模式。
|$ rm -r 要删除的目录
ln:创建链接(“图书索引卡”)ln 命令(link)可能是我们今天要学习的最奇特、也最有趣的概念。它允许我们为一个文件或目录创建一个“分身”或“快捷方式”。
这种“分身”分为两种:硬链接(Hard Link)和符号链接(Symbolic Link,也常被称为软链接 “symlink”)。
想象一下,图书馆里有一本非常重要的书,你希望在“历史”和“地理”两个分类书架上都能找到它。你当然不希望复印一本,因为那样更新内容时需要同步两本书。硬链接就是解决这个问题的办法。
创建一个硬链接,就等于为同一本书制作了一张新的、指向同一位置的目录卡。无论你通过哪张卡片去找,拿到的都是同一本实体书。
|$ ln 源文件 新链接名
硬链接有两个关键特征:
然而,硬链接有它的局限性:它不能跨“图书馆区域”(文件系统)使用,也不能为整个“书架”(目录)创建链接。因此,在现代 Linux 系统中,我们更常用的是下面这种更灵活的链接。
符号链接就像一张便利贴。你在一个地方贴上一张纸条,上面写着:“嘿,你要找的东西在某某书架的某某位置。”
|$ ln -s 目标位置 链接名
-s 参数代表“符号”(symbolic)。这张“便利贴”本身只是一个非常小的文件,里面只记录了目标的地址。
符号链接的特点非常直观:
ls -l 查看时,你会清楚地看到它指向哪里。总的来说,当你只是想在别处快速访问一个文件或目录时,符号链接通常是更好、更安全的选择。它就像我们桌面上的快捷方式一样,方便又实用。
理论说再多,不如亲手试一试。现在,我们将把之前学到的所有命令串联起来,动手建立一个属于我们自己的项目文件夹,就叫它“数字图书馆”(digital_library)好了。
首先,我们要确保自己在家目录(~)里,这是一个安全的起点。然后,我们用 mkdir 来创建我们的图书馆。
|$ cd ~ $ mkdir digital_library
为了让图书馆更有条理,我们在里面再建两个区域:“书籍区”(books)和“资料区”(resources)。
|$ cd digital_library $ mkdir books resources
我们的图书馆里现在还空空如也。让我们从系统中复制一个文件进来,作为我们收藏的起点。/etc/passwd 是一个记录用户信息的文本文件,正好可以拿来当我们的“第一本书”。我们用 cp 把它复制到当前目录下。
|$ cp /etc/passwd .
别忘了,那个小小的 . 代表"当前目录"。现在,用 ls -l 看一下,是不是多了一个 passwd 文件?
passwd 这个名字太技术了,和我们的“数字图书馆”不太搭。我们用 mv 给它改个更有书卷气的名字,比如 user_guide.txt。
|$ mv passwd user_guide.txt
这本用户指南是我们的核心藏书,理应放在“书籍区”。我们再次使用 mv,这次是把它移动到 books 目录里。
|$ mv user_guide.txt books
不放心的话,可以用 ls books 检查一下,user_guide.txt 是不是已经乖乖地待在里面了。
假设我们的用户指南需要一些参考资料,而我们希望在“资料区”能快速打开这本书来查阅,但又不想复制一份(因为那样修改起来很麻烦)。这时,符号链接就派上用场了。
我们来为 books/user_guide.txt 在 resources 目录下创建一个叫 guide_reference 的符号链接。
|$ ln -s ../books/user_guide.txt resources/guide_reference
这里的 ../books/user_guide.txt 是一个相对路径,意思是“从当前位置(resources)回到上一层(digital_library),然后进入 books 目录,找到 user_guide.txt”。用 ls -l resources 看一看,你会发现一个指向我们用户指南的“传送门”。
我们的实践接近尾声。现在,我们要学习如何负责任地“关闭”我们的图书馆。
首先,我们用 rm 删除那个快捷方式。记住,删除链接不会影响到源文件。
|$ rm resources/guide_reference
接下来,删除 books 目录里的用户指南。
|$ rm books/user_guide.txt
现在,books 和 resources 两个目录都空了。我们可以一个一个删除它们,但更高效的方法是回到上一层目录,然后用 rm -r 把整个“数字图书馆”连根拔起。
|$ cd .. $ rm -r digital_library
-r 选项会递归删除目录及其所有内容。操作完成后,你可以用 ls 检查一下,digital_library 是不是已经消失得无影无踪了。
恭喜你!你已经亲手演练了文件操作的几个核心命令。这些工具看似简单,但组合起来却能发挥巨大的威力。请不要只满足于这次练习,大胆地去创建、复制、移动和链接文件吧(但请对 rm 保持敬畏之心!)。你越是熟练,就越能感受到命令行的优雅与高效。