【Linux篇】Linux 初探:历史溯源与常用指令速览
Linux世界广阔 | 掌握这些知识 | 点击链接探索 | 咱们共同进步 | !!!!! |
文章目录
一、相关历史介绍
1.1【起源篇・军事驱动】
1.2【商业篇・硅谷模式】
1.3【硬件分支・生态分化】
1.4【开源篇・Linux 逆袭】
二、前置知识
2.1 操作系统(OS)是什么
2.2 如何登录账号
3.3 如何创建和删除普通用户
3.4 xshell相关快捷键
3.5 文件
3.5.1 文件的组成
3.6 路径
3.7 ' . ' 和 ' .. '
3.7.1 隐藏文件
3.7.2 . 和 .. 的作用
3.8 * 通配符
3.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 重新认识指令
一、相关历史介绍
1.1【起源篇・军事驱动】
- 1946/2/14:埃尼阿克(ENIAC)诞生,为计算导弹轨迹而生(军事用途)↘️ 触发:美苏冷战军备竞赛 → 推动计算机小型化(从庞然大物到可用系统)↘️ 关联:摩尔定律(芯片性能迭代)成为隐形动力
1.2【商业篇・硅谷模式】
- 起源逻辑:政府 + 军方出钱→高校 / 研究机构搞技术→商人(钱・华尔街)推动商业化变现↘️ 孵化产物:计算机 + 操作系统(从军工品变成老百姓能用的商品)↘️ 爆发结果:产品卖向全球→诞生大量公司(IBM、苹果、微软…)
1.3【硬件分支・生态分化】
- 高端闭环:苹果(硬件 + 软件 OS)→ 质量高、价格贵,“很多人都会买”
- 企业 / 科研:IBM(thinkpad 等)+UNIX → 面向企业、高校,稳定但小众
- 性价比路线:微软(软件 OS)+ 英特尔(硬件)→ 成本低,主打 “老百姓用得起”
1.4【开源篇・Linux 逆袭】
- 1991 年:林纳斯・托瓦兹(21 岁,赫尔辛基大学)→ 用了 UNIX 系统后想 “自己做一个”↘️ 行动:做了 Linux 内核 demo → 源代码免费公开↘️ 扩散:吸引工程师 / 爱好者参与→Linux 生态壮大(安卓基于 Linux、谷歌等公司采用)
二、前置知识
2.1 操作系统(OS)是什么
操作系统是一款做软硬件管理的软件,而 Linux 是操作系统的重要分支(类 Unix 系统),CentOS 作为基于 Linux 开发的发行版,自然继承了这一核心能力 —— 它能对服务器等设备的硬件资源(如 CPU、内存、存储等)和软件程序进行高效管理与调度,为各类应用运行提供稳定环境。
[操作系统作用]:
通过对下管理好软硬件资源的手段,达到对上提供良好的(稳定、快速、安全)操作/使用环境
我们所有的软件行为,全部都要自顶向下贯穿计算机的软硬件结构。
2.2 如何登录账号
以下操作基于已准备好的 CentOS 服务器(如本地虚拟机、实验室 / 公司提供的服务器等),默认已获取服务器的 IP 地址、登录用户名及密码,直接讲解通过命令行登录服务器的核心步骤
首先输出ssh 用户名@公网IP
,跳出SSH用户身份验证输入密码即可。SSH(Secure Shell,安全外壳)是一种网络协议,通过加密和认证机制实现安全访问和文件传输等业务。
3.3 如何创建和删除普通用户
添加普通账号的步骤
adduser 用户名
passwd(密码) 用户名
(输入密码时,是不显示密码的)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 用户名
[具体操作]:
3.4 xshell相关快捷键
【Alt + 回车】:全屏
【Ctrl + D】:退出
【ctrl+insert】:复制(如果不行,打开Fn配合使用)
【shift+insert】:粘贴
这里不支持ctrl+c和ctrl+v快捷键
3.5 文件
当在电脑上进行操作时,实际上是通过操作系统来控制文件和文件夹。操作系统提供了图形用户界面(GUI)
和命令行界面(CLI)
,让你可以方便地浏览、创建、删除、移动和修改文件和文件夹。比如我们的桌面实际上是一个文件夹,存储了在桌面上看到的所有文件和快捷方式。
3.5.1 文件的组成
文件 = 文件内容 + 文件属性
文件属性指的是文件上次修改的日期以及文件类型、文件名称等
我圈的红色的就属于文件属性,然后我们可以观察到文件的大小为0KB,但是实际上他只是指文件内容的大小为0KB代表是一个空文件,文件属性也会占内存的
3.6 路径
绝对路径:从系统的根目录(如 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的整个文件目录结构是一个多叉树,属于树状结构:
3.7 ' . ' 和 ' .. '
3.7.1 隐藏文件
在Linux中以 . 开头的文件叫隐藏文件
windows下的隐藏文件:
Linux下的隐藏文件:
3.7.2 . 和 .. 的作用
.
(当前目录)..
(上一级目录)
./file.txt
表示 “当前目录下的file.txt
”;../file.txt
表示 “上级目录下的file.txt
”;
3.8 * 通配符
在 Linux 等系统中,*
通配符代表匹配任意字符序列(包括空字符序列 ),常用于文件查找、命令参数匹配等,比如 ls *.txt
能列出当前目录下所有扩展名为 .txt
的文件。
常见用法:
- 匹配同一目录下的所有文件ls *会列出当前目录中所有非隐藏文件(不包含以 . 开头的文件)。
- 匹配特定后缀的文件ls *.txt会列出当前目录中所有以 .txt 结尾的文件(如 a.txt、file.txt 等)。
- 匹配前缀相同的文件ls doc*会列出所有以 doc 开头的文件(如 doc1.pdf、document.txt 等)。
- 结合路径使用ls /home/user/*.sh会列出 /home/user 目录中所有以 .sh 结尾的脚本文件。
需要注意的是,* 不会匹配以 . 开头的隐藏文件(如 .bashrc),如果要匹配隐藏文件,可使用 .*(但需谨慎,可能匹配到 . 和 .. 这两个特殊目录)。
3.9 管道
在 Linux 系统中,管道(用 |
符号表示)是一种非常实用的工具,它能让一个命令的输出直接成为另一个命令的输入,就像 “数据的传送带”。
比如,我们想在当前目录下找到所有以 .txt
结尾的文件,还想统计这些文件的数量。可以用 ls *.txt | wc -l
这个命令组合。ls *.txt
会列出所有 .txt
文件,然后通过管道,把列出的结果传给 wc -l
,wc -l
就会统计出这些文件的数量。
管道传递的是数据的拷贝,不是原始文件本身,而且数据是流式传递、即时处理的,处理完就销毁,不需要临时文件来存储,能让我们在 Linux 运维、服务器管理等工作中,更高效地对数据进行连续操作。
上述所有前置内容都会在下面的讲解中用到,目前看不明白的可以先往下看
三、常见指令介绍
3.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
一行只输出一个文件。
我对指令的使用只演示前几个,后面的同理使用
3.2 pwd指令
语法:
pwd
功能:显示用户当前所在的目录
常用选项:无
3.3 cd指令
语法:
cd [目录]
功能 :改变工作目录。将当前工作目录改变到指定的目录下。
常用选项:
cd ..
:返回上级目录
cd /home/litao/linux/
:绝对路径
cd ../day02/
:相对路径
cd ~
:进入用户家目录
cd -
:返回最近访问目录
3.4 家目录
家目录(Home Directory)是操作系统为每个用户分配的一个专用目录,用于存储该用户的个人文件、配置文件和数据
【windows中的用户默认的家目录】
C:\Users\用户名
【Linux下指定用户的家目录】
对于root账号:默认的家目录/root—>超级管理员账号
对于普通用户:默认的家目录/home/新建的用户名
任何一个用户,首次登录所处的路径都是自己的家目录,关于这点可以使用whoami指令查看当前正在使用Linux系统的用户名
3.5 whoami指令
whoami指令用于查看当前正在使用Linux的用户名
3.6 which指令
which指令查看指令所在路径
后面的color是颜色配置,我们不用管,第二行就是ls指令的路径,alias指令在下面会讲到
3.7 alias指令
alias命令的作用是给其他命令起一个别名。
目前不建议大家使用该指令为其他指令取别名,由于目前指令接触不多,很容易导致混乱。
第一个图是查看 "ll" 指令,我们发现" ll "指令其实是"ls -l",第二个图是测试结果,发现两者输出都一样
3.8 touch指令
语法:
touch [选项] 文件
功能:
touch
命令可更改文档或目录的日期时间(包括存取时间和更改时间),或者新建一个不存在的文件。常用选项:
-a
或--time=atime
或--time=access
或--time=use
:只更改存取时间。
-c
或--no-create
:不建立任何文档。
-d
:使用指定的日期时间,而非现在的时间。
-f
:此参数将忽略不予处理,仅负责解决 BSD 版本touch
指令的兼容性问题。
-m
或--time=mtime
或--time=modify
:只更改变动时间。
-r
:把指定文档或目录的日期时间,统统设成和参考文档或目录的日期时间相同。
-t
:使用指定的日期时间,而非现在的时间。
3.9 mkdir指令
语法:
mkdir [选项] dirname
功能:
在当前目录下创建一个名为 “dirname” 的目录。
常用选项:
-p, --parents
:可以是一个路径名称。此时若路径中的某些目录尚不存在,加上此选项后,系统将自动建立好那些尚不存在的目录,即一次可以建立多个目录。递归创建多个目录示例
mkdir -p /home/user/newdir
3.10 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 [目录路径]
即可查看指定目录的树状结构(不指定路径则默认显示当前目录)。
3.11 rmdir指令
与 mkdir 的对应关系:
mkdir
用于建立目录,rmdir
则是删除目录的命令。语法:
rmdir [-p] [dirName]
适用对象:
具有当前目录操作权限的所有使用者。
功能:
删除空目录。
常用选项:
-p
:当子目录被删除后,如果父目录也变成空目录,就连带父目录一起删除。
3.12 rm指令
作用范围:
可同时删除文件或目录。
语法:
rm [] [dirName/dir]
适用对象:
所有使用者。
功能:
删除文件或目录(默认不写选项的情况下是删除文件)。
常用选项:
-f
:即使文件属性为只读(即写保护),也直接删除。
-i
:删除前逐一询问确认。
-r
:删除目录及其下所有文件。
3.13 man指令
语法:
man [选项] 命令
功能:
man
命令用于查看 Linux 命令的联机帮助手册,当记不清命令参数或想了解命令详细用法时,可通过它获取帮助常用选项:
-k
:根据关键字搜索联机帮助。
num
:只在第num
章节查找。
-a
:默认man
命令找到第一个存在的章节手册页就显示且只显示这一个;而-a
会显示所有存在的章节手册页,按章节顺序依次展示。手册章节:
普通命令。
系统调用(如
open
、write
等,可方便查询调用函数所需头文件)。库函数(如
printf
、fread
)。特殊文件(即
/dev
下的各种设备文件)。文件格式(如
passwd
,会说明文件中各字段含义)。为游戏预留,由各游戏自行定义。
附件及一些变量(如
environ
这类全局变量)。系统管理用的命令(只能由
root
使用,如ifconfig
)。
安装完成后,执行 man --version
可查看 man
自身版本
演示下:
在查看手册的交互界面中按 q
会退出手册
3.14 cp
当前我们先聚焦于单个文件和单个目录的复制操作,后续会补充多个文件复制到同一目录的用法(例如 cp file1 file2 file3 directory/
这种场景)。
语法:
cp [选项] 源文件或目录 目标文件或目录
功能:
复制文件或目录,也可在复制过程中对文件进行重命名(若目标指定为新文件名,则复制后文件使用新名称)。
常见选项:
-r
:递归复制整个目录。
-i
:复制前进行确认,如果目标文件已存在,询问是否覆盖。
-f
:强制复制,不会询问覆盖确认。
按道理来讲我用了-f选项不应该不会询问是否覆盖了吗?为啥这依旧询问了,原因如下:
也就是说cp实际上是'cp -i',所以依旧会询问是否覆盖,这里大家可能会有一个问题同时使用-i -f选项,会不会询问是否覆盖
从图中可以看出,询问是否覆盖了,也就是说-i -f同时存在是,会询问是否覆盖的
3.15 mv
语法:
mv [选项] 源文件/目录 目标文件/目录
功能:
移动(剪切)或重命名文件或目录。
常用选项:
-i
:在目标文件已存在时,询问是否覆盖。
-f
:强制执行,不进行任何提示。
【场景1:剪切】
【场景2:重命名】
【场景3:剪切+重命名】
3.16 nano
语法:
nano [选项] 文件名
功能:
启动 nano 文本编辑器,用于创建、编辑文本文件(如配置文件、脚本、普通文档等),操作简单直观,适合初学者。
常用操作(核心快捷键):
保存与退出:
Ctrl + X
(退出),按Y
确认保存,回车确认文件名。不保存退出:
Ctrl + X
后按N
。光标移动:方向键(↑↓←→)直接移动。
删除字符:Backspace(删光标前)、Del(删光标处)。
撤销 / 重做:
Ctrl + U
(撤销)、Ctrl + Y
(重做)。搜索内容:
Ctrl + W
,输入关键词后回车。替换内容:
Ctrl + \
,依次输入查找内容和替换内容。
下面的快捷键我就不具体操作了,都很简单
3.17 重新认识指令
目前阶段来说指令的本质都是程序。指令、程序、可执行程序都是一回事,并且也是文件。
3.17.1 安装和卸载行为
安装和卸载就是把可执行程序拷贝/删除到系统路径下
补充:gcc test.c就是将test.c文件进行编译,并生成名为a.out的可执行程序
以上就是本篇文章的所有内容,在此感谢大家的观看!这是我的Linux笔记,希望对你在学习Linux旅途中有所帮助!