前言
Linux 的诞生与发展,是 “技术、商业、开源” 交织的缩影 —— 从军事驱动的起源,到硅谷模式的商业化,再到如今生态化的开源逆袭,它早已成为操作系统领域的核心力量之一。
本篇会从历史脉络、基础认知到实用指令逐步展开:先梳理 Linux 的发展历程,帮你建立对系统的宏观认知;再拆解操作系统、用户管理、文件路径等基础知识,筑牢入门根基;最后聚焦ls/pwd/cd等高频指令,通过实操式讲解让你快速上手日常操作。
无论是想了解 Linux 的 “来龙去脉”,还是想掌握实用技能,这篇内容都能帮你从 “陌生” 到 “入门”。
目录
Ⅰ、相关历史介绍
1.1【起源篇・军事驱动】
1.2【商业篇・硅谷模式】
1.3【硬件分支・生态分化】
1.4【开源篇・Linux 逆袭】
Ⅱ、基础知识
1、操作系统(OS)是什么
2、如何登录账号
3、如何创建和删除普通用户
4、xshell相关快捷键
5、文件
6、路径
7、' . ' 和 ' .. '
8、* 通配符
9、管道
Ⅲ、常见指令介绍
3.1 ls指令
3.2 pwd指令
3.3 cd指令
3.4 家目录
3.5 whoami指令
3.6 which指令
3.7 alias指令
3.8 touch指令
3.9 mkdir指令
3.10 tree指令
3.11 rmdir指令
3.12 rm指令
3.13 man指令
3.14 cp指令
3.15 mv指令
3.16 nano指令
3.17 重新认识指令
核心线:军事需求 → 硬件突破 → 技术溢出
核心线:政府 / 军方投入 → 资本介入 → 产品民用化
核心线:不同定位的硬件 + OS 组合
核心线:UNIX 启发 → 个人开发者破局 → 开源生态
操作系统是一款做软硬件管理的软件,而 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 用户名
【具体操作】:

当在电脑上进行操作时,实际上是通过操作系统来控制文件和文件夹。操作系统提供了图形用户界面(GUI)和命令行界面(CLI),让你可以方便地浏览、创建、删除、移动和修改文件和文件夹。比如我们的桌面实际上是一个文件夹,存储了在桌面上看到的所有文件和快捷方式。

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

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

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

Linux下的隐藏文件:

【 . 和 .. 的作用】
.(表示当前目录)..(表示上一级目录)
./file.txt 表示 “当前目录下的 file.txt”;../file.txt 表示 “上级目录下的 file.txt”; 在 Linux 等系统中,* 通配符代表匹配任意字符序列(包括空字符序列 ),常用于文件查找、命令参数匹配等,比如 ls *.txt 能列出当前目录下所有扩展名为 .txt 的文件。
【常见用法】:
需要注意的是, * 不会匹配以 . 开头的隐藏文件(如 .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 一行只输出一个文件。
我对指令的使用只演示前几个,后面的同理使用
语法:
pwd功能:显示用户当前所在的目录 常用选项:无

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

家目录(Home Directory)是操作系统为每个用户分配的一个专用目录,用于存储该用户的个人文件、配置文件和数据
【windows中的用户默认的家目录】
C:\Users\用户名
【Linux下指定用户的家目录】
对于root账号:默认的家目录__ /root—>超级管理员账号 对于普通用户:默认的家目录__ /home/新建的用户名
任何一个用户,首次登录所处的路径都是自己的家目录,关于这点可以使用whoami指令查看当前正在使用Linux系统的用户名
whoami指令用于查看当前正在使用Linux的用户名

which指令查看可执行指令所在路径

后面的color是颜色配置,我们不用管,第二行就是ls指令的路径,alias指令在下面会讲到
作用:是给其他命令起一个别名。
alias命令临时设置的别名,退出当前 Shell 会话(比如退出登录、关闭终端)后就会失效,属于 “临时别名”。alias命令写入 Shell 的配置文件(比如~/.bashrc、~/.bash_profile),之后每次登录都会自动加载这些别名

第一个图是查看 "ll" 指令,我们发现" ll "指令其实是"ls -l",第二个图是测试结果,发现两者输出都一样
语法:
touch [选项] 文件功能:touch命令可更改文档或目录的日期时间(包括存取时间和更改时间),或者新建一个不存在的文件。 常用选项:
-a 或 --time=atime 或 --time=access 或 --time=use:只更改存取时间。
-c 或 --no-create:不建立任何文档。
-d:使用指定的日期时间,而非现在的时间。
-f:此参数将忽略不予处理,仅负责解决 BSD 版本 touch 指令的兼容性问题。
-m 或 --time=mtime 或 --time=modify:只更改变动时间。
-r:把指定文档或目录的日期时间,统统设成和参考文档或目录的日期时间相同。
-t:使用指定的日期时间,而非现在的时间。
语法:
mkdir [选项] dirname功能: 在当前目录下创建一个名为 “dirname” 的目录。 常用选项:-p, --parents:可以是一个路径名称。此时若路径中的某些目录尚不存在,加上此选项后,系统将自动建立好那些尚不存在的目录,即一次可以建立多个目录。 递归创建多个目录示例:mkdir -p /home/user/newdir
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 [目录路径] 即可查看指定目录的树状结构(不指定路径则默认显示当前目录)。

与 mkdir 的对应关系:
mkdir用于建立目录,rmdir则是删除目录的命令。 语法:rmdir [-p] [dirName]适用对象: 具有当前目录操作权限的所有使用者。 功能: 删除空目录。 常用选项:-p:当子目录被删除后,如果父目录也变成空目录,就连带父目录一起删除。
作用范围: 可同时删除文件或目录。 语法:
rm [] [dirName/dir]适用对象: 所有使用者。 功能: 删除文件或目录(默认不写选项的情况下是删除文件)。 常用选项:
-f:即使文件属性为只读(即写保护),也直接删除。
-i:删除前逐一询问确认。
-r:删除目录及其下所有文件。
语法:
man [选项] 命令功能:man命令用于查看 Linux 命令的联机帮助手册,当记不清命令参数或想了解命令详细用法时,可通过它获取帮助 常用选项:
-k:根据关键字搜索联机帮助。
num:只在第 num 章节查找。
-a:默认 man 命令找到第一个存在的章节手册页就显示且只显示这一个;而 -a 会显示所有存在的章节手册页,按章节顺序依次展示。
手册章节:
open、write 等,可方便查询调用函数所需头文件)。
printf、fread)。
/dev 下的各种设备文件)。
passwd,会说明文件中各字段含义)。
environ 这类全局变量)。
root 使用,如 ifconfig)。


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


在查看手册的交互界面中按 q 会退出手册
当前我们先聚焦于单个文件和单个目录的复制操作,后续会补充多个文件复制到同一目录的用法(例如 cp file1 file2 file3 directory/ 这种场景)。
语法:
cp [选项] 源文件或目录 目标文件或目录功能: 复制文件或目录,也可在复制过程中对文件进行重命名(若目标指定为新文件名,则复制后文件使用新名称)。 常见选项:
-r:递归复制整个目录。
-i:复制前进行确认,如果目标文件已存在,询问是否覆盖。
-f:强制复制,不会询问覆盖确认。



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

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

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

【场景2:重命名】

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

语法:
nano [选项] 文件名功能: 文本编辑器,用于编辑文本文件(如配置文件、脚本、普通文档等),操作简单直观,适合初学者。 常用操作(核心快捷键):
Ctrl + X(退出),按 Y 确认保存,回车确认文件名。
Ctrl + X 后按 N。
Ctrl + U(撤销)、Ctrl + Y(重做)。
Ctrl + W,输入关键词后回车。
Ctrl + \,依次输入查找内容和替换内容。


下面的快捷键我就不具体操作了,都很简单
目前阶段来说指令的本质都是程序。指令、程序、可执行程序都是一回事,并且也是文件。
【安装和卸载】
安装和卸载就是把可执行程序拷贝/删除到系统路径下

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