Linux基础
1 Linux 系统概述
- Linux 发行时间: 1991年
 - Linux 的创始人: 林纳斯·托瓦兹
 - Linux 的吉祥物: 企鹅
 - 官网地址: https://www.kernel.org/
 
Linux 发行版 = Linux 内核 + 系统库 + 系统软件
Linux 的内核完全开源免费,但是 Linux 的发行版不一定免费。
Linux 是目前服务器端用到的最多的操作系统,支持 7 * 24小时高性能服务。 常见的 Linux 发行版:
- RedHat: 世界最大的 Linux 发行版厂商,已经被 IBM 收购
 - Ubuntu: 桌面操作系统做最好的
 - CentOS: 目前中国市场使用最多的 Linux 版本,目前已经被 RedHat 收购,但依然免费
 - Deepin: 深度公司开发的 Linux 版本,国内做的最好的 Linux 发行版
 
2 Linux 的目录结构
- Linux 和 Windows, Mac 一样, 都是文件系统, 采用文件和文件夹的形式来管理数据
 - 只不过在 Linux 操作系统中,是没有盘符概念的,任何文件(文件夹)都是从根目录开始进行拆分的
 - 且 Linux 中采用的是目录树结构,Windows 中采用的是森系结构
 
Linux 中常用的目录结构:
/etc:存放 Linux 配置文件的目录/opt:存放应用程序的目录/bin:终端指令集存放的目录/sbin:超级管理员用户使用的指令集,包括用户的创建删除等指令/home:普通用户的家目录/root:超级管理员的家目录,
3 基础命令
Linux指令的构成:command [-options] [arguments]
1  |  | 
3.1 文件与目录操作
3.1.1 路径导航
ls(列出内容)
ls 源自
list,用于查看指定位置的文件和子目录。
1  |  | 
选项可以随意自由组合,且选项的顺序可以随意调整。
1  |  | 
ls 参数可以查看指定路径的文件信息:
1  |  | 
cd(切换目录)
cd 源自 change
directory,用于改变工作目录。
- 绝对路径:从根目录出发,直到目标文件的目录层级
 - 相对路径:从当前目录出发,直到目标文件目录层级
 
1  |  | 
cd命令无需选项,只有参数,表示要切换到哪个目录下cd命令不写参数直接执行,表示回到用户的家目录
1  |  | 
pwd(当前路径)
pwd 源自 print work
directory,用于打印工作目录。
1  |  | 
3.1.2 增删改
mkdir(创建目录)
mkdir 源自 make
directory,用于创建新文件夹。
1  |  | 
touch(创建文件)
touch
用于修改文件时间戳或创建空文件。
touch可以创建一个新的文件,文件的扩展名随意,甚至可以是不存在的扩展名touch创建的文件如果存在不报错,但是没有新文件产生
1  |  | 
cp(复制)
cp 源自
copy,用于拷贝文件或目录。
1  |  | 
mv(移动/重命名)
mv 源自
move,用于 移动或重命名文件文件和目录,类似于
windows 剪切。
1  |  | 
rm(删除)
rm 源自 remove,用于
删除文件或目录。
1  |  | 
3.1.3 内容查看
cat(全量查看)
cat 源自
concatenate,连接、查看文件内容,常用于查看小型文本文件。
- 一次性输出全部内容,大文件显示不全,且过于消耗内存,适合小文件
 
1  |  | 
more(分页查看)
more
是一个分页查看工具,主要用于查看中型文本文件。
- 分页查看文件,支持手动翻页,更加灵活,但同样消耗内存。
 
1  |  | 
tail(查看尾部,日志监控)
tail
意为“尾部”,用于查看文件末尾内容 ,适合监控日志文件或实时查看新增内容。
1  |  | 
3.2 搜索与过滤
3.2.1 文件搜索
which(查找命令路径)
which 用于查找命令的完整路径。
1  |  | 
find(按条件递归查找文件)
find
通过条件筛选,用于查找符合条件的文件和目录。
- 不指定路径时:默认从当前目录递归搜索
 
