
大家好,欢迎来到 huangjin007_ 的博客
⭐
个人主页:huangjin007_
🔥
文章收录专栏:Linux 内功修炼手册(系统篇)
总会有一些坚持能从冰封的土地里培育出十万朵怒放的蔷薇
Linux 系统篇(一) —— 基础指令详解(一)
文章目录
- Linux 系统篇(一) —— 基础指令详解(一)
-
- 一、初识 Linux 命令行
-
- 1.1 界面模式的对比
- 二、文件系统与目录结构
-
- 2.1 一切皆文件
- 2.2 单根倒置树结构
- 2.3 相对路径与绝对路径
- 三、基础命令逐项击破
-
- 3.1 `pwd` 指令
- 3.2 `ls` 指令
-
- 常用选项详解
- 3.3 `cd`指令
- 3.4 `touch` 指令
-
- 常用选项
- 知识拓展:Linux 的文件类型认知
- 更进一步:文件的时间
- 3.5 `mkdir`指令
- 3.6 `rmdir` 与 `rm` 指令
-
- `rmdir` 指令
- `rm` 指令
- 3.7 `cp`指令
- 3.8 `man` 指令
-
- 手册的章节(sections)
- 常用选项
- 四、高效操作技巧
-
- 4.1 Tab 键自动补全
- 4.2 Ctrl + C 终止命令
- 4.3 历史命令的高效调用
- 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 | sort -nr | head -5 |
| -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 开头的文件。
结语:
今天的内容到这里就结束了,希望你能有所收获~
干货整理到手抖,觉得有用的话,赏个三连回回血?__(:ᗤ」ㄥ)_ _




