【Linux学习】Linux学习第二弹——Linux基本指令1

🌱 代码仓库 :MSTcheng · Gitee
《数据结构》
《算法学习》
《C++由浅入深》
《Linux操作系统》
前言:在上一篇文章中我们向大家介绍了Linux的历史以及其生态,本篇文章就来着重介绍一下Linux基础指令!
文章目录
一、我们为什么要学指令?
- Linux 是命令行操作系统,和 Windows 的"鼠标点一点"不同,Linux 主要靠 输入指令(命令) 来操作文件、管理系统。
- “先来快速认识 6 ~ 8 个指令”,先把命令用起来,然后再去逐条细化每个指令的细节。
- 指令不是背出来的,是用出来的——跟着敲一遍,比盯着看十遍更有效。
Linux 和 Windows 的区别? "一个常见答案角度就是:Linux 以命令行为核心、一切皆文件、多用户多任务、开源免费,而 Windows 以图形界面为核心。 在后面的文章中会用"路径、文件"继续印证这个差异。
二、快速认识 6 ~ 8 个基本指令
1. pwd —— 我在哪个路径下?
- 作用:显示当前所在路径(当前工作目录)。
- “我当前在哪个路径下。”
- 演示:
mstcheng@mstcheng-VMware-Virtual-Platform:~$ pwd /home/mstcheng root@ubuntu-dev:~# pwd /root - 注意命令提示符:
root登录显示#,普通用户mstcheng登录显示$。 - 单词含义:pwd = print working directory(打印工作目录)。
2. whoami —— 谁在访问 Linux?
- 作用:显示当前登录用户是谁。
- “谁在访问 Linux 系统。”
- 演示:
root@ubuntu-dev:~# whoami root mstcheng@ubuntu-dev:~$ whoami mstcheng - 小技巧💡:提示符里其实已经能看到用户名,
whoami更常用在脚本或排错时确认"当前以哪个身份执行"。
3. ls —— 罗列当前目录
- 作用:罗列(列出)当前目录下的文件和文件夹。
- “罗列当前目录。”
- 常⽤选项:
- -a 列出⽬录下的所有文件,包括以
.开头的隐含文件。- -d 将⽬录像⽂件⼀样显示而不是显示其下的文件。 如:ls ‒d 指定目录
- -i 输出⽂件的 i 节点的索引信息。 如
ls ‒ai指定⽂件- -k 以
k字节的形式表示文件的大小。ls ‒alk指定⽂件- -l 列出文件的详细信息
- -n ⽤数字的 UID,GID 代替名称。 (介绍 UID, GID)
- -F 在每个文件名后附上⼀个字符以说明该⽂件的类型,
*表示可执行的普通文件;/表示目录;@表示符号链接;|表示FIFOs;=表示套接字(sockets)。(目录类型识别)- -r 对⽬录反向排序
- -t 以时间排序
- -s 在l⽂件名后输出该文件的大小。(大小排序,如何找到⽬录下最⼤的⽂件)
- -R 列出所有子目录下的文件。(递归)
- -1 一行只输出⼀个文件。
- 演示:
mstcheng@ubuntu-dev:~/117/code$ ls
cgdbtest linux-code list makefile procbar testCode
mstcheng@ubuntu-dev:~/117/code$ ls -a -l
total 32
drwxrwxr-x 7 mstcheng mstcheng 4096 Nov 23 2025 .
drwxrwxr-x 4 mstcheng mstcheng 4096 Feb 11 2026 ..
drwxrwxr-x 2 mstcheng mstcheng 4096 Oct 28 2025 cgdbtest
drwxrwxr-x 18 mstcheng mstcheng 4096 Jul 18 15:22 linux-code
drwxrwxr-x 2 mstcheng mstcheng 4096 Oct 28 2025 list
-rw-rw-r-- 1 mstcheng mstcheng 533 Oct 17 2025 makefile
drwxrwxr-x 2 mstcheng mstcheng 4096 Oct 21 2025 procbar
drwxrwxr-x 2 mstcheng mstcheng 4096 Nov 23 2025 testCode
mstcheng@ubuntu-dev:~/117/code$ ls -alfn
total 32
drwxrwxr-x 7 1000 1000 4096 Nov 23 2025 .
drwxrwxr-x 4 1000 1000 4096 Feb 11 2026 ..
drwxrwxr-x 2 1000 1000 4096 Oct 28 2025 list
drwxrwxr-x 2 1000 1000 4096 Oct 28 2025 cgdbtest
drwxrwxr-x 18 1000 1000 4096 Jul 18 15:22 linux-code
-rw-rw-r-- 1 1000 1000 533 Oct 17 2025 makefile
drwxrwxr-x 2 1000 1000 4096 Nov 23 2025 testCode
drwxrwxr-x 2 1000 1000 4096 Oct 21 2025 procbar
4. cd —— 更改路径
- 作用:切换到(进入)某一个目录。
- “更改路径。”
- 演示:
mstcheng@ubuntu-dev:~/117/code$ cd linux-code/
mstcheng@ubuntu-dev:~/117/code/linux-code$
(提示符中的路径跟着变化,说明 cd 生效了)
1. cd 绝对路径:切到目标路径下
- “cd 绝对路径:切换到目标路径下。”
- 演示:
mstcheng@ubuntu-dev:~$ cd ~/117/code/linux-code/
mstcheng@ubuntu-dev:~/117/code/linux-code$
2. cd -:回退到上次所处的路径
- “回退到上次所处的路径。”
- 在"上次路径"和"当前路径"之间来回跳,非常适合在两个深目录间快速切换。
3. cd ~(不带参数直接 cd):回到当前用户家目录
-
“当前用户的家目录。” (在根目录
/下有一个用户名的目录,那个目录就是你的家目录!)
-
演示:
//直接cd不带参数 那么进入的就是家目录!
mstcheng@ubuntu-dev:~/117/code/linux-code$ cd
mstcheng@ubuntu-dev:~$ pwd
/home/mstcheng
- “root 账号的家目录” 是
/root,普通用户(如 mstcheng)的家目录是/home/mstcheng。 - 易错点:家目录是
/root或/home/用户名,不是/root之外的东西;而根目录是/。cd和cd ~等价,都是回家;cd /是到根目录,别混淆。
5. mkdir —— 新建一个目录/文件夹
- 作用:在当前目录下新建一个目录(文件夹)。
- “在当前目录下,新建一个目录 / 文件夹。”
-演示:
mstcheng@ubuntu-dev:~/117/code$ ls
cgdbtest linux-code list makefile procbar testCode
mstcheng@ubuntu-dev:~/117/code$ mkdir test
mstcheng@ubuntu-dev:~/117/code$ ls -a -l
total 36
drwxrwxr-x 8 mstcheng mstcheng 4096 Aug 23 17:25 .
drwxrwxr-x 4 mstcheng mstcheng 4096 Feb 11 2026 ..
drwxrwxr-x 2 mstcheng mstcheng 4096 Oct 28 2025 cgdbtest
drwxrwxr-x 18 mstcheng mstcheng 4096 Jul 18 15:22 linux-code
drwxrwxr-x 2 mstcheng mstcheng 4096 Oct 28 2025 list
-rw-rw-r-- 1 mstcheng mstcheng 533 Oct 17 2025 makefile
drwxrwxr-x 2 mstcheng mstcheng 4096 Oct 21 2025 procbar
drwxrwxr-x 2 mstcheng mstcheng 4096 Aug 23 17:25 test
drwxrwxr-x 2 mstcheng mstcheng 4096 Nov 23 2025 testCode
6. touch —— 新建一个普通文件
-
作用:新建一个普通文件。
-
演示:
mstcheng@ubuntu-dev:~/117/code$ touch code.c
mstcheng@ubuntu-dev:~/117/code$ ls -a -l
total 36
drwxrwxr-x 8 mstcheng mstcheng 4096 Aug 23 17:50 .
drwxrwxr-x 4 mstcheng mstcheng 4096 Feb 11 2026 ..
drwxrwxr-x 2 mstcheng mstcheng 4096 Oct 28 2025 cgdbtest
-rw-rw-r-- 1 mstcheng mstcheng 0 Aug 23 17:50 code.c
drwxrwxr-x 18 mstcheng mstcheng 4096 Jul 18 15:22 linux-code
drwxrwxr-x 2 mstcheng mstcheng 4096 Oct 28 2025 list
-rw-rw-r-- 1 mstcheng mstcheng 533 Oct 17 2025 makefile
drwxrwxr-x 2 mstcheng mstcheng 4096 Oct 21 2025 procbar
drwxrwxr-x 2 mstcheng mstcheng 4096 Aug 23 17:25 test
drwxrwxr-x 2 mstcheng mstcheng 4096 Nov 23 2025 testCode
- 易错点:
mkdir建"文件夹/目录"即我们刚刚创建的test目录!,touch建"普通文件"即我们创建的code.c( 具体的文件),两者对象完全不同,面试现场常让口头区分。
7. clear —— 清屏
- 作用:把屏幕上之前的内容清掉,让界面干净,方便继续操作。
- “clear:清屏操作。”
- 快捷方式:
Ctrl + L。
上面我们谈到了诸如文件夹,目录这样的概念,下面就来解释一下:
三、核心观念:文件夹 == 目录
- “文件夹 == 目录。” 文件夹就是一个目录
- 也就是说:在 Windows 里我们叫 “文件夹”,在 Linux 里叫"目录",它们是同一个东西。
- 后面遇到"目录"这个词,就把它翻译成 Windows 的"文件夹"来理解,能省很多困惑。
- 同理,Linux 里的"文件"也不只是文本,目录本身也是一种文件(后面"文件类型"一节会讲)。
在上面我们还谈到了路径问题,下面我们就来看看路径问题:
四、路径:Windows 与 Linux 的对比
1. 登录后都有一个"默认路径"
-
在windows系统中标识文件的唯一性,是通过路径标识的!
意思:同一个文件名可能出现在很多文件夹里,但 “哪个盘哪个文件夹下的哪个文件”(完整路径)是唯一的。 -
“无论 Windows 还是 Linux,我们登录成功,都会默认处在一个默认的路径下。”
Windows:登录后默认在某个盘符的目录(如C:\Users\用户名)。
Linux:登录后默认在家目录(root 是/root,普通用户是/home/用户名)。 -
这就是为什么一打开终端,
pwd就能打出一个路径——系统已经把我们"放"在某个地方了。 -
Windows 用反斜杠
\作为路径分隔符,Linux 用正斜杠/作为路径分隔符。