1  |  | 
3.2.2 内容过滤
grep(文本匹配)
grep 源自 global regular expression
print(全局正则表达式打印),用于搜索符合条件的文本并打印所在行。
1  |  | 
wc(行/词/字节统计)
wc 源自 word
count,用于统计文本行数、单词数、字节数。
- 单词按照空格划分
 - 在默认的 UTF-8 编码下,1汉字 = 3字节,1汉字 = 1字符
 
1  |  | 
3.3 文本打印
echo(输出文本/变量)
echo 意为“回声”,功能类似于 Python 的
print,用于 输出文本或变量内容到标准输出(屏幕)。
1  |  | 
3.4 数据流控制
3.4.1
>/>>(输出重定向)
重定向通过符号控制数据的输入/输出方向,用于控制数据的流向(如输出到文件或管道)。
- 重定向是命令与文件间的传递,用于保存输出或读取文件输入
 
1  |  | 
3.4.2 |(管道符)
管道(Pipe | )用于将 前一个命令的输出
作为 后一个命令的输入,实现多命令协作处理数据。
- 管道符是命令与命令间的传递,用于多命令协作
 
1  |  | 
3.4.3 `/$()(命令替换)
反引号`用于 命令替换,可以将
命令的输出结果
作为字符串嵌入到其他命令中,现代脚本中可以使用 $( ) 语法。
1  |  | 
3.5 vi/vim 命令
vi 全称叫: Visual Interface,类似于 windows 的记事本,是
Linux 中最经典的文本编辑器。 vim 是 vi 的加强版本,兼容 vi
的所有指令,不仅能编辑文本,而且还具有 shell
程序编辑的功能,可以不同颜色的字体来辨别语法的正确性。
- 如果文件路径表示的文件不存在,那么此命令会用于编辑新文件
 - 如果文件路径表示的文件存在,那么此命令用于编辑已有文件
 
1  |  | 
vi / vim 编辑器的三种工作模式:
命令模式(默认/Command mode) 从键盘上输入的任何字符都被当做命令来解释,但输入的命令并不回显在屏幕上。若输入的字符不是 vi 的合法命令,vi 会响铃报警。
输入模式(Insert mode) 也就是所谓的编辑模式、插入模式。用户输入的任何字符都被 vi 当做文件内容保存起来,并将其显示在屏幕上。
底线命令模式(Last line mode) 底线命令模式也称命令行模式。此时 vi 会在屏幕最后一行显示一个
:作为末行模式的说明符,等待用户输入命令,多数文件管理命令都是在此模式下执行的。

- 命令模式:
iao进入编辑模式:进入底线命令模式dd删除当前行ndd向下删除 n 行yy复制当前行nyy向下复制 n 行p粘贴gg回到行首(文件开头)G回到行尾(文件结尾)u撤销Ctrl+r:反撤销/文本:查询文本并高亮显示
 - 底线命令模式:
:q退出不保存:q!强制退出不保存:wqwrite quit 退出并保存(快捷键ZZ):set nu显示行号:set nonu隐藏行号:noh/:nohlno highlight,取消高亮显示
 - 输入模式:
ESC回到命令模式
 
3.6 命令手册
大多数手册都是全英文的,可以通过重定向符:man ls > ls-man.txt,输出手册到文件,然后通过翻译软件查看。
1  |  | 
4 用户和权限
在 Linux
系统中,拥有最大权限的账户名为:root(超级管理员)。
普通用户的权限,一般在其 HOME 目录内是不受限的,一旦出了 HOME
目录,大多数地方,普通用户仅有只读和执行权限,无修改权限。
4.1 用户和用户组
Linux系统中可以:
- 配置多个用户
 - 配置多个用户组
 - 用户可以加入多个用户组中
 

Linux中关于权限的管控级别有2个级别,分别是:
- 针对用户的权限控制
 - 针对用户组的权限控制
 
