
大家好,欢迎来到 huangjin007_ 的博客
⭐ 个人主页:huangjin007_
🔥 文章收录专栏:Linux 内功修炼手册(系统篇)
总会有一些坚持
能从冰封的土地里
培育出十万朵怒放的蔷薇
Linux 系统篇(一) ------ 基础指令详解(一)
文章目录
- [Linux 系统篇(一) ------ 基础指令详解(一)](#Linux 系统篇(一) —— 基础指令详解(一))
-
- [一、初识 Linux 命令行](#一、初识 Linux 命令行)
-
- [1.1 界面模式的对比](#1.1 界面模式的对比)
- 二、文件系统与目录结构
-
- [2.1 一切皆文件](#2.1 一切皆文件)
- [2.2 单根倒置树结构](#2.2 单根倒置树结构)
- [2.3 相对路径与绝对路径](#2.3 相对路径与绝对路径)
- 三、基础命令逐项击破
-
- [3.1 `pwd` 指令](#3.1
pwd指令) - [3.2 `ls` 指令](#3.2
ls指令) - [3.3 `cd`指令](#3.3
cd指令) - [3.4 `touch` 指令](#3.4
touch指令) -
- 常用选项
- [知识拓展:Linux 的文件类型认知](#知识拓展:Linux 的文件类型认知)
- 更进一步:文件的时间
- [3.5 `mkdir`指令](#3.5
mkdir指令) - [3.6 `rmdir` 与 `rm` 指令](#3.6
rmdir与rm指令) -
- [`rmdir` 指令](#
rmdir指令) - [`rm` 指令](#
rm指令)
- [`rmdir` 指令](#
- [3.7 `cp`指令](#3.7
cp指令) - [3.8 `man` 指令](#3.8
man指令)
- [3.1 `pwd` 指令](#3.1
- 四、高效操作技巧
-
- [4.1 Tab 键自动补全](#4.1 Tab 键自动补全)
- [4.2 Ctrl + C 终止命令](#4.2 Ctrl + C 终止命令)
- [4.3 历史命令的高效调用](#4.3 历史命令的高效调用)
- [4.4 通配符与基本模式](#4.4 通配符与基本模式)
- 结语:
一、初识 Linux 命令行
1.1 界面模式的对比
我们熟悉的 Windows 系统,提供的是图形化用户界面,用鼠标双击、拖拽就能完成大部分操作,直观又友好。而 Linux 虽然现在也有很多漂亮的桌面环境,但它的灵魂一直留存在命令行界面里,服务器上的 Linux 更是几乎只有黑底白字的终端。
二、文件系统与目录结构
2.1 一切皆文件
如果你只能记住 Linux 的一个设计理念,那一定是"一切皆文件 "。普通文本、图片、可执行程序是文件,这很好理解。但在 Linux 眼中,键盘、鼠标、硬盘、光驱这些硬件设备,也被抽象成文件,存放在 /dev 目录下。甚至系统的某些内核信息、进程状态,也可以通过各种特殊文件去读取和修改。
2.2 单根倒置树结构
Linux 的文件系统是一棵倒置的树,树根就是根目录 /。所有的文件和目录都直接或间接地挂载在这个根下,没有 Windows 里 C 盘、D 盘的概念 ,所有的存储设备都是通过挂载到一个目录来作为树的一个分支。这种组织方式被称为文件系统层次结构标准,它规定了各个目录应该存放什么样的内容。


我们至少需要熟悉以下几个重要的子目录:
/bin:存放最基本的用户命令,比如ls、cp、cat等,这些是系统启动和单用户模式都要用到的。/dev:设备文件的大本营,前面说的一切皆文件在这里体现得淋漓尽致。/home:普通用户的家目录所在地。每新建一个用户,系统通常会在/home下创建一个与用户名同名的文件夹作为他的私人空间。/etc:系统配置文件集中地。比如修改网络、设置开机启动服务,往往就是改这里的某个文件。/usr:系统软件资源的存放地,大量的用户级应用程序、库文件、文档都在这里。/usr/bin放的就是更多的用户命令。/root:超级用户(root)的家目录。这个目录比较特殊,不放在/home下,因为 root 的权限太大,需要单独保管。
2.3 相对路径与绝对路径
既然文件系统是一棵树,想要找到一个文件,就必须描述清楚它在树上的哪个位置,这就是路径。路径存在的意义,就是为了唯一地定位一个文件。从树的根开始,沿着树枝一直走到某个节点,这条路线就是绝对路径;而如果从你当前站的位置出发,向前后左右走几步到达目标,那就是相对路径。
- 绝对路径 :必须从根
/开始写,比如/home/alice/文档/笔记.txt。无论当前在哪个目录下,用绝对路径都能准确无误地找到这个文件,它具有唯一性。- 相对路径 :不是从
/开始,而是参照当前工作目录 。比如你当前在/home/alice下,想去文档目录,直接cd 文档就行。相对路径的写法简洁,在终端里随手操作时非常方便。有两个特殊的符号需要牢牢记住:
.代表当前目录。
..代表上一级目录。
举个例子,你身处 /home/alice/文档,执行 cd .. 就回到 /home/alice,再执行 cd ../图片 就能去同级下的 图片 目录。这种跳跃对于穿梭目录很有用。
还有一个和家目录 相关的快捷操作:cd 或 cd ~ 会直接返回到当前用户的家目录 (~ 就是家目录的简写)。cd - 会跳转到上一次所在的目录,非常实用,它能让你在最近访问的两个目录之间来回切换,极大提升效率。
三、基础命令逐项击破
在开始之前,需要先说明一个通用的命令行格式:
命令名 [选项...] [参数...]
选项用来调整命令的行为,通常以 - 加一个字母(如 -l)或者 -- 加完整单词(如 --all)的形式出现。参数则是命令要操作的对象,比如文件名、目录名等。方括号 [] 表示这部分可以省略。
3.1 pwd 指令
如果你在目录树里一顿跳转,忽然忘记自己身在何处,pwd 就是你的指南针。
语法 :pwd
功能 :在屏幕上打印出你当前所在工作目录的绝对路径。它没有任何常用选项

当不知道在哪里的时候,敲一下 pwd,立刻就能知道自己在文件系统里的精确位置。
3.2 ls 指令
ls 可能是你使用频率最高的命令,它用来列出目录里的文件和子目录。如果给一个文件名,它就只显示那个文件的信息。
语法 :ls [选项] [目录或文件]
比如直接输入 ls,会列出当前目录下的内容(不包含隐藏文件)

ls 的强大之处在于它繁多的选项,下面我们逐一解析。
常用选项详解
-
-a:显示所有 文件,包括以.开头的隐藏文件。
-
-l:以长格式 展示文件的详细信息。这是最常用的选项之一,输出包含文件类型与权限、硬链接数、所有者、所属组、文件大小、最近修改时间、文件名。
-
-d:如果你用ls -l查看一个目录,它会列出这个目录里面 的文件。但有时候你只想看目录本身的属性(比如它的权限),而不是里面的内容,这时候就要加-d。
其余常用选项的速查表:
| 选项 | 功能说明 | 典型用法/备注 |
|---|---|---|
-h |
与 -l 搭配,将文件大小显示为易读的 K/M/G 格式 |
ls -lh |
-i |
在每个文件名前显示 inode 编号 | ls -li,理解硬链接必备 |
-n |
类似 -l,但所有者和所属组用数字 UID/GID 表示 |
脚本中更可靠 |
-F |
文件名后附加类型标识(*/@ 等),快速分辨文件类型 |
ls -F |
-k |
以 KB 为单位显示文件大小(配合 -l) |
建议用 -h 代替 |
-s |
输出文件占用的文件系统块大小 | 找大文件:`ls -s |
-t |
按修改时间从新到旧排序 | ls -lt,最新文件排在最前 |
-r |
反向排序 | ls -ltr,最老文件排在最后,日志排查常用 |
-R |
递归列出所有子目录的内容 | 大目录慎用,输出可能极多 |
-1 |
强制每行只显示一个文件 | 适合将输出送给其他命令处理 |
以上这些选项通常可以任意组合使用,例如:

3.3 cd指令
有了 pwd 确定位置,ls 观察周围环境,下一步就是移动。cd(change directory)就是你在目录树中移动的命令。
语法 :cd [目录名]
功能:将当前工作目录切换到指定的目录下。
这里的目录名可以是绝对路径,也可以是相对路径。
-
cd /usr/local/bin→ 直接用绝对路径跳过去。
-
cd 文档→ 相对路径,进入当前目录下的"文档"文件夹。
-
cd ..→ 回到上一级目录。
-
cd ../..→ 回到上两级,连续点几下就可以快速返回到很高的层级。
-
cd或cd ~→ 回到当前用户的家目录,无论你离家多远都能秒回。
-
cd -→ 返回你刚刚离开的那个目录,实现两个目录间的来回跳转。这个技巧能节省很多输入路径的时间。
3.4 touch 指令
touch 这个命令,直译是"触摸",它的主要用途有两个:一是创建一个原本不存在的空文件,二是更新已有文件的访问时间和修改时间。
语法 :touch [选项]... 文件...
功能:如果文件不存在,则创建一个新的空白普通文件;如果文件已存在,默认会将该文件的访问时间和修改时间更新为当前时间。

常用选项
-a:仅修改访问时间(access time)。-m:仅修改修改时间(modification time),不修改访问时间。-c或--no-create:不创建任何文件。如果你只想更新时间,但又怕误操作创建了新文件,加-c很安全。
知识拓展:Linux 的文件类型认知
当我们用 touch 创建文件时,默认创建的是普通文件。但 Linux 下的文件类型远不止这一种。这里我们先学习两种,以后再进行补充。
-:普通文件 (regular file)。包括纯文本、二进制程序、压缩包、图片等,我们用touch建的就是这一类。d:目录文件(directory)。目录也是文件,是一种特殊文件,里面存放着该目录下文件名与 inode 的对应表。
更进一步:文件的时间
通过 stat 命令,我们可以查看到文件的三个时间戳。

- Access Time(访问时间,atime) :文件内容最后一次被读取的时间。
- Modify Time(修改时间,mtime) :文件内容最后一次被修改的时间。编辑保存文件时更新。
- Change Time(改变时间,ctime) :文件属性(如权限、所有者)或内容最后一次被改变 的时间。注意,修改文件内容同时会引发 ctime 更新,但修改权限只会更新 ctime 而不影响 mtime。
3.5 mkdir指令
语法 :mkdir [选项] 目录名...
功能 :在当前或指定路径下创建一个新目录。

最常用的选项是:
-p:递归创建目录,可以一次性建立多级不存在的目录结构。比如你要创建a/b/c,但a和a/b都不存在,直接mkdir a/b/c会报错。加上-p后,系统会自动把中间缺失的父目录都补上。

3.6 rmdir 与 rm 指令
创建了目录和文件,总有要删除它们的时候。Linux 提供了 rmdir 和 rm 两个命令,一个只删空目录,一个威力无穷,需要特别小心。
rmdir 指令
语法 :rmdir [-p] 目录名
功能 :删除一个空的目录。如果目录里还有东西,rmdir 会拒绝执行,以此来保护数据。

选项 -p:当删除一个子目录后,如果它的父目录也因此变空了,则递归地把父目录也一并删掉。比如 rmdir -p a/b/c,假设 a/b/c 是空的,a/b 也是空的,那么 c 和 b 和 a 都会被移除(前提是它们只有这一条路径)。

由于限制严格,rmdir 安全但用得不多,真正的大杀器是 rm。
rm 指令
语法 :rm [选项] 文件或目录...
功能 :删除文件或目录。它可以直接删除普通文件,也可以通过选项递归删除整个目录。

常用选项:
-f:强制删除,不提示任何确认信息,即使文件属性是只读的也会直接删掉。-i:交互模式,在删除每个文件之前都会询问你是否确认。很多系统的 root 账户默认将rm别名为rm -i,就是为了防止手误。-r:递归删除,也就是删除目录以及其下所有文件和子目录。这是删除目录必须加的选项。
最危险的组合 :
rm -rf / 或者 rm -rf *。前者会试图删除整个根目录下的一切,后者会清空当前目录的所有内容,而且不会问你"是否确定"。因此,在执行 rm 尤其是带 -rf 时,务必再三确认路径是否正确!
3.7 cp指令
语法 :cp [选项] 源文件或目录 目标文件或目录
功能:将源文件或目录复制到目标位置。它的行为规则如下:
-
如果目标是一个目录,源文件会被放进该目录下,并保持原来的名字。

-
如果同时指定了多个源文件,那么目标必须是一个已存在的目录,这些源文件都会被复制进去。

-
如果目标是一个文件名(且不存在),则源文件会被复制并重命名成目标名字。

常用选项:
-r:递归复制。如果要复制的是整个目录,必须加上这个选项,否则cp会跳过目录。
-i:覆盖目标文件之前询问用户。如果你不想意外覆盖已有的重要文件,加上-i会安全一些。-f:强制复制,即使目标文件已存在也直接覆盖,不做提示。-p(小写):在复制时保留源文件的属性,如修改时间、所有者、权限等。不加-p的话,新文件的属主会变成复制者,时间戳也会更新。-v:显示详细的复制过程,可以看到哪些文件被复制了,进度一目了然。
3.8 man 指令
Linux 的命令那么多,选项又纷繁复杂,人脑不可能全记住。man(manual 的缩写)就是一个随身手册,当你不确定某个命令的用法时,随时可以查阅。
语法 :man [选项] 命令名
例如 man ls 就会打开 ls 命令的详细帮助页面,在里面你可以用上下箭头翻阅,按 / 进行搜索,按 q 退出。

手册的章节(sections)

man 手册按内容类型分成了不同的章节,常见的有:
| 章节 | 内容 |
|---|---|
| 1 | 普通用户可用的命令 |
| 2 | 系统调用(内核提供给程序的接口) |
| 3 | 库函数(C 语言标准库等) |
| 4 | 特殊文件(/dev 下的设备文件等) |
| 5 | 文件格式与配置文件语法 |
| 6 | 游戏相关的说明 |
| 7 | 杂项,包括一些全局变量、协议等 |
| 8 | 系统管理命令(通常只有 root 能用) |
很多时候,一个名字可能对应多个章节的条目。比如 printf,它既是一个 shell 命令(第 1 章),也是一个 C 标准库函数(第 3 章)。如果你直接 man printf,默认显示第 1 章的内容。如果你想查看 C 库函数版本的 printf,就需要指定章节:man 3 printf。
常用选项
-k关键字 :根据关键字搜索手册,相当于从所有手册的简短描述中查找你感兴趣的词。比如man -k password可以列出所有与 password 相关的命令和函数。-a:显示所有匹配章节的手册。用man -a printf,按q退出第一章后会继续显示第三章的内容,直到所有章节都浏览完毕。num:直接指定章节号,如man 2 open就明确查看系统调用open的说明,里面有需要的头文件和参数类型,这对 C 语言编程尤其有用。
除了 man,很多命令也支持 --help 选项(例如 ls --help)来输出简要帮助信息,虽然不如 man 详细,但胜在快速。两者结合使用,几乎可以解决所有命令用法问题。
四、高效操作技巧
4.1 Tab 键自动补全
当你输入命令、文件路径或目录名时,只需键入前几个字母,然后按 Tab 键,系统会自动补全。如果有多个匹配项,按两下 Tab 会列出所有候选项。
4.2 Ctrl + C 终止命令
当你发现一个命令执行时间太长、或者输错了不想再继续,按 Ctrl + C 就可以强行中断它。这是一个安全的"救命键",别和复制粘贴的 Ctrl+C 混淆(终端里的复制通常是 Ctrl+Shift+C)。
4.3 历史命令的高效调用
- 上下箭头:按 ↑ 显示上一条历史命令,↓ 显示下一条,可以快速翻出刚才用过的指令。
Ctrl+R:反向搜索历史命令。按下后,输入模糊的关键字,终端会动态展示匹配的历史命令,找到后回车即可执行。
4.4 通配符与基本模式
*匹配任意多个字符,rm *.txt删除所有 .txt 文件。[abc]匹配方括号内任意一个字符,ls [abc]*列出以 a、b 或 c 开头的文件。
结语:
今天的内容到这里就结束了,希望你能有所收获~
干货整理到手抖,觉得有用的话,赏个三连回回血?__(:ᗤ」ㄥ)_ _