注意:
“Windows 和 Linux 路径写法有什么区别?” —— Windows 用\(反杠),Linux 用/(正斜杠);Windows 有盘符(C:、D:),Linux
是统一的根/。
五、文件 = 内容 + 属性
- 一个经典问题:“如在 Windows 新建一个空的文件,这个文件要不要占据磁盘空间?”
- 直觉答案:“空文件没内容,应该不占空间吧?”
- 真实情况:空文件也要占据磁盘空间!
- “文件的属性是不是数据??是的!!但 文件 ≠ 文件内容。”
- 重点公式:
文件 = 文件的内容 + 文件的属性
- 解释:
- 文件内容:文件里存的真正数据(比如文本、代码、图片像素、视频音频数据)。
- 文件属性(元数据):文件名、大小、权限、属主、修改时间……这些不是内容,但也是数据,也要占用磁盘空间存储。
- 所以即使是 0 字节的空文件,它的"属性"信息也要写进磁盘,必然占用空间。
所以:ls -l:可以显示更多文件属性
mstcheng@ubuntu-dev:~/117/code$ ls -l
total 28
drwxrwxr-x 2 mstcheng mstcheng 4096 Oct 28 2025 cgdbtest
-rw-rw-r-- 1 mstcheng mstcheng 0 Aug 23 17:50 code.c
drwxrwxr-x 18 mstcheng mstcheng 4096 Jul 18 15:22 linux-code
drwxrwxr-x 2 mstcheng mstcheng 4096 Oct 28 2025 list
-rw-rw-r-- 1 mstcheng mstcheng 533 Oct 17 2025 makefile
drwxrwxr-x 2 mstcheng mstcheng 4096 Oct 21 2025 procbar
drwxrwxr-x 2 mstcheng mstcheng 4096 Aug 23 17:25 test
drwxrwxr-x 2 mstcheng mstcheng 4096 Nov 23 2025 testCode
-
ls -l输出一行的含义(从前往后):- 文件类型 + 权限:如
-rwxr-xr-x(第 1 位是类型,后面 9 位是权限)。如果是d开头就是目录文件,如果是-开头就是普通文件 - 链接数/子目录数:普通文件通常是 1,目录是里面子目录数量 + 2(为什么+2后面会说)。
- 属主(owner):如
mstcheng。 - 所属组(group):如
mstcheng。 - 大小(字节):如
4096。 - 最后修改时间:如
Aug23 17:25。 - 文件名:如
code.c。
- 文件类型 + 权限:如
-
ls -a:显示隐藏文件
“显示当前路径下的隐藏文件或者文件夹。”
演示:
mstcheng@ubuntu-dev:~/117/code$ ls -a
. .. cgdbtest code.c linux-code list makefile procbar test testCode
-a(all)会把以.开头的隐藏文件也显示出来,其中必然包括.(当前目录)和..(上级目录)。
说到隐藏文件以及. 和.. 下面就来介绍一下:
六、隐藏文件与 . / .. 的秘密
1. 隐藏文件
“Linux 系统中,可以存在隐藏文件,隐藏文件往往以 . 开头。”
- 例:
.bashrc、.gitignore、..就是典型的以点开头的"隐藏文件/目录"。 - 隐藏只是"默认不显示",并不是真的加密或不存在,用
ls -a就能看到。
2. . 表示当前路径
- “Linux 系统中, 一个
.,通常表示当前路径。” - 例:
./code.c就是指"当前目录下的code.c"。
3. .. 表示上级路径
- “两个
..,通常表示上级路径。” - 例:
../hello.txt就是指 “上一级目录里的 hello.txt”。
4. 任何目录下都隐藏存在 . 和 ..
- “任何目录下,都要隐藏存在
.和..(上级目录)。” - 因为
.和..是目录结构自带的"指针":.指向自己,..指向父目录,这是后面理解"树形目录"的关键。 🔺这也是为什么前面说 链接数/子目录数+2 的原因!(+2加的就是.当前目录和..上级目录)🔺
5.cd .和cd .. 进入当前目录进入上级目录
mstcheng@ubuntu-dev:~/117/code$ pwd
/home/mstcheng/117/code
mstcheng@ubuntu-dev:~/117/code$ cd .
mstcheng@ubuntu-dev:~/117/code$ pwd
/home/mstcheng/117/code
mstcheng@ubuntu-dev:~/117/code$ cd ..
mstcheng@ubuntu-dev:~/117$ pwd
/home/mstcheng/117
上面谈到当前目录.和上级目录..以及前面所谈到的根目录和家目录,下面就来聊聊Linux的目录结构!
九、Linux 的目录结构:树状结构(多叉树)⭐本章最核心
1. 树形目录结构
- “Linux 目录本质是树形目录结构的基础!”、“Linux 的整个文件结构,是树状结构!”
- “就像是一颗多叉树”。
- 理解:把整个 Linux 文件系统想象成一棵倒着长的树,最顶端是根
/,往下不断分叉出目录,最后挂上文件。