4.1.1 用户组管理
getent group(查看所有用户组)
getent 源自 get entries(entry:
条目)。
1  |  | 
groupadd(创建用户组)
1  |  | 
groupdel(删除用户组)
1  |  | 
4.1.2 用户管理
getent passwd(查看所有用户)
1  |  | 
useradd(创建用户)
1  |  | 
userdel(删除用户)
1  |  | 
usermod(修改用户属性)
usermod 源自 user modify。
1  |  | 
id(查看用户)
1  |  | 
passwd(修改用户密码)
1  |  | 
4.1.3 切换用户及借调权限
su(切换用户)
su 源自 swith
user,用于切换用户。
- 使用普通用户,切换到其它用户需要输入密码,如切换到 root 用户
 - 使用 root 用户切换到其它用户,无需密码,可以直接切换
 
1  |  | 
切换用户后,可以通过
exit命令退回上一个用户,也可以使用快捷键:Ctrl+D。
sudo(借调权限)
sudo 源自 superuser
do,临时借调权限,为普通的命令授权,临时以 root
身份执行。
1  |  | 
权限记录在 etc 目录下的 sudoers 文件中,root 用户可以通过 visudo 命令修改。如果没有权限, 则会记录该行为到日志。
4.2 查看权限信息
使用 ll 显示如下信息结构:
1  |  | 
- 第 1 个字符:文件类型
-普通文件d目录,源自 directoryl软链接,源自 link
 - 第 2-10 个字符:权限(所有者、所属组、其他用户)
r读,源自 readw写,源自 writex执行,源自 execute-无
 

注意: 文件/目录的所有者和所属组是两个独立的属性,所有者并不是一定要在所属组内。
4.3 修改权限信息
4.3.1 chmod(修改文件权限)
chmod 源自 change
mode,用于修改文件或目录的访问权限,即读(r)、写(w)、执行(x)权限。
1  |  | 
- 符号模式(ugo+rwx)
 
1  |  | 
- 数字模式(八进制)
 
| 数字 | 权限 | 含义 | 
|---|---|---|
| 4 | r | 
读 | 
| 2 | w | 
写 | 
| 1 | x | 
执行 | 
| 0 | - | 
无权限 | 
1  |  | 
4.3.2 chown(修改文件归属)
chown源自 change
owner,用于修改文件或目录的所有者和所属用户组。
普通用户无法修改所属为其它用户或组,所以此命令只适用于 root 用户执行。
1  |  | 
5 Linux 实用操作
5.1 常用快捷键
1  |  | 
5.2 软件安装与服务管理
5.2.1 yum(软件包管理)
yum 是 Yellowdog Updater, Modified 的缩写,基于 rpm (Red
Hat Package Manager) 的高级封装,自动解决依赖 + 仓库管理。类似于 windows
或 mac 的应用商店,直接从中查找并安装。
| 功能 | 命令示例 | 说明 | 
|---|---|---|
| 安装软件 | yum install package | 
安装指定软件包及其依赖 | 
| 更新软件 | yum update package | 
更新指定软件包(不指定则更新所有) | 
| 卸载软件 | yum remove package | 
删除软件包(保留配置文件) | 
| 搜索软件 | yum search keyword | 
根据关键词搜索软件包 | 
| 列出已安装 | yum list installed | 
显示所有已安装的软件包 | 
1  |  | 
Debian/Ubuntu 系统中使用
apt包管理工具,和yum格式一样,更改为apt即可。
5.2.2 systemctl(服务管理)
systemctl 源自 system control,是 Linux
系统中用于管理 systemd 系统和服务管理器的核心工具。
| 功能 | 命令示例 | 说明 | 
|---|---|---|
| 启动服务 | systemctl start nginx | 
启动服务 | 
| 停止服务 | systemctl stop nginx | 
停止服务 | 
| 重启服务 | systemctl restart nginx | 
重启服务 | 
| 查看状态 | systemctl status nginx | 
显示服务运行状态和日志片段 | 
| 启用开机自启 | systemctl enable nginx | 
设置服务开机自启动 | 
| 禁用开机自启 | systemctl disable nginx | 
取消服务开机自启动 | 
1  |  | 
5.3 网络操作
5.3.1 诊断工具
ifconfig(ip配置)
ifconfig 源自 interface
configuration,用于查看和配置网络接口。
1  |  | 
ping(连通性测试)
ping 源自 Packet InterNet Groper ,发送
ICMP 请求包,测试网络是否通畅及延迟。
1  |  | 
netstat(端口监听)
netstat 源自 network
statistics,用于查看网络连接、监听端口、路由信息。
- IP地址,设备在网络中的唯一标识
 - 端口号,程序在设备上的唯一标识
 
