前言
Linux 的诞生与发展,是 "技术、商业、开源" 交织的缩影 ------ 从军事驱动的起源,到硅谷模式的商业化,再到如今生态化的开源逆袭,它早已成为操作系统领域的核心力量之一。
本篇会从历史脉络、基础认知到实用指令 逐步展开:先梳理 Linux 的发展历程,帮你建立对系统的宏观认知;再拆解操作系统、用户管理、文件路径等基础知识,筑牢入门根基;最后聚焦ls/pwd/cd等高频指令,通过实操式讲解让你快速上手日常操作。
无论是想了解 Linux 的 "来龙去脉",还是想掌握实用技能,这篇内容都能帮你从 "陌生" 到 "入门"。
目录
[☆ 起源篇・军事驱动](#☆ 起源篇・军事驱动)
[☆ 商业篇・硅谷模式](#☆ 商业篇・硅谷模式)
[☆ 硬件分支・生态分化](#☆ 硬件分支・生态分化)
[☆ 开源篇・Linux 逆袭](#☆ 开源篇・Linux 逆袭)
[7、' . ' 和 ' .. '](#7、' . ' 和 ' .. ')
[8、* 通配符](#8、* 通配符)
[☊. 目录相关指令](#☊. 目录相关指令)
[☋. 文件相关指令](#☋. 文件相关指令)
[▷. 系统/工具指令](#▷. 系统/工具指令)
一、相关历史介绍
☆ 起源篇・军事驱动
核心线: 军事需求 → 硬件突破 → 技术溢出
1946/2/14:埃尼阿克(ENIAC)诞生,为计算导弹轨迹而生(军事用途)
↘️ 触发:美苏冷战军备竞赛 → 推动计算机小型化(从庞然大物到可用系统)
↘️ 关联:摩尔定律(芯片性能迭代)成为隐形动力
☆ 商业篇・硅谷模式
核心线: 政府 / 军方投入 → 资本介入 → 产品民用化
起源逻辑:政府 + 军方出钱→高校 / 研究机构搞技术→商人(钱・华尔街)推动商业化变现
↘️ 孵化产物:计算机 + 操作系统(从军工品变成老百姓能用的商品)
↘️ 爆发结果:产品卖向全球→诞生大量公司(IBM、苹果、微软...)
☆ 硬件分支・生态分化
核心线: 不同定位的硬件 + OS 组合
高端闭环:苹果(硬件 + 软件 OS)→ 质量高、价格贵,"很多人都会买"
企业 / 科研:IBM(thinkpad 等)+UNIX → 面向企业、高校,稳定但小众
性价比路线:微软(软件 OS)+ 英特尔(硬件)→ 成本低,主打 "老百姓用得起"
☆ 开源篇・Linux 逆袭
核心线: UNIX 启发 → 个人开发者破局 → 开源生态
1991 年:林纳斯・托瓦兹(21 岁,赫尔辛基大学)→ 用了 UNIX 系统后想 "自己做一个"
↘️ 行动:做了 Linux 内核 demo → 源代码免费公开
↘️ 扩散:吸引工程师 / 爱好者参与→Linux 生态壮大(安卓基于 Linux、谷歌等公司采用)
二、前置知识
1、操作系统(OS)是什么
操作系统 是一款做软硬件管理的软件,而 Linux 是操作系统的重要分支(类 Unix 系统),CentOS 作为基于 Linux 开发的发行版,自然继承了这一核心能力 ------ 它能对服务器等设备的硬件资源(如 CPU、内存、存储等)和软件程序进行高效管理与调度,为各类应用运行提供稳定环境。
操作系统作用:

通过对下管理好软硬件资源(手段),达到对上提供良好的(稳定、快速、安全)操作/使用环境
我们所有的软件行为,全部都要自顶向下贯穿计算机的软硬件结构。
2、如何登录账号
以下操作基于已准备好的 CentOS 服务器(如本地虚拟机、实验室 / 公司提供的服务器等),默认已获取服务器的 IP 地址、登录用户名及密码,直接讲解通过命令行登录服务器的核心步骤
首先输出**ssh 用户名@公网IP** ,跳出SSH用户身份验证输入密码即可。SSH(Secure Shell,安全外壳)是一种网络协议,通过加密和认证机制实现安全访问和文件传输等业务。

3、如何创建和删除普通用户
添加普通账号的步骤:
创建账号: adduser 用户名
设置密码:passwd 用户名(输入密码时,是不显示密码的)
具体操作:

在 CentOS 系统中,使用***
adduser ljh*** 命令创建用户ljh,接着用**passwd ljh** 命令为该用户设置密码时,系统提示 "BAD PASSWORD: The password contains the user name in some form ",即密码包含了用户名相关形式,存在安全风险,但最终密码仍成功更新(显示passwd: all authentication tokens updated successfully.)。
删除普通账号的步骤:
仅删除用户账号 (保留用户家目录等文件):userdel 用户名
彻底删除用户 (包括其家目录及相关文件):userdel -r 用户名
【具体操作】:

**问题:**仅删除用户账号后,还能使用该用户的家目录吗?
能,但需注意:
***1、**原用户无法用:*账号已删除,原用户不能再通过该账号访问目录;
***2、**root 可以直接用:*超级用户(root)拥有最高权限,可直接访问 / 操作这个目录;
3、目录归属显示为数字 UID: 因账号被删,目录的拥有者会显示原用户的 UID 数字(需通过
chown等命令可重新指定归属)。
4、xshell相关快捷键
【Alt + 回车】: 全屏
【Ctrl + D】: 退出当前 Shell 会话 / 交互式程序
【ctrl+insert】: 复制(如果不行,打开Fn配合使用)
【shift+insert】: 粘贴
这里不支持ctrl + c 和 ctrl + v 快捷键
5、文件
当在电脑上进行操作时,实际上是通过操作系统来控制文件和文件夹 。操作系统提供了图形用户界面(GUI)和命令行界面(CLI),让你可以方便地浏览、创建、删除、移动和修改文件和文件夹。比如我们的桌面实际上是一个文件夹,存储了在桌面上看到的所有文件和快捷方式。

文件的组成:
文件 = 文件内容 + 文件属性
文件属性指的是文件上次修改的日期以及文件类型、文件名称等

我圈的红色的就属于文件属性,然后我们可以观察到文件的大小为0KB,但是实际上他只是指文件内容的大小为0KB代表是一个空文件,文件属性实际也会占内存的
6、路径
绝对路径:从系统的根目录(如 Linux 中的 / 、Windows 中的 C:\ 等)开始,到目标文件或目录的完整路径,具有唯一性,能明确且唯一地定位到文件或目录。
相对路径:以当前所在的目录为起始参考位置,来描述目标文件或目录的路径,它的指向会随着当前所在目录的变化而变化。
以下这些都称为路径:
bash
//Linux下:
[root@VM-8-14-centos div]# pwd
/root/div
//Windows下:
E:\C++开发代码\MetaFrame++
**问题1:**路径分隔符是啥?
路径分隔符就是用来区分文件路径里不同文件夹、文件的符号:
Linux、macOS:用 /,比如要找 test 文件夹里的 a.txt,路径是 /home/test/a.txt。
Windows:一般用 \,比如 C:\Users\test\a.txt,不过也能识别 /。
**问题2:**为啥要有路径?
因为电脑里文件、文件夹太多,分层存着。有了路径,不管是电脑系统还是我们,都能精准找到要的文件或文件夹在哪,不然就没法在一堆文件里定位到目标啦。
在Linux的整个文件目录结构是一个多叉树,属于树状结构:

7、' . ' 和 ' .. '
隐藏文件:在Linux中以 . 开头的文件叫隐藏文件
windows下的隐藏文件:

Linux下的隐藏文件:

. 代表 "当前目录",是隐藏的特殊目录,./file.txt 表示 "当前目录下的 file.txt";
.. 代表 "上级目录",也是隐藏的特殊目录,**../file.txt**表示 "上级目录下的 file.txt";
8、* 通配符
在 Linux 等系统中,* 通配符 代表匹配任意字符序列(包括空字符序列 ),常用于文件查找、命令参数匹配等,比如 ls *.txt 能列出当前目录下所有扩展名为 .txt 的文件。
【常见用法】:
1、匹配同一目录下的所有文件ls * 会列出当前目录中所有非隐藏文件(不包含以**.** 开头的文件)
2、匹配特定后缀的文件ls *.txt 会列出当前目录中所有以**.txt** 结尾的文件(如a.txt、file.txt 等)
3、匹配前缀相同的文件ls doc* 会列出所有以 doc 开头的文件(如doc1.pdf、document.txt等)
4、结合路径使用ls /home/user/*.sh 会列出**/home/user** 目录中所有以 .sh 结尾的脚本文件
注意:
* 不会匹配以 . 开头的隐藏文件(如 .bashrc) ,如果要匹配隐藏文件,可使用 .* (但需谨慎,可能匹配到**.** 和**..**这两个特殊目录)
9、管道
在 Linux 系统中,管道 (用 | 符号表示)是一种非常实用的工具,它能让一个命令的输出 直接成为另一个命令的输入 ,就像 "数据的传送带"。
比如 ,我们想在当前目录下找到所有以 .txt 结尾的文件,还想统计这些文件的数量。可以用 ls *.txt | wc -l 这个命令组合。ls *.txt 会列出所有 .txt 文件,然后通过管道,把列出的结果传给 wc -l,wc -l 就会统计出这些文件的数量。
管道传递的是数据的拷贝,不是原始文件本身,而且数据是流式传递、即时处理的,处理完就销毁,不需要临时文件来存储,能让我们在 Linux 运维、服务器管理等工作中,更高效地对数据进行连续操作。
上述基础内容会在后续讲解中用到,要是现在不太明白,可以先继续往下看~
────────核心命令解析────────
☊. 目录相关指令
1、ls指令(查看目录/文件)
语法: ls [选项] [目录或文件]
**功能:**列出指定目录中的文件和子目录。
常用选项:
**
-a:**列出所有文件,包括隐藏文件(以.开头的文件)。**
-l:**详细列出文件的权限、拥有者、大小、修改时间等信息。
-F: 在文件名后附加文件类型的标志,如*表示可执行文件,/表示目录等。(目录类型识别)
其他选项:
-a:列出目录下的所有文件,包括以.开头的隐含文件。**
-d:**将目录像文件一样显示,而不是显示其下的文件。如:ls -d 指定目录
-i: 输出文件的 i 节点的索引信息。如ls -ai 指定文件
-k: 以 k 字节的形式表示文件的大小。ls -alk 指定文件**
-l:**列出文件的详细信息。**
-n:**用数字的 UID,GID 代替名称。(介绍 UID,GID)
-F: 在每个文件名后附上一个字符以说明该文件的类型,*表示可执行的普通文件;/表示目录;@表示符号链接;|表示 FIFOs;=表示套接字 (sockets)。(目录类型识别)
-r:对目录反向排序。**
-t:**以时间排序。**
-s:**在文件名后输出该文件的大小。(大小排序,如何找到目录下最大的文件)**
-R:**列出所有子目录下的文件。(递归)**
-1:**一行只输出一个文件。
ls指令演示
2、pwd指令(查看当前路径)
语法: pwd
**功能:**显示用户当前所在的目录
**常用选项:**无
pwd指令演示
3、cd指令(切换目录)
语法: cd [目录]
**功能 :**改变工作目录。将当前工作目录改变到指定的目录下。
常用选项:
cd ..: 返回上级目录
cd /home/litao/linux/: 绝对路径
cd ../day02/: 相对路径
cd ~: 进入用户家目录**
cd -:**返回最近访问目录
cd指令演示
4、家目录(用户默认路径)
家目录(Home Directory)是操作系统为每个用户分配的一个专用目录,用于存储该用户的个人文件、配置文件和数据
【windows中的用户默认的家目录】
C:\Users\用户名
【Linux下指定用户的家目录】
对于root账号: 默认的家目录__ /root--->超级管理员账号
对于普通用户: 默认的家目录__ /home/新建的用户名
任何一个用户,首次登录所处的路径都是自己的家目录,关于这点可以使用whoami指令查看当前正在使用Linux系统的用户名
5、mkdir指令(创建目录)
语法:mkdir [选项] dirname
**功能:**在当前目录下创建一个名为 "dirname" 的目录。
常用选项:
-p, --parents: 可以是一个路径名称。此时若路径中的某些目录尚不存在,加上此选项后,系统将自动建立好那些尚不存在的目录,即一次可以建立多个目录。递归创建多个目录示例:
mkdir -p /home/user/newdir
6、rmdir指令(删除空目录)
与 mkdir 的对应关系:mkdir 用于建立目录,rmdir 则是删除目录的命令。
语法:rmdir [-p] [dirName]
**功能:**删除空目录。
常用选项:
-p: 当子目录被删除后,如果父目录也变成空目录,就连带父目录一起删除。
7、tree指令(以树形显示目录结构)
功能: tree命令用于以树状图形式显示文件和目录的层次结构
安装:
判断是否安装:若执行
tree时出现command not found(命令未找到)的报错,通常是未安装该工具安装步骤:
- 执行
sudo yum install tree命令(适用于使用 yum 包管理器的 Linux 系统);- 当系统提示
Is this ok [y/d/N]:时,输入y并回车,确认安装;安装结果解读:
若输出
Package tree-1.6.0-10.el7.x86_64 already installed and latest version,说明tree已是最新版本且已安装;出现
Nothing to do表示无需进行安装操作(因已安装最新版本)。
使用:
安装完成后,直接在命令行输入 tree [目录路径] 即可查看指定目录的树状结构(不指定路径则默认显示当前目录)。
tree指令演示
☋. 文件相关指令
1、touch指令(常见空文件)
语法:touch [选项] 文件
功能:touch 命令可更改文档或目录的日期时间(包括存取时间和更改时间),或者新建一个不存在的文件。
常用选项:
-a或--time=atime或--time=access或--time=use: 只更改存取时间。
-c或--no-create: 不建立任何文档。**
-d:**使用指定的日期时间,而非现在的时间。**
-f:**此参数将忽略不予处理,仅负责解决 BSD 版本touch指令的兼容性问题。**
-m或--time=mtime或--time=modify:**只更改变动时间。**
-r:**把指定文档或目录的日期时间,统统设成和参考文档或目录的日期时间相同。**
-t:**使用指定的日期时间,而非现在的时间。
2、rm指令(删除文件/目录)
语法:rm [] [dirName/dir]
**功能:**删除文件或目录(默认不写选项的情况下是删除文件)。
常用选项:
**
-f:**即使文件属性为只读(即写保护),也直接删除。
-i: 删除前逐一询问确认。
-r: 删除目录及其下所有文件。
3、cp指令(复制文件/目录)
当前我们先聚焦于单个文件和单个目录的复制操作 ,后续会补充多个文件复制到同一目录的用法(例如 cp file1 file2 file3 directory/ 这种场景)。
语法:cp [选项] 源文件或目录 目标文件或目录
**功能:**复制文件或目录,也可在复制过程中对文件进行重命名(若目标指定为新文件名,则复制后文件使用新名称)。
常见选项:
-r: 递归复制整个目录。**
-i:**复制前进行确认,如果目标文件已存在,询问是否覆盖。**
-f:**强制复制,不会询问覆盖确认。
cp -r 选项演示
cp -i 选项演示
cp -f 选项演示
按道理来讲我用了-f选项不应该不会询问是否覆盖了吗?为啥这依旧询问了,原因如下:

也就是说cp实际上是***'cp -i'*** ,所以依旧会询问是否覆盖,这里大家可能会有一个问题同时使用-i -f选项,会不会询问是否覆盖

从图中可以看出,询问是否覆盖了,也就是说***-i -f同时存在时,会询问是否覆盖的***
4、mv指令(移动/重命名文件)
语法:mv [选项] 源文件/目录 目标文件/目录
**功能:**移动(剪切)或重命名文件或目录。
常用选项:
**
-i:**在目标文件已存在时,询问是否覆盖。**
-f:**强制执行,不进行任何提示。
【场景1:剪切】

【场景2:重命名】

【场景3:剪切+重命名】

5、nano指令(文件编辑工具)
语法:nano [选项] 文件名
**功能:**文本编辑器,用于编辑文本文件(如配置文件、脚本、普通文档等),操作简单直观,适合初学者。
常用操作(核心快捷键):
保存与退出:
Ctrl + X(退出),按Y确认保存,回车确认文件名。不保存退出:
Ctrl + X后按N。光标移动:方向键(↑↓←→)直接移动。
删除字符:Backspace(删光标前)、Del(删光标处)。
撤销 / 重做:
Ctrl + U(撤销)、Ctrl + Y(重做)。搜索内容:
Ctrl + W,输入关键词后回车。替换内容:
Ctrl + \,依次输入查找内容和替换内容。
nano指令演示
nano编辑界面
▷. 系统/工具指令
1、whoami指令
功能:whoami指令用于查看当前正在使用Linux的用户名
whoami指令演示
2、which指令
功能:which指令查看可执行指令所在路径
which指令演示
后面的 color 是颜色配置,这部分我们不用管。第二行对应的是 ls 命令的路径,至于 alias 指令,下面会详细讲到
3、alias指令
**作用:**是给其他命令起一个别名。
alias相关事项:
1、直接用
alias命令临时设置的别名,退出当前 Shell 会话(比如退出登录、关闭终端)后就会失效,属于 "临时别名"。2、如果想让别名永久生效,需要把
alias命令写入 Shell 的配置文件(比如~/.bashrc、~/.bash_profile),之后每次登录都会自动加载这些别名3、目前不建议大家使用该指令为其他指令取别名,由于目前指令接触不多,很容易导致混乱。


第一张图是查看 "ll" 指令的信息,我们能发现 "ll" 指令其实对应的就是 "ls -l";第二张图是实际测试的结果,可以看到这两个指令的输出内容完全一致
4、man指令
语法:man [选项] 命令
功能:man 命令用于查看 Linux 命令的联机帮助手册,当记不清命令参数或想了解命令详细用法时,可通过它获取帮助
常用选项:
**
-k:**根据关键字搜索联机帮助。**
num:**只在第num章节查找。**
-a:**默认man命令找到第一个存在的章节手册页就显示且只显示这一个;而-a会显示所有存在的章节手册页,按章节顺序依次展示。
手册章节:
1、普通命令。
2、系统调用(如
open、write等,可方便查询调用函数所需头文件)。3、库函数(如
printf、fread)。4、特殊文件(即
/dev下的各种设备文件)。5、文件格式(如
passwd,会说明文件中各字段含义)。6、为游戏预留,由各游戏自行定义。
7、附件及一些变量(如
environ这类全局变量)。8、系统管理用的命令(只能由
root使用,如ifconfig)。


安装完成后,执行 man --version 可查看 man 自身版本

man指令演示
在查看手册的交互界面中按 q 会退出手册
5、重新认识指令
目前阶段来说指令的本质都是程序 。指令、程序、可执行程序都是一回事,并且也是文件。
【安装和卸载】
安装和卸载就是把可执行程序拷贝/删除到系统路径下
gcc test.c就是将test.c文件进行编译,并生成名为a.out的可执行程序

ls指令演示
cd指令演示
cp -r 选项演示
cp -i 选项演示
cp -f 选项演示
nano指令演示
nano编辑界面