2. 任何一个节点,都只有一个父节点
- “任何一个节点,都只有一个父节点。”
- 除根
/外,每个文件/目录都只有一个"爹"(父目录),不可能同时属于两个上级目录(不考虑硬链接等特殊情况,基础阶段记住这一条)。 - 这也直接解释了后面"路径唯一性"。
3. 到根目录就不能再退了
- “推到根目录,就不能再退了!”
- 在
/下执行cd ..还是/,因为/已经是最顶层,没有上级了。
4. 两个重要结论
- 结论 1:“这棵多叉树的叶子节点,一定是普通文件或者空的文件夹。”
- 叶子节点 = 没有"孩子"的节点。它要么是普通文件(没有子目录),要么是空目录。
- 结论 2:“路上节点(非叶子)节点,本质就是文件夹或者目录!”
- 非叶子节点 = 还有子目录的节点,它们本质上都是目录/文件夹。
5. 路径为什么具有唯一性?⭐
- “标识文件唯一性,通过路径标识。路径为什么具有唯一性??”
- “从
/目标文件定位的时候,路径就是唯一的!” - 逻辑链条:
- 文件系统是一棵树;
- 每个节点只有一个父节点;
- 那么从根
/出发,到某个文件的"走法"是唯一的; - 这条唯一的"走法"写出来,就是唯一的一条绝对路径。
- 举例:
/usr/bin/hello.txt是唯一的! 世界上只有这一个"根目录下usr目录下bin目录下的hello.txt"。
有了上面对于Linux目录结构的认识,以及路径唯一性的认识,下面我们顺水推舟来聊聊绝对路径和相对路径!
十、绝对路径 vs 相对路径 ⭐
1. 定义
- 绝对路径:从根
/开始写的完整路径。- 示例:
/usr/bin/hello.txt,标注:“绝对路径:是从/作为起点进行唯一的路径标识。”
- 示例:
- 相对路径:从当前所处目录为参照点写出的路径。
- 示例:
../bin/hello.txt,标注:“相对路径:从当前目录作为参照点。” ../表示"上一级目录",所以../bin/hello.txt意思是"上一级目录下的 bin 目录里的 hello.txt"。
- 示例:
2. 绝对路径一定能唯一标识文件,那相对路径呢?
- “相对路径能不能唯一标识?”、“对于一个确定的相对路径,相对路径能不能保证唯一性?”
- 答案:绝对路径唯一,相对路径不保证唯一!
- “相对路径,是从我自己当前所处的目录为参照点的!一旦我自己所处的目录发生变化,相对路径可能就会失效!(找不到了/指向另一个文件)。”
通俗理解:同一条相对路径
../bin/hello.txt,在/root下和在/tmp
下,指向的根本不是同一个文件。
3. 最佳实践⭐⭐
最佳实践:
1. 配置文件,要配置各种路径,建议绝对路径;
2. 否则,常规操作统一使用相对路径。
- 理由:
- 配置文件(比如各种服务、软件的配置)里的路径,一旦写错文件就找不到,而且配置文件不随用户位置变化,必须稳定,用绝对路径。
- 日常操作(敲命令)时,人正站在某个目录里,用相对路径更短更直观。
十一、执行程序:./ 的意义
1. 演示
- 可执行程序
code.exe,然后在当前目录/home/mstcheng/117/code下:# 方式一:用 . 表示当前路径,./code.exe 执行 mstcheng@ubuntu-dev:~/117/code$ ./code.exe hello Linux # 方式二:用完整绝对路径执行 mstcheng@ubuntu-dev:~/117/code$ /home/mstcheng/117/code/code.exe hello Linux # 方式三:直接敲文件名 → 报错! mstcheng@ubuntu-dev:~/117/code$ code.exe code.exe:未找到命令 - “执行当前路径,
.意义是什么??” - “你要执行一个程序的前提,就是先通过路径找到它!”
2. 解释
./code.exe:.是"当前路径",./code.exe明确告诉系统"在当前目录下找code.exe 这个程序"。/home/mstcheng/117/code/code.exe:用绝对路径,同样能找到。code.exe(不带路径):系统只在 PATH 环境变量 指定的目录(如/bin、/usr/bin等)里找,当前目录默认不在 PATH 里,所以报command not found。- 注意:
command not found表示"没找到这个命令/文件",不是说文件不存在——文件明明就在眼前,只是系统按PATH去找没找到。
- 注意:
3. 为什么要有 . ?⭐⭐⭐
- 因为 Linux 出于安全考虑,默认不把"当前目录"放进搜索路径,防止恶意脚本假装成系统命令在当前位置被执行。
- 所以执行当前目录下的程序,必须显式写成
./程序名。
十二、总结
本篇文章围绕 Linux 基础指令与文件系统展开,核心内容如下:
- 基本指令:认识了
pwd、whoami、ls、cd、mkdir、touch、clear等常用命令,并强调"指令是用出来的,不是背出来的"。 - 核心观念:文件夹 == 目录;文件 = 内容 + 属性,空文件也要占据磁盘空间。
- 路径体系:Linux 用正斜杠
/,Windows 用反斜杠\;登录后默认处于家目录。 - 隐藏文件:以
.开头的文件默认不显示,用ls -a可见;.表示当前目录,..表示上级目录。 - 目录结构:Linux 文件系统是一棵多叉树,根为
/,每个节点只有一个父节点,因此从根出发的绝对路径具有唯一性。 - 路径类型:绝对路径从
/开始、稳定唯一;相对路径以当前目录为参照、不保证唯一。配置文件建议用绝对路径,日常操作用相对路径。 - 执行程序:执行当前目录下的程序需写成
./程序名,因为当前目录默认不在 PATH 中。
一句话总结:掌握基础指令,理解"一切皆文件"与树形目录结构,就能在 Linux 中自由穿行。
本章我们只讲解了最基础的指令然后过渡到对于Linux文件,目录,路径的理解,下期继续介绍后续的一些指令,今天的内容就到这里,觉得对你有益的话不妨给个三联支持!感谢!
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐

所有评论(0)