前言
Linux 的诞生与发展,是'技术、商业、开源'交织的缩影——从军事驱动的起源,到硅谷模式的商业化,再到如今生态化的开源逆袭,它早已成为操作系统领域的核心力量之一。
本篇会从历史脉络、基础认知到实用指令逐步展开:先梳理 Linux 的发展历程,帮你建立对系统的宏观认知;再拆解操作系统、用户管理、文件路径等基础知识,筑牢入门根基;最后聚焦 ls/pwd/cd 等高频指令,通过实操式讲解让你快速上手日常操作。
Linux 操作系统起源于军事需求,经历商业化与开源发展。内容涵盖操作系统基础、账号管理、文件路径及通配符知识,详解 ls、pwd、cd、mkdir、rm、cp、mv、touch、nano、whoami、which、alias、man 等核心命令用法。旨在帮助初学者建立系统认知并掌握日常操作技能。

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

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

添加普通账号的步骤:
**创建账号:**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等命令可重新指定归属)。
*【Alt + 回车】:全屏
*【Ctrl + D】:退出当前 Shell 会话 / 交互式程序
***【ctrl+insert】:***复制 (如果不行,打开 Fn 配合使用)
***【shift+insert】:***粘贴
这里不支持 ctrl + c 和 ctrl + v 快捷键
当在电脑上进行操作时,实际上是通过操作系统来控制文件和文件夹。操作系统提供了图形用户界面 (GUI) 和命令行界面 (CLI),让你可以方便地浏览、创建、删除、移动和修改文件和文件夹。比如我们的桌面实际上是一个文件夹,存储了在桌面上看到的所有文件和快捷方式。

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

我圈的红色的就属于文件属性,然后我们可以观察到文件的大小为 0KB,但是实际上他只是指文件内容的大小为 0KB 代表是一个空文件,文件属性实际也会占内存的
绝对路径:从系统的根目录(如 Linux 中的 /、Windows 中的 C:\ 等)开始,到目标文件或目录的完整路径,具有唯一性,能明确且唯一地定位到文件或目录。
相对路径:以当前所在的目录为起始参考位置,来描述目标文件或目录的路径,它的指向会随着当前所在目录的变化而变化。
以下这些都称为路径:
//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 的整个文件目录结构是一个多叉树,属于树状结构:

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

Linux 下的隐藏文件:

. 代表'当前目录',是隐藏的特殊目录,./file.txt 表示'当前目录下的 file.txt';
.. 代表'上级目录',也是隐藏的特殊目录,../file.txt 表示'上级目录下的 file.txt';
在 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),如果要匹配隐藏文件,可使用.*(但需谨慎,可能匹配到.和..这两个特殊目录)
在 Linux 系统中,管道(用 | 符号表示)是一种非常实用的工具,它能让一个命令的输出直接成为另一个命令的输入,就像'数据的传送带'。
比如,我们想在当前目录下找到所有以 .txt 结尾的文件,还想统计这些文件的数量。可以用 ls *.txt | wc -l 这个命令组合。ls *.txt 会列出所有 .txt 文件,然后通过管道,把列出的结果传给 wc -l,wc -l 就会统计出这些文件的数量。
管道传递的是数据的拷贝,不是原始文件本身,而且数据是流式传递、即时处理的,处理完就销毁,不需要临时文件来存储,能让我们在 Linux 运维、服务器管理等工作中,更高效地对数据进行连续操作。
上述基础内容会在后续讲解中用到,要是现在不太明白,可以先继续往下看~
语法: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 指令演示
语法:pwd
**功能:**显示用户当前所在的目录
**常用选项:**无

pwd 指令演示
语法:cd [目录]
**功能:**改变工作目录。将当前工作目录改变到指定的目录下。
常用选项:
cd ..:返回上级目录
cd /home/litao/linux/:绝对路径
cd ../day02/:相对路径
cd ~:进入用户家目录
cd -:返回最近访问目录

