目录
- 前言
- 一、从基本指令到文件本质
- 1.1 详解 ls 命令与选项组合
- 1.1.1 常用选项解析 (-l, -a 等)
- 1.1.2 选项的自由组合
- 1.2 透过指令看本质:Linux 核心理论
- 1.2.1 重新定义“文件” (一切皆文件)
- 1.2.2 路径的唯一性
- 1.3 Linux 文件系统基础与路径概念
- 1.3.1 树形结构与绝对/相对路径
- 1.3.2 Windows 与 Linux 的路径差异
- 1.4 详解 pwd 与 whoami 命令
- 1.4.1 pwd:我在哪里?
- 1.4.2 whoami:我是谁?
- 1.5 详解 cd 命令:自由穿梭于目录之间
- 1.5.1 实践总结
- 二、文件的创建与属性初探
- 2.1 touch 命令:创建一个普通文件
- 2.2 stat 命令与文件的本质:ACM 时间
- 2.3 Linux 的文件类型:所见即所得
- 2.3.1 Linux 不靠后缀名识别文件
- 2.3.2 gcc != Linux操作系统
- 三、目录的高级操作与软件安装
- 3.1 mkdir 的进阶用法:递归创建
- 3.2 补充命令:安装 tree 查看目录结构
- 四、文件的删除与路径概念进阶
- 4.1 rmdir 命令:仅用于删除空目录
- 4.2 rm 命令:删除文件与目录
- 结语
前言
大家好啊,我是云泽Q,欢迎阅读我的文章,一名热爱计算机技术的在校大学生,喜欢在课余时间做一些计算机技术的总结性文章,希望我的文章能为你解答困惑~
本篇内容就开始讲Linux 的基本操作了,回想一下各位仁兄刚开始接触 Windows 操作系统的时候,大概率是在小学或者初中,那时候你们刚接触肯定不是一上来就用 Windows 打游戏,也不是在里面写代码编程,你最先做的,是学会双击、单击、右键、删除、复制、粘贴,学会用记事本,学会用 Word。说白了,接触任何一款新操作系统,第一件事永远是掌握它的基本交互方式。
现在我们面对的是 Linux。在 Windows 里,你的鼠标点击就是操作;而在 Linux(特别是我们这种没有图形界面的服务器环境)里,指令就是控制系统的唯一方法。指令的本质,其实就对应着我们在 Windows 里的各种鼠标动作。
我们前几篇文章的目标很明确:学习 40 条以上的基础指令。这些指令不需要死记硬背,后面用得多了自然就记住了。但比指令更重要的,是指令背后蕴含的Linux 系统理论知识。这才看文章的核心目的
为了让兄弟们心里有个底,我们先快速过一遍接下来要讲的 6-8 个最基础的指令:
clear:清屏,相当于把黑板擦干净。pwd:显示当前所在的路径(Print Working Directory)。ls:列出当前目录下的文件。mkdir:创建新目录(Make Directory),相当于 Windows 的新建文件夹。cd:切换目录(Change Directory),相当于双击进入文件夹。cd ..:返回上一级目录。
这几个指令大家先混个眼熟,接下来我们要像剥洋葱一样,把其中最核心的ls命令和它背后的理论讲透。
一、从基本指令到文件本质
1.1 详解 ls 命令与选项组合
ls是文中第一个详细讲解的命令,它的功能很简单:罗列当前路径下的所有文件名。但在 Linux 中,光看文件名是不够的,我们需要更多信息。这就涉及到了选项的概念。
1.1.1 常用选项解析 (-l, -a 等)
ls -l(等价于ll):这里的-l是一个选项,用来使用指定命令的扩展功能。加上它之后,不仅显示文件名,还会把文件的详细属性信息全部列出来(比如权限、所有者、大小、修改时间等)。ls -a:这个选项用于显示隐藏文件。在 Linux 中,以.(点)开头的文件都是隐藏文件,比如.hello或者代表当前目录的.和代表上级目录的..。默认情况下ls是不显示它们的,加上-a(all)才能看到全貌。
1.1.2 选项的自由组合
这里有个非常重要的点:选项是可以自由组合的
并不是说学了ls -a就只能单独用它,学了ls -l就只能单独用它。你可以把它们结合起来:
ls -a -l:先显示隐藏文件,再显示详细信息。ls -l -a:顺序颠倒,效果一样。ls -la或ls -al:这是我们的最佳实践写法。把短选项合并在一起,既省事儿又能同时达到“显示隐藏文件”+“显示详细信息”的目的。
图中我们现在能理解的就是如图文件大小和文件创建时间,[root@iZ... 118]#最后的 118 就是我当前所在的路径。
后面的文章中,只要不涉及冲突,我们都会采用这种组合写法,因为这样打字最少,效率最高。
1.2 透过指令看本质:Linux 核心理论
讲完ls,我们不能只停留在“怎么用”上,更要理解“为什么”。通过ls命令,我们要建立起两个非常朴素的 Linux 核心认知。
1.2.1 重新定义“文件” (一切皆文件)
在 Windows 里,你可能觉得文件就是里面的内容。但在 Linux 的视角下,这个理解是不完整的。
大家可以思考一个问题:在 Windows 里新建一个空文件,它占不占磁盘空间?肯定是占的,哪怕只有几 KB。既然内容为空,那占用的空间存的是什么?
这就引出了我们的第一个核心理论公式:
文件 = 文件的内容 + 文件的属性 \text{文件} = \text{文件的内容} + \text{文件的属性}文件=文件的内容+文件的属性
- 文件的内容:就是你写在里面的文字、代码或者数据。
- 文件的属性(元信息):包括文件的大小、创建时间、修改时间、权限、所有者等等。
文件的属性数据,也叫做元信息(Metadata)。它们也是数据,也需要被保存在硬盘上。所以,当我们学习文件操作时,本质上无非就是对内容或者对属性做操作。以后大家再看ls -l输出的那一长串信息,就要反应过来:这就是在查看文件的属性
1.2.2 路径的唯一性
第二个理论关于路径。为什么要有路径?因为路径具有唯一性。
这就好比现实生活中的地址。你要去访问一个文件,就像要去拜访一个人,你必须知道他在哪条街、哪个小区、哪栋楼、几号房。这个地址必须是唯一的,否则系统就找不到它了。
- 访问文件:必须通过路径来定位。
- 当前路径:你默认所处的位置,就叫当前路径。就像你现在站在自家客厅,你的“当前路径”就是客厅。
关于路径的唯一性原理我们后面还会深入展开,但现在只需要记住一点:在 Linux 的世界里,每一个文件都有一个独一无二的“身份证地址”,这就是路径。
1.3 Linux 文件系统基础与路径概念
接下来在说其余指令之前,我们得先建立一个核心认知:Linux 是如何管理文件的?
大家在接触 Linux 之前,都是使用 Windows 的,在Windows里,我们有 C 盘、D 盘、E 盘。但在 Linux 的世界里,没有“盘符”的概念。
1.3.1 树形结构与绝对/相对路径
正如我们在下图中看到的 Linux 目录结构,Linux 管理文件使用的是标准的树形结构。
- 根节点(Root):整个文件系统的起点是
/,也就是根目录。这就像一棵大树的树干,所有的枝叶都从这里生长出来。 - 路径的唯一性:在这棵树中,任何一个文件或者目录,从根节点出发去寻找它,这条路是唯一的。
- 比如我们要找
good.txt,它的绝对路径就是/usr/local/good.txt。 - 因为父节点具有唯一性,所以逆向追溯回去的路径也是唯一的。这就保证了你在系统中定位一个文件时,绝对不会产生歧义。
- 比如我们要找
图中那个复杂的树状图,虽然分支很多(像/bin,/etc,/home等),但逻辑非常清晰。叶子节点通常是普通文件或空目录,而路上的节点一定是目录。理解了这张图,你就理解了 Linux 的“世界观”。
1.3.2 Windows 与 Linux 的路径差异
作为“互联网土著”,大家对 Windows 肯定很熟悉。我们在 Windows 的资源管理器上方看到的地址栏,比如C:\Users\23927,这就是当前路径。
这里有一个极其重要的细节需要区分,这也是新手最容易踩坑的地方:路径分隔符。
| 操作系统 | 路径分隔符 | 示例 |
|---|---|---|
| Windows | 反斜杠\ | C:\Users\Name\Desktop |
| Linux | 正斜杠/ | /home/whb/Desktop |
注意:在 Linux 中,千万不要习惯性地去敲反斜杠\,那是转义字符或者是 Windows 的用法。在 Linux 里,只有正斜杠/才是用来分割目录层级的。
1.4 详解 pwd 与 whoami 命令
接下来,我们进入实操环节。没吃过猪肉,咱们先见见猪跑。这两个命令是我们在这个“树形迷宫”里不迷路的基础。
1.4.1 pwd:我在哪里?
pwd是Print Working Directory的缩写。
它的作用非常简单粗暴:显示当前你处在哪一个路径下。
当你在终端里迷失了方向,不知道自己在哪个文件夹里操作时,敲一下pwd,系统就会告诉你当前的绝对路径。
- Windows 类比:相当于你看了一眼资源管理器顶部的地址栏。
- Linux 表现:
这就告诉你,你现在正处于根目录[root@bite-alicloud118]# pwd/root/118/下的root目录下的118目录中。
1.4.2 whoami:我是谁?
光知道“在哪”还不够,还得知道“我是谁”。whoami命令用于显示当前登录的用户名。
为什么要结合这两个命令?
因为在 Linux 中,不同的用户,其默认的家目录是不同的。
- 如果你是 root(超级用户),你的家目录通常在
/root。 - 如果你是普通用户(比如 ran),你的家目录通常在
/home/ran。
所以,pwd 告诉你位置,whoami 告诉你身份,两者结合,你才能完全掌控当前的操作环境。
1.5 详解 cd 命令:自由穿梭于目录之间
cd是Change Directory的缩写。
如果说pwd是眼睛,那cd就是腿。它的功能是改变工作目录,将你从当前位置移动到指定的位置。
基本语法:
cd[目录名/路径]1. 切换路径的方式
- 绝对路径切换:从根目录
/开始写起。- 例如:
cd /usr/local
- 例如:
- 相对路径切换:基于当前所在目录进行跳转。
- 例如:你现在在
/root,想去/root/118,直接输入cd 118即可。
- 例如:你现在在
2. 特殊符号的妙用
在 Linux 的命令行操作中,有几个特殊的符号能极大提高效率,这也是面试和实战中的高频考点:
..(上级目录):- 代表当前目录的上一级(父目录)。
- 操作:
cd .. - 场景:你在
/root/118,想回退到/root,不需要重新输一遍长路径,直接cd ..回车即可。 - 原理补充:如果你执行
ls -al,你会看到每个目录下都有.和..两个隐藏项。.(可以快速进行路径定位来执行可执行程序) 代表当前目录,..代表上级目录。
-(上一次目录):- 代表上一次所在的目录。
- 操作:
cd - - 场景:这是一个“快速往返”的功能。假设你在
/root和/usr/local两个目录之间反复横跳修改配置,不用一次次复制粘贴路径,只需交替使用cd -,就能在两个目录间瞬间切换。
~(家目录):- 波浪号
~代表当前用户的家目录 (Home Directory)。 - 操作:
cd ~或者直接输入cd回车。 - 深度解析:
- 如果是
root用户,~等同于/root。 - 如果是普通用户(比如
ran),~等同于/home/ran。
- 如果是
- 波浪号
这就像 Windows 里的“用户文件夹”。不管你在电脑里怎么乱跑,只要你想“回家”,系统都知道你的家在哪里。登录系统后,默认所处的路径就是家目录。
1.5.1 实践总结
在实际开发和运维中,我们遵循以下原则:
- 相对路径:通常在进行日常命令行操作、编译代码时使用,因为更短、更方便。
- 绝对路径:通常在编写脚本、配置文件(如 Nginx 配置、Systemd 服务文件)时使用,因为它是唯一的,不会因为执行脚本时的当前位置不同而导致找不到文件。
好的,根据您提供的录音内容、图片信息以及目录结构要求,我为您整理了这篇博客的后续部分。这部分内容紧接在“1.5.1 实践总结”之后,保持了讲师通俗易懂、循循善诱的风格,同时修正了口语中的冗余,将核心知识点进行了系统化的梳理。
二、文件的创建与属性初探
接下来就要知道如何在 Linux 中创建文件和目录。
2.1 touch 命令:创建一个普通文件
在 Linux 中,如果我们想在当前目录下创建一个空的普通文件,最常用的命令就是touch。
命令格式:
touch文件名示例演示:
假设我们要创建一个名为file.txt的文件,只需输入:
[root@bite-alicloud118]# touch file.txt执行后,系统不会有任何提示(Linux 哲学:没有消息就是好消息),此时如果你再使用ls查看,就会发现file.txt已经静静地躺在那里了。同理,你可以继续touch hello.txt,它会立即被创建出来。
touch这个英文单词本意是“触摸”、“抚摸”。在 Linux 的设计哲学里,它的逻辑很有趣:如果文件不存在,我就“摸”出一个新文件;如果文件已经存在,我再“摸”它一下,它就会更新它的时间戳(这一点我们后续文章会深入讲)。
现阶段只需要记住,touch后面跟文件名,就是新建一个空文件。这是最基础也是最常用的用法。
2.2 stat 命令与文件的本质:ACM 时间
当我们用touch创建了文件,或者用ls -l查看文件时,我们看到的只是表象。在 Linux 系统中,文件 = 内容 + 属性。
如果你想深入了解一个文件的“内在”,比如它的大小、权限、所有者以及更详细的时间信息,我们需要用到stat命令。
命令格式:
stat文件名输出解读(重点):
当你执行stat test.c时,你会看到类似下面的输出,其中有三行关于时间的信息至关重要,我们称之为ACM 时间:
Access: 2025-09-27 10:59:46.720235732 +0800 Modify: 2025-09-27 10:59:03.957774399 +0800 Change: 2025-09-27 10:59:03.957774399 +0800这三个时间分别代表了不同的含义,是理解 Linux 文件系统的关键:
- Access time (atime):访问时间。指文件最后一次被读取或访问的时间。比如你用
cat(后续文章会说)查看了文件内容,这个时间就会更新。 - Modify time (mtime):修改时间。指文件内容最后一次被修改的时间。这是最常用的时间,比如你编辑并保存了文件,mtime 就会变。
- Change time (ctime):改变时间(注意不是 Create)。指文件的**元数据(属性)**最后一次发生变化的时间。比如你修改了文件的权限(
chmod)、所有者(chown)或者文件名,哪怕内容没变,ctime 也会更新。文件权限后面的文章也会系统性来说
核心概念:在 Linux 中,并没有一个专门记录“文件创建时间”的属性(这与 Windows 不同)。通常我们所说的“文件时间”,默认指的是Modify time (mtime)。
2.3 Linux 的文件类型:所见即所得
很多刚接触 Linux 的兄弟有一个误区:认为文件类型是靠后缀名(如.exe,.txt)来区分的。
2.3.1 Linux 不靠后缀名识别文件
Linux 区分文件类型,不关心文件后缀
在 Linux 中,文件能不能执行,是不是文本,完全取决于它的属性(权限位),而不是名字。哪怕你把一个可执行程序命名为hello.txt,只要它的权限允许执行,它依然可以运行,后缀名(如 .txt, .c, .exe)主要是给人看的。这就是 Linux 的“所见即所得”——看属性,不看名字。
我们可以通过ls -l输出的第一列第一个字符来判断文件类型:
d开头:代表Directory(目录/文件夹)。例如drwxr-xr-x。-开头:代表普通文件(Regular File)。这包括了文本文件、二进制程序、动态库等。例如-rw-r--r--。
还有很多文件属性,这里不展开来说,前期文章先把基本框架搭起来
所以,当你看到test.exe和test.c时,不要只盯着后缀看,要看它们前面的权限位,那才是它们在 Linux 世界里的真实身份。
2.3.2 gcc != Linux操作系统
虽然 Linux 不靠后缀名识别文件,但我们在 Linux 下编译 C 语言代码时,常用的编译器叫 gcc,它是靠后缀名识别文件的,当我们用gcc编译.c文件时,默认生成的可执行文件通常叫a.out,他会识别文件后缀,若不是.c文件时无法编译的。
如果我们指定输出名字,比如 gcc test.c -o test.exe,那么生成的可执行文件就会叫 test.exe
三、目录的高级操作与软件安装
学会了创建文件,我们自然也要学会更高效地管理目录,以及如何让 Linux 变得更强大——安装软件。
3.1 mkdir 的进阶用法:递归创建
之前我们提到过mkdir用于创建目录(Make Directory)。但在实际开发中,我们经常需要创建一串嵌套很深的目录,比如a/b/c/d。
错误示范:
如果你直接输入mkdir a/b/c/d,系统会报错:“No such file or directory”。因为系统发现连父目录a都不存在,它无法直接在虚空中创建子目录。
正确做法:使用-p选项
mkdir-pa/b/c/d这里的-p代表parents(父母/父目录)。加上这个参数后,mkdir就会变得非常智能:它会检查路径,如果父目录不存在,就自动帮你把父目录、祖父目录一路创建出来,直到生成最终的d目录。
在实际工作中,养成使用mkdir -p的习惯,可以避免很多不必要的报错。
3.2 补充命令:安装 tree 查看目录结构
为了更直观地看清我们刚才创建的a/b/c/d这种层级结构,光靠ls是不够的,我们需要一个指令——tree命令。它可以像树一样把目录结构画出来。
但是,tree并不是所有 Linux 发行版默认自带的。这就涉及到了 Linux 的一个重要技能:软件包管理。
如何安装tree?
这取决于你的 Linux 发行版(Distribution):
CentOS / RHEL 系列(使用 yum):
yuminstall-ytreeinstall:表示安装。-y:表示自动确认(Yes),不需要你在安装过程中手动输入y确认。
Ubuntu / Debian 系列(使用 apt):
aptinstall-ytree
这里我不打算深入讲解yum或apt的底层原理(那是后续文章的内容)。现阶段,大家只需要知道:Linux 是一个可以通过命令行安装软件的系统。就像我们在 Windows 上双击安装包一样,在 Linux 里,一行命令就能把工具装好。
安装完成后,你就可以在终端输入tree来查看目录结构了
好的,根据您提供的录音内容、截图以及现有的目录结构,我为您整理了博客的后续内容。这部分内容主要涵盖了文件的删除操作(rm与rmdir)以及对相对路径概念的深度解析。
为了保持讲师的风格,我在行文中保留了口语化的引导和强调重点的语气,同时修正了录音中的口误(如将rmgr修正为rmdir),并去除了无关的直播互动话术。
以下是为您生成的博客内容:
四、文件的删除与路径概念进阶
光会新建文件可不够,作为 Linux 系统的使用者,我们不仅要学会“生”,还得学会“杀”——也就是删除文件。如果你只建不删,磁盘空间迟早会被占满。接下来,我们要讲的这两个命令非常关键,分别是rm和rmdir。
4.1 rmdir 命令:仅用于删除空目录
首先我们来看rmdir。这个命令非常简单,一句话就能概括:它只能用来删除空目录。
我们在之前的操作中,在当前路径下新建了一堆文件和目录。现在我想把它们清理掉。如果我要删除一个名为dir的空目录,直接输入rmdir dir,回车,你会发现它瞬间就被删除了。同理,如果有一个dir1也是空的,照样能删掉。
但是,如果我们尝试用rmdir去删除一个非空目录(比如里面还有文件的a目录),系统就会报错:directory not empty。这就说明rmdir的功能非常单一且受限,它只是为了进行删除空目录而存在的。在实际开发中,我们很少单独使用它,因为大多数时候我们要删除的目录里多少都会包含一些内容。把它放在这里讲,主要是为了让大家理解 Linux 命令设计的严谨性——建目录有专门命令,删空目录也有专门命令。
4.2 rm 命令:删除文件与目录
既然rmdir删不掉非空目录,那该怎么办?这时候就要请出我们的主角——rm命令了。
1. 删除普通文件rm命令最基本的功能是删除普通文件。比如你想删除一个编译生成的a.out文件,或者一个file.txt文件,直接使用rm 文件名即可。
- 注意:如果你当前是
root账号,系统在删除时可能会出于安全考虑,询问你“是否真的要删除这个文件?”。这是一种保护机制,防止手滑误删重要文件,普通用户就会直接删掉。
2. 递归删除目录(rm -r)
如果要删除一个包含内容的目录(比如刚才那个删不掉的a目录),我们需要给rm加上-r选项(recursive,递归的意思)。
命令格式:rm -r 目录名
这样,系统就会进入目录内部,把里面的文件一层一层地删干净,最后再把目录本身也删掉。
3. 强制删除(rm -rf)
在实际操作中,我们经常遇到那种嵌套很深、文件很多的目录。如果用rm -r,系统可能会针对每一个文件都问你一遍“确定要删吗?”,这会让你点到怀疑人生。
为了效率,我们通常使用最佳实践组合拳:rm -rf。
-r:递归删除目录及其内容。-f:force,强制删除,不弹出任何确认提示。
警告:严禁执行rm -rf /
这里必须给大家做一个极其严肃的扩展说明。Linux 的文件系统整体是一颗树形结构,最顶层是根目录/。
如果你一时手快,在终端输入了rm -rf /,这意味着你要强制递归删除根目录下的所有内容。
- 后果:这会搞挂你的操作系统!虽然正在运行的系统核心文件可能因为被占用而暂时删不掉,但大量的配置文件、库文件、用户数据会被瞬间清空。即使系统没有立即崩溃,这种“半死不活”的状态也是最危险的,因为你不知道下一秒哪个服务会突然罢工。
- 正确做法:如果你想删除某个具体路径下的文件,一定要写全路径,例如
rm -rf /home/whb/hello.txt,千万不要让/孤立存在。
4. 交互式删除 (rm -i) —— 安全卫士
刚才提到root用户删除时会询问,但普通用户默认可能不会问,直接删了就找不回了。为了防止误操作,我们可以主动使用-i选项,即 interactive(交互式)。
当你执行rm -i filename时,无论你是不是 root,系统都会停下来问你:“你真的要删这个文件吗?”你需要输入 y (yes) 确认,或者 n (no) 取消。
最佳实践建议:对于新手或者在处理重要代码时,强烈建议使用rm -i,多一次确认,少一次后悔。