【Linux】Linux 初探:历史溯源与常用指令速览

前言

Linux 的诞生与发展,是 “技术、商业、开源” 交织的缩影 —— 从军事驱动的起源,到硅谷模式的商业化,再到如今生态化的开源逆袭,它早已成为操作系统领域的核心力量之一。

本篇会从历史脉络、基础认知到实用指令逐步展开:先梳理 Linux 的发展历程,帮你建立对系统的宏观认知;再拆解操作系统、用户管理、文件路径等基础知识,筑牢入门根基;最后聚焦ls/pwd/cd等高频指令,通过实操式讲解让你快速上手日常操作。

无论是想了解 Linux 的 “来龙去脉”,还是想掌握实用技能,这篇内容都能帮你从 “陌生” 到 “入门”。

目录

一、相关历史介绍

☆ 起源篇・军事驱动

☆ 商业篇・硅谷模式

☆ 硬件分支・生态分化

☆ 开源篇・Linux 逆袭

二、前置知识

1、操作系统(OS)是什么

2、如何登录账号

3、如何创建和删除普通用户

4、xshell相关快捷键

5、文件

6、路径

7、' . ' 和 ' .. '

8、* 通配符

9、管道

────────核心命令解析────────

☊. 目录相关指令

1、ls指令(查看目录/文件)

2、pwd指令(查看当前路径)

3、cd指令(切换目录)

4、家目录(用户默认路径)

5、mkdir指令(创建目录)

6、rmdir指令(删除空目录)

7、tree指令(以树形显示目录结构)

☋. 文件相关指令

1、touch指令(常见空文件)

2、rm指令(删除文件/目录)

3、cp指令(复制文件/目录)

4、mv指令(移动/重命名文件)

5、nano指令(文件编辑工具)

▷. 系统/工具指令

1、whoami指令

2、which指令

3、alias指令

4、man指令

5、重新认识指令

一、相关历史介绍
☆ 起源篇・军事驱动
核心线: 军事需求 → 硬件突破 → 技术溢出
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:\ 等)开始,到目标文件或目录的完整路径,具有唯一性,能明确且唯一地定位到文件或目录。

相对路径:以当前所在的目录为起始参考位置,来描述目标文件或目录的路径,它的指向会随着当前所在目录的变化而变化。

以下这些都称为路径:

//Linux下:
[root@VM-8-14-centos div]# pwd
/root/div

//Windows下:
E:\C++开发代码\MetaFrame++
AI写代码
bash

问题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的可执行程序
————————————————
版权声明:本文为CSDN博主「蓝羊羊不蓝」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/2402_86350387/article/details/151901041

阅读剩余
THE END