cd 指令演示
家目录(Home Directory)是操作系统为每个用户分配的一个专用目录,用于存储该用户的个人文件、配置文件和数据
【windows 中的用户默认的家目录】
C:\Users\用户名
【Linux 下指定用户的家目录】
**对于 root 账号:**默认的家目录
/root—>超级管理员账号**对于普通用户:**默认的家目录
/home/新建的用户名
任何一个用户,首次登录所处的路径都是自己的家目录,关于这点可以使用 whoami 指令查看当前正在使用 Linux 系统的用户名
语法:mkdir [选项] dirname
**功能:**在当前目录下创建一个名为'dirname'的目录。
常用选项:
-p, --parents:可以是一个路径名称。此时若路径中的某些目录尚不存在,加上此选项后,系统将自动建立好那些尚不存在的目录,即一次可以建立多个目录。递归创建多个目录示例:
mkdir -p /home/user/newdir
与 mkdir 的对应关系:mkdir 用于建立目录,rmdir 则是删除目录的命令。
语法:rmdir [-p] [dirName]
**功能:**删除空目录。
常用选项:
-p:当子目录被删除后,如果父目录也变成空目录,就连带父目录一起删除。
功能: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 指令演示
语法:touch [选项] 文件
功能:touch 命令可更改文档或目录的日期时间(包括存取时间和更改时间),或者新建一个不存在的文件。
常用选项:
-a或--time=atime或--time=access或--time=use:只更改存取时间。
-c或--no-create:不建立任何文档。
-d:使用指定的日期时间,而非现在的时间。
-f:此参数将忽略不予处理,仅负责解决 BSD 版本touch指令的兼容性问题。
-m或--time=mtime或--time=modify:只更改变动时间。
-r:把指定文档或目录的日期时间,统统设成和参考文档或目录的日期时间相同。
-t:使用指定的日期时间,而非现在的时间。
语法:rm [] [dirName/dir]
**功能:**删除文件或目录(默认不写选项的情况下是删除文件)。
常用选项:
-f:即使文件属性为只读(即写保护),也直接删除。
-i:删除前逐一询问确认。
-r:删除目录及其下所有文件。
当前我们先聚焦于单个文件和单个目录的复制操作,后续会补充多个文件复制到同一目录的用法(例如 cp file1 file2 file3 directory/ 这种场景)。
语法:cp [选项] 源文件或目录 目标文件或目录
**功能:**复制文件或目录,也可在复制过程中对文件进行重命名(若目标指定为新文件名,则复制后文件使用新名称)。
常见选项:
-r:递归复制整个目录。
-i:复制前进行确认,如果目标文件已存在,询问是否覆盖。
-f:强制复制,不会询问覆盖确认。

cp -r 选项演示

cp -i 选项演示

cp -f 选项演示
按道理来讲我用了-f 选项不应该不会询问是否覆盖了吗?为啥这依旧询问了,原因如下:

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

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

【场景 2:重命名】

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

语法:nano [选项] 文件名
**功能:**文本编辑器,用于编辑文本文件(如配置文件、脚本、普通文档等),操作简单直观,适合初学者。
常用操作(核心快捷键):
保存与退出:
Ctrl + X(退出),按Y确认保存,回车确认文件名。不保存退出:
Ctrl + X后按N。**光标移动:**方向键(↑↓←→)直接移动。
**删除字符:**Backspace(删光标前)、Del(删光标处)。
撤销 / 重做:
Ctrl + U(撤销)、Ctrl + Y(重做)。搜索内容:
Ctrl + W,输入关键词后回车。替换内容:
Ctrl + \,依次输入查找内容和替换内容。

nano 指令演示

nano 编辑界面
**功能:**whoami 指令用于查看当前正在使用 Linux 的用户名

whoami 指令演示
**功能:**which 指令查看可执行指令所在路径

which 指令演示
后面的 color 是颜色配置,这部分我们不用管。第二行对应的是 ls 命令的路径,至于 alias 指令,下面会详细讲到
**作用:**是给其他命令起一个别名。
alias 相关事项:
1、直接用
alias命令临时设置的别名,退出当前 Shell 会话(比如退出登录、关闭终端)后就会失效,属于'临时别名'。2、如果想让别名永久生效,需要把
alias命令写入 Shell 的配置文件(比如~/.bashrc、~/.bash_profile),之后每次登录都会自动加载这些别名3、目前不建议大家使用该指令为其他指令取别名,由于目前指令接触不多,很容易导致混乱。


第一张图是查看'll'指令的信息,我们能发现'll'指令其实对应的就是'ls -l';第二张图是实际测试的结果,可以看到这两个指令的输出内容完全一致
语法: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 会退出手册
目前阶段来说指令的本质都是程序。指令、程序、可执行程序都是一回事,并且也是文件。
【安装和卸载】
安装和卸载就是把可执行程序拷贝/删除到系统路径下

gcc test.c就是将 test.c 文件进行编译,并生成名为 a.out 的可执行程序


微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online
将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online
将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online
通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online
将JSON字符串修饰为友好的可读格式。 在线工具,JSON美化和格式化在线工具,online