1  |  | 
计算机程序之间的通讯,通过 IP 只能确定计算机,但是无法确定具体的程序。通过端口可以确定计算机上具体的程序,确保程序之间进行沟通。 Linux 系统端口号范围: 0 ~ 65535,其中0 ~ 1023已经被用作系统端口或者保留端口了。
5.3.2 数据传输
wget(下载文件)
wget 源自 web
get,用于从网络上下载文件,支持
HTTP、HTTPS、FTP。
1  |  | 
curl(发送请求)
curl 源自 client
URL,用于模拟浏览器发送请求,常用于测试
API、下载网页内容等,支持多种协议(HTTP、FTP、SFTP、SMTP)。
1  |  | 
lrzsz(上传和下载)
lrzsz 源自 Linux Receive ZMODEM Send
ZMODEM,也就是 Linux ZMODEM
收发工具,用于在终端环境中上传(rz)或下载(sz)文件。
1  |  | 
或者在 FinalShell、Tabby 等工具中直接拖拽即可上传下载。

5.4 进程管理
程序运行在操作系统中,是被操作系统所管理的。为方便管理运行的程序,每一个程序在运行的时候都会被操作系统注册为系统中的一个进程,并会为每一个进程都分配一个独有的 PID。
5.4.1 ps(查看进程)
ps 源自 process
status,用于显示当前系统的进程状态信息。
1  |  | 
5.4.2 kill(结束进程)
向进程发送信号(默认 SIGTERM),用于终止或控制进程。
| 信号编号 | 信号名 | 作用 | 
|---|---|---|
1 | 
SIGHUP | 
重启进程(重新加载配置) | 
2 | 
SIGINT | 
中断进程(等同 Ctrl+C) | 
9 | 
SIGKILL | 
强制终止(不可被忽略) | 
15 | 
SIGTERM | 
优雅终止(默认信号) | 
1  |  | 
5.5 软链接和硬链接
ln 源自
link,用于文件共享。
- 软链接:是一个独立的文件,内容为源文件的路径
 - 硬链接:是文件系统的目录项,直接指向源文件的 inode
 
| 特性 | 软链接(Symbolic Link) | 硬链接(Hard Link) | 
|---|---|---|
| 本质 | 类似 Windows 的快捷方式 | 是原始文件的另一个名称(指向相同 inode) | 
| inode 号 | 与源文件不同(新 inode) | 与源文件相同(共享 inode) | 
| 源文件删除 | 软链接失效(“断链”) | 硬链接仍有效(数据未删除) | 
| 文件大小 | 存储链接路径的字节数(较小) | 不额外占用空间(与源文件共享数据块) | 
| 命令 | ln -s 源文件 链接名 | 
ln 源文件 链接名 | 
- 软链接:若源文件被删除,软链接变成“悬空链接”(无法访问)
 - 硬链接:删除源文件后,硬链接仍能访问数据(直到所有硬链接被删除)
 
1  |  | 
inode(Index Node)是 Linux/Unix 文件系统中的一种元数据结构,用于存储文件的核心属性(如权限、大小、所有者、数据块位置等),但不包含文件名。每个文件或目录都有一个唯一的 inode,通过 inode 号标识。
5.6 压缩与解压缩
区分压缩协议好坏, 可以参考三个维度: 压缩速度(写),解压速度(读),压缩后文件占比。
5.6.1 tar
1  |  | 
- 压缩
 
1  |  | 
- 解压
 
1  |  | 
5.6.2 zip
- 压缩
 
1  |  | 
- 解压
 
1  |  | 
6 远程连接虚拟机
- vim 编辑 /etc/sysconfig/network-scripts/ifcfg-ens33 文件
 

- 修改 VMware 的信息
 

- 修改本机 VMNet8 网卡信息
 

- FinalShell 新建连接
 

另外要确保 services.msc 中 Vmware 的 DHCP 和 NAT
服务在启动状态。
