Linux
本文章较长,创作不易,内容较干,建议先点赞收藏!
by yzyzyzyyzy
文章目录
Linux 基础知识
电脑:个人桌面操作系统(window和macos)、服务器操作系统(Linux)
手机:安卓、IOS、鸿蒙
计算机由硬件和软件组成,软件是用户和硬件之间的桥梁,操作系统是软件的一类
操作系统可以:
调度CPU进行计算
调度内存进行工作
调度硬盘进行数据存储
调度网卡进行网络通讯
……
发展历史
Linux由芬兰学生林纳斯·托瓦兹于1991年出于个人兴趣开发。它继承了Unix的设计思想,但关键性地采用了GPL开源协议,从而吸引了全球开发者共同参与。
组成
Linux由Linux系统内核和系统级应用程序两部分组成
内核:调度CPU、调度内存、调度文件系统、调度网关、调度IO等
系统级应用程序:出厂自带程序,可供用户快速上手操作系统(文件管理器、任务管理器、图片查看、音乐播放等)

发行版
内核是免费、开源的,代表任何人都可修改内核,并自行集成系统级程序
但是内核无法直接使用,需要配合应用程序才能使用
所以提供了内核+系统级程序的完整封装,称之为Linux发行版
国内外公司发布了很多发行版,我们学习CentOS和ubantu(辅助)
不同的发行版(基本操作命令100%相同)
Linux的环境
难道让自己的电脑重装一个Linux?不可能,Linux不适合日常办公
使用虚拟机来获得可用的Linux系统环境
虚拟机就是电脑中的电脑
安装虚拟机(vmware软件有提供虚拟化的能力)(我演示的是Window,Mac的安装在MacOS安装VMware Fusion视频中)
官网页面访问不稳定,使用我的网盘资源
通过网盘分享的文件链接: VMware
下载好后,点击安装程序,下一步
同意
可以自定义安装位置
我这里两个都不勾
点击下一步
点击安装
安装好后检查网卡,搜索控制面板,打开网络和Internet
点击“查看网络和任务”
点击“更改适配器设置”
查看到两个虚拟网卡VMent1和8即可
因为window10和11的打开方式可能不同,这里有个通用方法
win+R,输入ncpa.cpl,回车
![]()
Linux的安装
点击阿里镜像链接,下载
centos-7-isos-x86_64安装包下载_开源镜像站-阿里云
或者到我的网盘资源中下载
通过网盘分享的文件:CentOS
下载好后,打开虚拟机,点击新建一个

选择典型
选择刚刚下载的CentOS(自动检测到CentOS 7,并执行简易安装),点击下一步
设置名称密码
设定虚拟机存放位置
自定义硬盘大小
可以到“自定义硬件”设置更多,勾选“创建后开启”
启动要10-20分钟
点击中间蓝色,输入密码,登录
Linux的远程连接
对于操作系统的使用,有2种形式:
图形化页面、命令行形式
(无论是Window、Linux还是Macos,都支持这两种形式)
(但是无论是企业开发亦或是个人开发,使用Linux操作系统,多数为命令行,效率更高,更加直观,资源占用低,程序运行更稳定)
但是外部的Window和内部Linux系统进行各类交互时不方便,如内容复制粘贴、文件上传下载都要跨越Vmware软件
所以就有通过第三方软件FinalShell,远程连接到Linux操作系统,并操作
FinalShell的下载
我演示的是Window系统的,这里有Mac系统的FinalShell下载和连接:远程连接Linux系统
官网下载:FinalShell官网
点击置顶的
复制适合的地址下载
下载好后,点击文件
选择好安装的位置,点击安装(中途有依赖软件的安装,点击确定)
连接
在虚拟机界面右键打开终端
输入ifconfig,找到虚拟机ip地址
回到FinalShell连接
创建连接
双击连接
连接成功
遇到的问题
当我ifconfig时,网络接口没有启用(ens33是Linux系统的网络接口命名),FinalShell连接不了
![]()
基本步骤:1.使用管理员权限
![]()
2.启用ens33网络接口 > 使用dhclient获取IP > 检查NetworkManager状态sudo ifconfig ens33 up //启用 sudo dhclient ens33 //检查ip sudo systemctl status NetworkManager //检查状态![]()
3.验证网络连接ip addr show ens33![]()
4.在ifconfig检查一下,出现了ens33即可ifconfig![]()
如果希望系统启动时自动启用网络接口,需要编辑网络配置文件:# 查看并编辑网络配置文件 cat /etc/sysconfig/network-scripts/ifcfg-ens33 vi /etc/sysconfig/network-scripts/ifcfg-ens33确保文件有以下内容
TYPE=Ethernet BOOTPROTO=dhcp NAME=ens33 DEVICE=ens33 ONBOOT=yes
虚拟机快照
在学习过程可能损坏Linux操作系统
损坏的话重新安装一个Linux操作系统就会十分麻烦
VMware虚拟机支持为虚拟机制作快照,将当前的状态保存下来,以后可以通过快照回复虚拟机到保存状态
关机时制作快照效率高
右键打开快照管理器
点击“拍摄快照”,填写本次快照名称
回复某个状态
对于MAC:拟机快照
扩展-Win10配置WSL得到Ubuntu发行环境
Linux目录结构
window有多个盘符,如C盘、D盘、E盘
Linux只有一个根目录 / ,所有文件都在它下面
路径之间的层次关系表示:
Linux / 表示: /data/user/hello.txt /开头
Window **\ **表示:D:\data\hello.txt
Linux命令基础
命令行:即Linux终端(Terminal),一种命令提示符页面
命令:即Linux程序,一个命令就是一个Linux程序
基础格式
command [-options] [parameter]
command 命令本身
-options [可选的行为细节]
parameter [可选的参数]
如
以列表 l 的形式显示目录内的内容
ls -l /home/itheima
复制文件夹test1成为test2
cp -r test1 test2
ls命令
显示目录内的内容
ls [-a -l -h] [Linux路径]
-a -l -h是可选选项(-a列出全部目录包括隐藏,-l列表竖向展示更多信息,-h不可单独使用)
可以组合使用
ls -l -a
ls -la
ls -al
ls -lh //展示文件大小,如K M G
-h 选项会自动选择合适的单位:
Linux路径是可选参数(查看指定目录内容)
当不使用选项和参数,直接使用ls命令本体:以平铺形式,列出当前工作目录下的内容
Linux系统的命令行终端在启动时,默认加载HOME目录为当前工作目录,所以ls命令列出的是HOME目录的内容
HOME目录路径:/home/用户名 (我的就是/home/yzy)
打开根目录的方法
cd命令
进入目录
cd [Linux路径]
无选项,有可选参数
不写参数就返回到用户的HOME目录
参数写法:绝对路径(根目录为起点)、相对路径(当前目录为起点,开头不写斜杠)
特殊路径符:
… 表示上一级目录 cd … 切换上级目录 cd …/…切换到上二级目录
~ 表示HOME目录 cd ~ 切换到HOME目录 cd ~/Desktop 切换到HOME内的Desktop
. 表示当前目录
pwd命令
显示当前目录
pwd
无选项无参数
mkdir命令
创建新的文件夹
mkdir [-p] Linux路径
Linux路径参数必填(绝对路径/相对路径/特殊路径)
-p 表示自动创建不存在的父目录,适用于创建连续多层级的目录
//在当前目录下创建itheima
mkdir itheima
//在指定的绝对路径创建test
mkdir /home/itheima/test
//在当前目录创建test2
mkdir ./test2
//在home目录下创建test3
mkdir ~/test3
//创建itcast、good、666
mkdir -p itcast/good/666
清空命令:ctrl+L
注意事项:
请确保创建文件夹均在HOME目录内完成,在HOME目录外会涉及权限问题,无法成功(后续会讲解权限管控知识)
touch创建文件
创建新文件
touch Linux路径
Linux路径参数必填**(绝对路径/相对路径/特殊路径)**
无命令选项
cat命令
查看文件内容(直接全部显示出来)
cat Linux路径
Linux路径参数必填(绝对路径/相对路径/特殊路径)
无命令选项
more命令
查看文件内容(文件内容过多支持翻页)
more Linux路径
在查看过程中,通过空格翻页
通过q退出查看
cp命令
用于复制(copy)文件/文件夹
copy [-r -a] 参数1 参数2
-r 选项可选,表示递归(复制文件夹时带上)
-a 归档模式,用于完整保留所有信息和目录结构,是备份时最常用的选项。
参数1,Linux路径,表示被复制的文件/文件夹
参数2,Linux路径,表示复制去的地方
//复制单个文件
cp file1.txt /home/user/documents/
//复制多个文件
cp file1.txt file2.jpg /home/user/documents/
//复制目录
cp -r my_folder /home/user/backups/
//复制目录(备份)
cp -a my_project my_project_backup
//复制文件(备份)
cp file1.txt file1_backup.txt
//复制文件(并重命名)
cp file1.txt /home/user/backups/file1_backup.txt
mv命令
用于移动(move)或重命名文件/文件夹
move 参数1 参数2
参数1,Linux路径,表示被移动的文件/文件夹
参数2,Linux路径,表示移动去的地方
//移动一个文件
mv file1.txt /home/user/documents/
//移动多个文件
mv file1.txt file2.log /home/user/documents/
//移动目录
mv my_folder /home/user/backups/
//重命名文件
mv old_name.txt new_name.txt
//移动文件到另一个文件并重命名
mv file1.txt /home/user/documents/new_file_name.txt
//重命名文件夹
mv old_folder new_folder
cp old.txt new.txt 和 mv old.txt new.txt区别
cp时:
old.txt仍然存在,内容不变。new.txt被创建,内容是old.txt的副本。本质是 “复制 + 创建新文件”,而不是真正的重命名。你最终得到了两个文件。mv时:
old.txt消失了。new.txt出现了,它和之前的old.txt是同一个文件(相同的inode)。本质是**真正的、原子性的 “重命名” 操作。你始终只有一个文件。
rm命令
用于删除(remove)文件和文件夹
rm [-r -f] 参数1 参数2 …… 参数N
-r 用于删除文件夹
-f 表示强制删除(froce)(不会弹出提示信息)
普通用户删除内容不会弹出提示信息,只有root管理员用户删除内容会有提示,所以一般用户用不到-f选项
参数1 参数2 …… 参数N 用空格隔开
此命令支持通配符*,用来模糊匹配
*表示任意内容(包含空)
test*,表示匹配任何以test开头的内容
*test,表示匹配任何以test结尾的内容
*test*,表示匹配任何包含test的内容
rm -r *test*
为了练习,可以切换到管理员权限
su - root
输入密码:123456
但是!
which命令
前面的Linux命令,其实它们的本体是一个个二进制可执行程序,和Window中的exe一个意思
可以使用which命令,查看所使用的一系列命令的程序文件存放在哪里
which 要查找的命令
which cd
which pwd
find命令
1.按文件名查找文件
find 起始路径 -name "被查找的文件名"
可以切换到管理员练习
find / -name "test"
find / -name "test*" //使用通配符
2.按文件大小查找文件
find 起始路径 -size +|- n [kMG]
+、-表示大于和小于
n表示大小数字
kMG表示大小单位,k(小写字母)表示kb,M表示MB,G表示GB
find / -size -10k
find / -size +100M
grep命令
从文件中通过关键字过滤文件行
grep [-n] 关键字 文件路径
-n 可选选项,表示在结果中显示匹配的行的行号
关键字,表示要过滤的关键字,带有空格或其他特殊符号,建议使用" "将关键字包围起来
文件路径,表示要过滤内容的文件路径,可作为内容输入端口 (与后面的管道符相关)
grep "it" test.txt
grep -n "is" test.txt
wc命令
统计文件的行数、单词数量等
wc [-c -m -l -w] 文件路径
-c 统计bytes数量
-m 统计字符数量
-l 统计行数
-w 统计单词数量
文件路径,表示被统计文件,可作为内容输入(与后面的管道符相关)
wc test.txt //回车依此显示行数、单词数和字节数
管道符
即 | ,含义是:将管道符左边命令的结果,作为右边命令的输入
cat test.txt | grep itheima
cat test.txt | wc -l
cat test.txt | grep itcast | grep itheima
//统计文件中带有itcast关键字的关键字有几行
cat test.txt | grep itcast | wc -l
grep的命令是这样的
grep [-n] 关键字 文件路径
当文件路径为空时,就作为内容输入
wc命令同理
wc [-c -m -l -w] 文件路径
左边只要是能产生内容输出的命令即可,如ls
echo命令
在命令行内输出指定内容
echo 输出的内容
无需选项,输出的内容复杂时可用 " " 双引号
反引号`
飘号,被 `` 包围的内容会被作为命令执行,非普通字符
重定向符
将左侧命令的结果,覆盖写入到符号右侧指定的文件中
将左侧命令的结果,追加写入到符号右侧指定的文件中
凡是左边能产生结果的都能写到右边
tail命令
可以查看文件尾部内容,跟踪文件的最新更改
tail [-f -num] Linux路径
-f 表示持续跟踪
-num 表示查看尾部多少行,应用时写的是一个具体的数字(不填默认10行)
使用 -num
使用 -f (注意:两个选项不可同时使用)
新开一个窗口
原窗口监视到了
vi\vim编辑器
vi\vim是visual interface(视觉接口)的简称,是文本编辑器
替代了记事本编辑,vi是命令行下对文本文件进行编辑的绝佳选择
vim是vi的加强版本,兼容vi的所有指令,不仅能编辑文本,而且还具有shell程序编辑的功能,可以用不同颜色的字体来辨别语法的正确性
三种工作模式
注意:命令模式是核心中转,输入模式和底线命令模式互不相通
1.命令模式:所敲的按键编辑器都理解为命令,以命令驱动执行不同的功能,不能进行自由的文本编辑
进入
vi 文件路径
vim 文件路径(推荐使用)
如果文件路径表示的文件不存在,那么此命令会用于编辑新文件(纯文本文件,这里指的是文件内容的存储格式,拓展名可以是.txt,但对于Linux来说不是必须的)
如果文件路径表示的文件存在,那么此命令会用于编辑已有的文件
回车,进入到该文件的命令模式
2.输入模式:可以对文件内容进行自由编辑
仅供参考
| 从命令模式转到输入模式的命令 | 名称与功能描述 |
|---|---|
i | 插入 - 在光标当前位置之前开始插入。 |
a | 追加 - 在光标当前位置之后开始插入。 |
I | 行首插入 - 在光标所在行的行首(第一个非空白字符处)开始插入。 |
A | 行尾追加 - 在光标所在行的行尾开始插入。 |
o | 下方开新行 - 在光标所在行的下方新建一个空行并开始插入。 |
O | 上方开新行 - 在光标所在行的上方新建一个空行并开始插入。 |
s | 替换字符 - 删除光标所在的字符,并开始插入。 |
S | 替换整行 - 删除光标所在的整行,并开始插入。 |
0 (数字零) | 移动光标到当前行的绝对行首 (第一个字符) |
^ (Shift + 6) | 移动光标到当前行的第一个非空白字符处 |
$ (Shift + 4) | 移动光标到当前行的行尾 |
Ctrl + b (PgUp) | 向上翻页 |
Ctrl + f (PgDn) | 向下翻页 |
/ + 关键词 | 搜索指定关键词。按 Esc 取消 |
n | 重复上一次搜索,向下继续查找 |
N (Shift + n) | 反向重复上一次搜索,向上继续查找 |
dd | 删除光标所在行(实际上是剪切,内容被保存) |
ndd | 删除从当前行开始的向下 n 行(例如 5dd 删除5行) |
yy | 复制光标所在行 |
nyy | 复制从当前行开始的向下 n 行(例如 3yy 复制3行) |
p | 粘贴到光标所在行的下方 |
P (大写) | 粘贴到光标所在行的上方 |
u | 撤销上一次操作 |
Ctrl + r | 重做被撤销的操作(反向撤销) |
gg | 跳转到文件第一行 |
G (大写) | 跳转到文件最后一行 |
nG 或 :n | 跳转到文件第 n 行(例如 50G 跳转到第50行) |
dG | 从当前行开始删除到文件末尾 |
dgg | 从当前行开始删除到文件开头 |
d$ 或 D | 从光标处删除到当前行尾 |
d0 (数字零) | 从光标处删除到当前行首(修正:原表格为 dθ,应为 d0) |
x | 删除光标下的字符(相当于 Del 键) |
X (大写) | 删除光标前的字符(相当于 Backspace 键) |
执行相应指令(一般我只用i,键盘的上下键可移动光标位置),进入输入模式
最后Esc退出
试试搜索
![]()
点击n,往下查找(N反之)
![]()
最后Esc退出
3.底线命令模式:用于文件的保存和退出
从输入模式点击Esc退回命令模式,再输入 : 到底线命令模式,输入命令wq,回车,保存并退出
| 底线命令模式命令 | 功能描述 |
|---|---|
:w | 保存文件(Write) |
:q | 退出编辑器(Quit) |
:wq 或 :x | 保存并退出 |
:q! | 强制退出,不保存任何修改 |
:w! | 强制保存(在只读文件等情况下可能需要) |
:w [文件名] | 另存为新文件 |
:set nu | 显示行号 |
:set nonu | 隐藏行号 |
:set paste | 进入粘贴模式(防止自动缩进混乱) |
:set nopaste | 退出粘贴模式(适合粘贴外部内容,格式不会乱) |
:[行号] | 跳转到指定行(例如 :50 跳转到第50行) |
:[起始行],[结束行]d | 删除指定范围的行(例如 :10,20d 删除10-20行) |
:%s/旧文本/新文本/g | 全局替换文本(将文件中所有“旧文本”替换为“新文本”) |
添加的小知识点:文件内容的存储格式和拓展名
一个文件有它自己的存储格式和拓展名
Linux 通过
file命令检测文件的实际内容file myfile # myfile: ASCII text再例如
# 创建一个文本文件 echo "这是一个文本文件的内容" > original.txt # 复制并改成不同扩展名 cp original.txt test.jpg # 检查文件类型,依然识别到文件实际类型是纯文本 file test.jpg # ASCII text拓展名只是文件名的一部分,便于系统/程序和用户识别
有些程序依赖扩展名来判断文件类型
# 双击 test.jpg(纯文本) - 图片查看器可能报错 # 双击 document.pdf(纯文本) - PDF阅读器可能报错 # 因为它们实际是文本文件,但扩展名暗示了其他格式例如
# 示例:一个Python脚本 echo 'print("Hello")' > hello.py chmod +x hello.py # 正常执行 python hello.py # 成功 # 改成其他扩展名 mv hello.py hello.txt ./hello.txt # 直接执行会失败,因为系统不知道用python解释 python hello.txt # 仍然可以执行!
root用户
无论是Windows、MacOS、Linux均采用多用户的管理模式进行权限管理
在Linux系统中,分为超级管理员(root)和普通用户(如yzy)
root拥有最大的系统操作权限,而普通用户一般在其HOME目录内是不受限的,一单出了HOME目录,大多数地方只有只读和执行权限,无修改权限
su命令
切换用户Switch User
su [-] [用户名]
符号 - 可选,表示是否在切换用户后加载环境变量**(建议带上)**
用户名,省略默认为root
exit //切换用户后可以退回上一个用户,也可以使用快捷键Ctrl+d
普通用户切到其他用户,需密码
root切到其他用户,无需密码
sudo命令
su可以切换到root,但是不建议长期使用root用户,避免带来系统的损坏
我们可以使用sudo命令(获得认可的用户才有权利使用sudo),为普通命令授权,临时以root身份执行
sudo 其他命令
获得认可的用户才有权利使用sudo,我们需要为普通用户配置sudo认证
为普通用户配置sudo认证
切换到root用户,执行visudo命令,会自动通过vi编译器打开:/etc/sudoers
![]()
在文件末尾添加这段文本(NOPASSWD: ALL表示该用户使用sudo命令无需输入密码,中间是制表符Tab)
![]()
最后wq保存,试试以普通用户身份在根目录创建文件夹
![]()
用户组
Linux系统中可以:
配置多个用户
配置多个用户组
用户可以加入多个用户组中
Linux中关于权限的管控级别有2个:针对用户和针对用户组的权限控制
以下命令均在root下完成
groupadd命令
创建用户组
groupadd 用户组名
groupdel命令
删除用户组名
groupdel 用户组名
展示所有组
cat /etc/group
useradd命令
创建用户
useradd [-g -d] 用户名
-g 指定用户的组,不指定-g,会创建同名组并自动加入,指定的组需要已经存在
-d 指定用户的HOME路径,不指定,HOME目录默认在:/home/用户名
注意:组和用户的HOME目录是分开的,两个不同概念
可以切换用户
userdel命令
删除用户
user [-r] 用户名
-r 删除用户的同时顺带删除用户的HOME目录,不使用 -r HOME目录保留
id命令
查看用户所属的组
id [用户名]
可以指定被查看的用户,不指定则是自身
usermod命令
修改用户所属的组
usermod -aG 用户组 用户名
将指定的用户加入指定用户组
getent passwd命令
可以查看当前系统中有哪些用户
getent passwd
列出7份信息:
用户名:密码(x):用户ID:组ID:描述信息(无用):HOME目录:执行终端(默认bash)
getent group命令
getent group
列出3份信息:
组名称:组认证(显示为x):组ID
权限
认识权限信息
ls -l 命令可以显示权限细节
框1:展示文件、文件夹的权限控制信息
框2:文件、文件夹所属用户
框3:文件、文件夹所属用户组
权限细节10个槽位
例:drwxr-xr-x表示
- 这是一个文件夹
- 所属用户权限:r、w、x
- 所属用户组权限:r、w( - 表示无权限)
- 其他用户权限:r、x
rwx含义
| 指令 | 针对文件或文件夹 |
|---|---|
| r | 查看文件内容 |
| r(夹) | 查看文件夹内容(如ls命令) |
| w | 修改文件内容 |
| w(夹) | 在文件夹内创建、删除、改名等操作 |
| x | 可将文件作为程序执行 |
| x(夹) | 可以更改工作目录到此文件夹(如cd) |
修改权限信息
chmod命令
使用chmod命令修改文件或文件夹的权限信息
注意:只有文件、文件夹的所属用户或root用户可修改
chomod [-R] 权限 文件或文件夹
-R 对文件夹的全部内容应用同样的操作
例1(u表示用户权限,g表示用户组权限,o表示其他用户权限)
chomod u=rwx,g=rx,o=x hello.txt
例2(将文件夹test以及文件夹内全部内容权限设置为:rwxr-x–x)
chmod -R u=rwx,g=rx,o=x test
还有简便写法
权限可以用3位数字表示
第一位数字表示用户权限,第二位表示用户组权限,第三位表示其他用户权限
r=4 w=2 x=1
所以751表示:rwxr-x–x
例3(修改hello.txt权限为 r-x–xr-x)
chmod 515 hello.txt
chown命令
使用chown命令修改文件、文件夹所属的用户和用户组
注意:此命令只适用于root用户执行
chown [-R] [用户] [:] [用户组] 文件或文件夹
-R 对文件夹及其内全部内容应用相同规则
:用于分隔而已
例1(将hello.txt所属用户修改为root)
chown root hello.txt
例2(将hello.txt所属用户组修改为root)
chown :root hello.txt
例3(将hello.txt所属用户修改为root,用户组修改为itheima)
chown root:itheima hello.txt
例4(将文件夹test的所属用户修改为root并对文件夹全部内容应用同样规则)
chown -R root test
Linux使用操作
强制停止
某程序运行时强行停止,或者某条命令写错取消
ctrl + c
退出或登出
退出账户的登录或退出某些程序指定的专属页面
ctrl + d
历史命令搜索
history命令
history
结合grep
!命令
自动执行第一个前缀匹配的命令(适用于近期的自己记得的,第一个匹配的一定是自己想执行的)
!命令前缀
ctrl+r命令
先搜索(可修改),确认对了再执行
ctrl + r //进入搜索模式
输入要搜索的字母(如hi)
回车立即执行,或者按键盘左右键修改命令再执行
光标移动快捷键
跳到命令开头
ctrl + a
跳到命令末尾
ctrl + e
向左(右)跳一个的单词
ctrl + 左键(右键)
清屏
ctrl + l 或者 clear
Linux系统软件安装
对于Mindow,可以使用exe文件、msi文件这些安装包自行安装,也可以去Microsoft Store商店内安装
对于Mac,可以使用dmg文件、pkg文件这些安装包自行安装,也可以去AppStore商店内安装
对于Linux,同样支持这两种方式
yum命令
相当于Linux命令行内的“应用商店”
yum是RPM包软件管理器(RPM是Linux操作系统安装包格式),用于自动化安装配置Linux软件,并可以自动解决依赖问题
yum是自动化安装软件的工具
注意:要联网,并且需要root权限或有sudo特权
yum [-y] [install | remove | search] 软件名称
-y 自动确认,无需手动确认安装或卸载过程
install安装
remove卸载
search搜索
Linux系统软件管理
systemctl命令
Linux系统很多软件(内置或第三方)均支持使用systemctl命令控制:启动、停止、开机自启
能够被systemctl管理的软件,一般称为服务
systemctl start | stop | status | enable | disable 服务名
start启动 stop关闭 status查看状态 enable开启开机自启 disable关闭开机自启
系统内置的服务挺多的(均可以被systemctl控制)
NetworkManager 主网络服务
network 副网络服务
friewalld 防火墙服务
sshd、ssh服务(FinalShell远程登录Linux使用的就是这个服务)
下载第三方软件会自动注册为系统服务,因此可以被systemctl控制
安装一个软件ntp(其作用后续讲)
安装好后ntp软件自动注册服务为ntpd
apache服务器软件也可以自动注册
但是部分软件安装后没有自动集成到systemctl中,我们可以手动添加
后续讲解
软链接
在系统中创建软链接,可以将文件和文件夹链接到其他位置,(类似Window的快捷方式,打开属性可以看到它的目标位置)
ln -s 参数1 参数2
-s 选项,创建软链接
参数1 被链接的文件和文件夹
参数2 要链接去的目的地
例1(将etc目录内文件,链接到home目录内)
ln -s /etc/yum.conf ~/yum.conf
例2(将etc目录内文件夹,链接到home目录内)
ln -s /etc/yum ~/yum
通过 ls -l 查看
前缀 L 表示为软链接
软链接生效
日期和时区
date命令
date [-d] [+格式化字符串]
-d 按照给定的字符串显示日期,一般用于日期计算
格式化字符串:通过特定的字符串标记,来控制显示的日期格式
- %Y 年(2025)
- %y 年份后的两位数字(00……99)
- %m 月份(01……12)
- %d 日(01……31)
- %H 小时(00……23)
- %M 分钟(00……59)
- %S 秒(00……60)
- %s 自 1970-01-01 00:00:00 UTC 到现在的秒数
date
date +%Y-%m-%d
date +"%Y-%m-%d %H:%M:%S"
由于中间带空格,使用双引号包围格式化字符串
对于-d
date -d "+1 day" +%Y%m%d //显示后一天的日期
date -d "-1 day" +%Y%m%d //显示前一天的日期
date -d "+1 month" +%Y%m%d //显示下一月的日期
date -d "-1 month" +%Y%m%d //显示上一月的日期
date -d "+1 year" +%Y%m%d //显示下一年的日期
date -d "-1 year" +%Y%m%d //显示上一年的日期
- year年
- month月
- day天
- hour小时
- minute分钟
- second秒
修改Linux时区
系统默认时区不是中国的东八区
使用root权限修改时区
rm -f /etc/localtime //将系统自带的localtime文件删除
sudo ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime //并将/usr/share/zoneinfo/Asia/Shanghai文件链接为localtime即可
ntp程序
我们可以通过ntp程序自动校准系统时间
安装ntp
yum -y install ntp
启动并设置开机自启:
systemctl start ntpd
systemctl enable ntpd
当ntpd启动后会定期的帮助我们联网校准系统时间
也可以手动校准(root权限)
ntpdate -u ntp.aliyun.com
校准后告诉我们系统偏差了几秒
IP地址和主机名
IP地址
分为ipv4和ipv6地址,这里使用ipv4
这里用命令查看的都是局域网的内网ip
Window终端中,使用ipconfig查看(可查看到本机ip和配置的虚拟机网关ip)
注意:因为虚拟机创建时虚拟了一个自己的局域网,Window查看到的是虚拟机的网关地址
Linux终端中,使用ifconfig查看
这里看到的虚拟机ip就是在这个虚拟局域网分配到的私网ip,所以跟它网关地址的网络号相同
相关知识点我的另一篇文章:【揭秘网络传输】向北京的小王寄信,让我一次搞懂IP地址、子网掩码、路由器和端口号!
特殊IP地址
lo:本地回环网卡,127.0.0.1用于指代本机(和自己通讯,比如端到端)
0.0.0.0 特殊IP地址
- 可以用于指代本机
- 可以在端口绑定中用来确定绑定关系(后续讲解)
- 在一些IP地址限制中,表示所有IP的意思,如放行规则设置为0.0.0.0,表示允许任意IP访问(该作用后续接触到)
主机名
无论Windows或Linux系统,都可以设置主机名
window
Linux
查看主机名
hostname
修改主机名(root)
hostnamectl set-hostname 要改的名字
重新连接发现主机名已经改变
域名解析
ip地址映射成一串英文
先查看本机记录,在联网去DNS服务器(114.114.114.114或8.8.8.8)
所以在访问Linux系统时不想使用它的IP地址,而是使用字符串主机名,可以在本机文件自行配置这个映射 (比如FinalShell可以通过域名(主机名)连接)
配置主机名映射
搜索记事本,右键以管理员身份打开
点击文件 - 打开
先按这个路径进入到etc目录(C:\Windows\System32\drivers\etc)一进去先是空白
右下角选择所以文件
选择hosts文件
添加:IP地址(空格)主机名,这一行,保存即可
在FinalShell中,修改成主机名,点击应用-确定
双击连接,可能会出现这个
服务器有一个唯一的主机密钥,客户端会在第一次连接时记录它,以后每次连接都检查是否一致。
因为这是你第一次连这台虚拟机,FinalShell 没有它的密钥记录,所以弹出警告让你确认。
去朋友家串门比喻
- 第一次去:门卫不认识你朋友,拿出一张你朋友的照片(密钥指纹)问你:“是这个人吗?你确认一下。”
- 这张照片:就是
SHA256:Q9LiIWY...这一串,是你虚拟机的“身份证”。
- 只接受本次
FinalShell说:“行吧,这次我信你,但下次来我还要再问一遍。”
(适合临时串个门) - 接受并保存
FinalShell说:“没问题,我记住这张脸了,以后来都直接放行。”
(推荐选这个,是你自己的虚拟机就放心保存) - 取消
FinalShell说:“算了,我不进去了。”
(放弃连接)
一般点击“接收并保存”就连接成功了
虚拟机配置固定IP
这里只讲解用于Window的
为什么要固定IP:
当前我们虚拟机的Linux操作系统,其IP地址是通过DHCP服务获取的
DHCP:动态获取IP地址,即每次重启设备后都会获取一次,可能导致IP地址频繁变更(对于使用IP远程登录虚拟机和本机配置的域名映射都是不利的)
1.在VMware Workstation中配饰固定IP
打开虚拟网络编辑器
获得管理员权限
选择VMent8,更改子网IP(这里表示一个网段,即我们的IP地址使用范围是192.168.88.0~192.168.88.254),确认子网掩码如图,最后点击NAT设置
确认网关是88.2
2.接着在Linux系统中修改固定IP
打开Linux服务器终端,获取root权限,编辑指定文件
vim /etc/sysconfig/network-scripts/ifcfg-ens33
编辑文件
3.最后执行
先停止网络服务
systemctl stop network
卸载网卡模块
ifconfig ens33 down
重新加载网卡模块
ifconfig ens33 up
启动网络服务
systemctl start network
最后ifconfig检查
注意:如果设置了主机名访问,记得修改本电脑的配置文件
网络传输
ping命令
可以通过ping命令,检查指定的网络服务器是否可联通
ping [-c num] ip或主机名
-c 检查的次数,不使用则将无数次持续检查
例1(检查baidu.com是否联通)
要检查Ctrl+C停掉
其实实际ping的是IP地址,复制百度的ip加上-c试一下
wget命令
wget是非交互式文件下载器,可以在命令行内下载网络文件,下载到当前工作目录中
wget [-b] url
-b 可选,后台下载,将日志写入到当前工作目录的wget-log文件中
参数url:下载链接
与yum软件安装对比
yum是用来管理系统的软件,而wget是用来下载任何文件。它们之间的区别就像去“官方应用商店安装App”和“在浏览器里下载一个文件”的区别。
Ctrl+C可以取消下载,但中断而已,文件已经下载了一半(使用ls -l,文件显示红色),所以要记得删除
如果使用后台下载,想查看进度,打开当前目录的wget-log文件,使用如下命令可以跟踪
tail -f wget-log
curl命令
发送网络请求,可用于下载文件、获取信息等 (本质就是浏览器打开url)
curl [-o] url
-o 用于下载文件,当url是下载链接时,可以使用此选项保存文件
参数url,发起请求的网络地址
例1(向cip.cc发起请求)
“请求 cip.cc” 是一个用于快速查询本机公网IP地址的非常简便的方法。
它不是一个复杂的命令,而是一个基于HTTP协议的服务。当你向
cip.cc这个域名发起访问时,它会返回你的计算机当前所使用的公网IP地址以及其他一些网络信息。
例2(向百度发起请求)
例3(下载某个安装包,需要保存的)
如果你不指定 -o,curl 会把下载的所有数据直接打印到终端上,这通常会导致你的终端被一堆乱码刷屏(如果下载的是二进制文件)。
与wget区别
wget更像一个专注的“下载器”,其核心使命就是下载文件和整个网站。(自带保存)curl更像一个“数据传输的瑞士军刀”,其核心使命是与服务器进行各种复杂的交互,下载文件只是其功能的辅助
端口
端口分为物理端口和虚拟端口两类
物理端口又可称之为接口,是可见的,如USB接口、RJ45网口、HDMI端口等
虚拟端口指计算机内部的端口,是不可见的,是用来操作系统和外部进行交互使用的(如设备不同的程序对应不同的源端口或路由器在将私网ip转成公网ip时给每个连接分配的外部端口)
端口的分类
Linux系统是一个巨大的、拥有65535个房间的超级酒店,这6万多个房间(端口)分成3类使用:
(一)公认端口——VIP贵宾套房&酒店自营部门:
1~1023,通常用于一些系统内置或知名程序的预留使用,如SSH服务的22端口,HTTPS服务的443端口,HTTP服务的80端口。
(二)注册端口——可预定的标准客房:
1024~49151,任何应用程序(客人)都可以来这里预定一个房间,并长期驻守在这里,等待别人来连接。
- 3306号房: 通常被 MySQL数据库 预定。
- 8080号房: 经常被一些测试用的网页服务预定。
- 3389号房: 通常被Windows的远程桌面服务预定。
(三)动态端口——临时休息区/公共电话亭:
49152~65535,通常不会固定绑定程序,而是当程序对外进行网络链接时,用于临时使用。
这些房间不固定分配给任何服务。
当酒店里的一个客人(应用程序)想主动外出访问别的酒店(别的服务器)时,它会临时、随机地在这些房间里挑一个使用。用完就退房,这个房间号就释放了,可以给下一个外出的客人用。
当你电脑上的浏览器想访问百度。
- 浏览器(作为客户)会随机选择一个动态端口(比如54321号房)作为出发地
- 然后去连接百度的80号房(目的地)
提问:当我们向外界发送数据包时,数据包中的源ip的源端口就属于动态端口?
回答:正确的,当你主动向外界发送数据包时(比如用浏览器访问网站、用微信发消息),你的操作系统会从动态端口区(49152~65535)中随机挑选一个可用的端口号,作为你这次连接的源端口。
nmap命令
使用nmap查看端口占用情况
首先安装nmap(已安装的略过)
yum -y install nmap //root权限
问题:
如果一开始yum install nmap后出现错误信息 “Could not resolve host: mirrorlist.centos.org” ,表明你的CentOS系统无法连接到CentOS的官方软件仓库
直接使用国内镜像源解决问题(需要点时间)
# 一键更换为阿里云镜像源 curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo # 清理缓存并安装nmap yum clean all && yum makecache yum install -y nmap最后检验版本就行
![]()
查看本机端口占用
nmap 127.0.0.1
netstat命令
查看指定端口的占用情况
首先安装netstat(已安装的略过)
yum -y install net-tool
查询版本以确认安装
netstat -anp
| 特性 | netstat -anp | nmap 127.0.0.1 |
|---|---|---|
| 工作原理 | 查询内核状态。它直接从操作系统的网络协议栈中读取当前的连接状态表、路由表和网络接口信息。这是一个“内部调查”。 | 主动网络探测。它向目标IP地址(这里是127.0.0.1)发送特定的网络数据包(如SYN包),然后根据目标的响应来判断端口状态。这是一个“外部测试”。 |
| 观察视角 | 从内向外看。它告诉你本机正在监听哪些端口,以及本机与外部建立了哪些连接。 | 从外向内看。它模拟一个外部客户端,尝试连接你的机器,告诉你从网络上看,哪些端口是开放的。 |
| 信息范围 | 非常全面。包括: 1. 所有监听端口(LISTEN) 2. 所有活动连接(ESTABLISHED, TIME_WAIT等) 3. Unix域套接字(如果使用特定参数) 4. 关联的进程ID和名称(-p 参数) | 相对聚焦。主要显示: 1. 开放端口(open) 2. 关闭端口(closed) 3. 被过滤的端口(filtered,通常由防火墙导致) |
| 关键区别:防火墙影响 | 不受防火墙影响。因为它直接从内核读取信息,所以即使有防火墙阻止了外部访问,netstat 仍然能看到服务本身在监听。 | 受防火墙影响。如果本地防火墙(如 iptables, firewalld)规则阻止了某个端口,nmap 从回环地址扫描可能没问题,但从外部IP扫描时,该端口会显示为 filtered(被过滤)而不是 open(开放)。 |
| 显示进程信息 | 是(使用 -p 或 -lp 参数)。可以直接看到是哪个程序(如 /usr/bin/python3)在占用哪个端口。这是 netstat 的一个巨大优势。 | 否。nmap 本身无法直接告诉你是哪个进程在监听端口。需要额外使用 lsof -i :端口号 或 netstat 来查询。 |
| 性能和速度 | 极快。因为是查询本地表格,几乎是瞬时完成。 | 相对较慢。因为需要发送和接收网络包,并且有等待超时时间,尤其是扫描大量端口时。 |
| 主要用途 | 系统管理和故障排查。快速诊断“端口被谁占了?”、“我的服务启动了吗?”、“这台机器和哪些外部地址有连接?”。 | 安全审计和网络探测。确认“从网络视角看,我的机器暴露了哪些服务?”、“防火墙规则是否生效?”、“远程主机上运行了什么?”。 |
指定端口
netstat -anp | grep 端口号
也可以查看指定进程
可检查端口空闲
进程
程序运行在操作系统中,被操作系统所管理(注册为一个进程):每一进程都有进程ID
Window

ps命令
查看进程
ps [-e -f]
-e 显示出全部进程
-f 以完全格式化的形式展示信息(展示全部信息)
一般用ps -ef
从左到右分别是:
- UID:进程所属的用户id
- PID:进程的进程号id
- PPID:进程的父id(启动此进程的其他进程)
- C:此进程的CPU占用率(百分比)
- STIME:进程的启动时间
- TTY:启动此进程的终端序号(显示?:表示非终端启动,是系统启动)
终端启动:就像你手动打开一个软件(如记事本、浏览器),它和你的当前操作会话紧密相关。
系统启动:就像开机后自动在后台运行的服务(如病毒防护、网络管理),它与任何用户的登录无关。
- TIME:进程占用CPU的时间
- CMD:进程的启动路径和启动命令
现在启一个新的标签页,一边执行tail卡在那里,一边执行ps -ef
找到tail启动的进程
但是
结合grep
ps -ef | grep tail
下面那一条相当于上面的命令本身
可以过滤时间
![]()
也可以是进程号,用户ID等等
kill命令
关闭进程
在Windows系统中,可以通过任务管理器选择进程后,点击结束进程从而关闭它
同样,在Linux中,可以通过kill命令关闭进程
kill [-9] 进程ID
-9 强制关闭进程。不选用此选项,则会向进程发送信号要求其关闭,但是是否关闭看进程自身的处理机制
例1(结束tail进程)
kill 111914
例2(强制结束tail进程)
kill -9 125444
主机状态监控
系统资源监控top命令
查看CPU、内存使用情况,类似Windows的任务管理器
默认每5秒刷新一次,回车执行时默认清屏,每次刷新覆盖掉之前的信息,按q或ctrl + c退出
top
top命令内容详解(上半部分)
- 第一行:

top-命令名称,17:31:16-当前系统时间,up 2:42-启动了2小时42分钟,3 users-3个用户登录,load-1分钟、5分钟、15分钟负载
系统平均负载是指在一定时间内,系统处于可运行状态和不可中断状态的平均进程数
- 对于单核CPU:
- Load = 1.00:意味着 CPU 刚好满负荷工作。
- Load < 1.00:表示 CPU 还有空闲资源。
- Load > 1.00:表示有进程在排队等待 CPU 资源。
- 对于多核CPU:
- 你需要将 Load 值除以 CPU 核心总数来评估。
- 例如,一个 4核CPU 的系统:
- Load = 4.00 意味着所有核心都刚好满负荷。
- Load < 4.00 表示系统还有空闲的处理能力。
- Load > 4.00 表示进程开始排队,系统可能过载。
- 假设你的系统是一台 4核CPU 的机器:
- 那么负载 0.49 意味着平均只利用了
0.49 / 4 = 12.25%的 CPU 总能力。
- 第二行:

Tasks-总计204个进程,1 running-1个进程在运行,203 sleeping-203个进程睡眠,0 stopped-0个停止进程,0 zombie 0个僵尸进程
- 第三行:

%Cpu(s)-cpu使用率,us-用户CPU使用率,sy-系统CPU使用率,ni-高级优先级进程占用CPU时间百分比,id-空闲CPU率,wa-IO等待CPU占用率,hi-CPU硬件中断率,st-强制等待占用CPU率
一般只看用户CPU使用率us和系统CPU使用率sy这两个
- 第四五行:

KiB Mem:物理内存,KiB Swap:虚拟内存(交换空间)
total总量,free空闲,user使用,buff/cache:buff和cache占用
一般看物理内存
top命令内容详解(下半部分)
- PID:进程id
- USER:进程所属用户
- PR:进程优先级,越小越高
- NI:负值表示高优先级,正表示低优先级
PR(最终优先级) = 80 + NI(友好值)这里的80是一个基准值(在不同的内核版本或设置中可能不同,但逻辑不变)。NI 是 PR 的“偏移量”,你通过调整 NI 来间接地影响 PR。
NI(Nice):用户施加的“影响力”或“偏移量”
- 一个设置为
NI = -10的视频编码进程:它很“自私”,告诉内核:“我很重要,快把 CPU 时间给我!”- 一个设置为
NI = 15的备份进程:它很“友好”,告诉内核:“我不着急,等别人都不用 CPU 的时候再处理我就行。”关键点:
- 普通用户只能 降低 优先级(将 NI 值调为 正数)。
- 只有 root 用户 才能 提高 优先级(将 NI 值调为 负数),以防止普通用户垄断系统资源。
PR(Priority):内核看到的“真实”优先级
- 在 普通进程 中,它的取值范围是 0 到 39。
- 对于 实时进程,它的取值范围是 0 到 99(此时会显示为
RT)。如何理解:
- PR 值越小,进程优先级越高,越容易被调度器选中运行。
- VIRT:进程使用虚拟内存,单位KB
- RES:进程使用物理内存,单位KB
- SHR:进程使用共享内存,单位KB
- S:进程状态(S休眠,R运行,Z僵死状态,N负数优先级,I空闲状态)
- %CPU:进程占用CPU率
- %MEM:进程占用内存率
- TIME+:进程使用CPU时间总计,单位10毫秒
- COMMAND:进程的命令或名称或程序的文件路径
top命令也支持选项
- -p 后面接PID:只显示某个进程的信息
- -d 后面接数字(秒):设置刷新时间,默认是5s
- -c 后面不接:显示产生进程的完整命令(COMMAND更加详细),默认是进程名
- -n 后面接数字(次):指定刷新次数,比如 top -n 3,刷新输出3次后退出
- -b 以非交互非全屏模式运行 (不清屏不覆盖像流水一样),以批次的方式执行top,一般配合-n指定输出几次统计信息,将输出重定向到指定文件,比如 top -b -n 3 > /tmp/top.tmp(写到指定文件中)
没有-b,只输出当前终端大小能显示的那部分进程
-b,有 "完整输出"的概念,完整地输出所有收集到的进程信息
“非交互” = “只能看,不能摸”
你无法用键盘命令控制它,它只是单向输出信息。
“非全屏” = “不霸占整个窗口”
它不会清空你的终端屏幕,只是像
ls、cat等其他命令一样,在光标位置输出结果,然后结束。
- -i 不显示任何闲置(idle)或无用(zombie)的进程
- -u 查找特定用户启动的进程
交互式(清屏加刷新覆盖)
非交互式(展示全部,像瀑布流出)
top交互式选项
非-b选项启动
- h键 显示帮助画面
- c键 显示产生进程的完整命令,再按一下回复默认显示
- f键 选择需要展示的项目
键盘上下键,按空格控制是否显示
- M键 根据驻留内存大小(RES)排序
- P键 根据CPU使用百分比大小进行排序
- T键 根据时间/累计时间进行排序
- E键 切换顶部内存显示单位(按多几下切换到不同单位,如KiB、MiB、TiB)
- e键 切换进程显示单位(按多几下切换到不同单位,如k、m、p、t)
- l键 切换显示平均负载和启动时间信息
- i键 不显示闲置或无用的进程,再按一下回复默认显示
- t键 切换显示CPU状态信息
有时这样(看第三行)
有时
有时
- m键 切换显示内存信息
有时这样(看第4、5行)
有时
有时
按q退出
磁盘信息监控
df命令
查看硬盘的使用情况
df [-h]
-h 更人性化的单位显示
iostat命令
查看CPU、磁盘的相关消息
iostat [-x] [num1] [num2]
-x 显示更多消息
num1:刷新间隔
num2:刷新次数
参数解读(上面cpu使用情况通过top命令查看,关注加粗的就好了)
- rrqm/s: 每秒合并的读请求数
- wrqm/s: 每秒合并的写请求数
- r/s: 每秒完成的读 I/O 操作数
- w/s: 每秒完成的写 I/O 操作数
- rkB/s: 每秒读取的数据量(KB)
- wkB/s: 每秒写入的数据量(KB)
- avgrq-sz: 平均每次 I/O 操作的数据扇区数
- avgqu-sz: 平均 I/O 队列长度
- await: 平均每次 I/O 操作的等待时间(毫秒)
- r_await: 读操作的平均等待时间(毫秒)
- w_await: 写操作的平均等待时间(毫秒)
- svctm: 平均每次 I/O 操作的服务时间(毫秒)
- %util: 磁盘忙碌百分比
网络监控
sar命令
查看网络的相关统计(sar命令非常复杂,这里仅简单用于网络统计)
sar -n DEV num1 num2
-n 查看网络
DEV表示查看网络接口
num1:刷新间隔(num1和num2不填,查看一次结束)
num2:查看次数(只有num2不填,无限次数)
参数解读(关注加粗的)
- IFACE: 网络接口名称
- rxpck/s: 每秒接收的数据包数量
- txpck/s: 每秒发送的数据包数量
- rxkB/s: 每秒接收的数据量(KB)
- txkB/s: 每秒发送的数据量(KB)
- rxcmp/s: 每秒接收的压缩数据包数量
- txcmp/s: 每秒发送的压缩数据包数量
- rxmcst/s: 每秒接收的多播数据包数量
最底下有统计消息
环境变量
环境变量就是操作系统和应用程序的配置中心和通讯录,存放关键程序的路径和配置参数
输入运行命令时,就会从Path列出的目录中查找对应的运行程序
Path记录了系统执行任何命令的搜索路径
所以在Linux系统中,无论当前工作目录是什么,输入cd命令,都执行/usr/bin/cd这个程序
问1:什么时候需要查Path?
场景 例子 是否查Path 命令行直接输入命令 python,git clone,node app.js✅ 是 双击运行桌面快捷方式 点击Chrome图标 ❌ 否(有固定路径) 程序调用系统工具 Python调用 os.system("ping")✅ 是 在文件管理器双击程序 双击 C:\Program Files\App\app.exe❌ 否(有完整路径) 脚本中调用外部命令 批处理文件调用 java -jar✅ 是
问2:除了Path,其他环境变量主要为应用程序提供运行时所需的配置信息,作用可分为四类:
1.指位置 - 告诉程序核心资源在哪
- 如
JAVA_HOME:JDK安装路径2.定环境 - 告诉程序运行在什么模式
- 如
NODE_ENV:开发还是生产模式3.配密钥 - 安全地存储敏感信息
如
DATABASE_URL:数据库密码和地址如
API_KEY:第三方服务密钥4.改行为 - 改变程序的默认操作
- 如
HTTP_PROXY:设置网络代理核心区别:Path是系统用来找程序的,其他变量是程序用来读配置的。
环境变量是KeyValue性结构,即名称和值,等号相连
env命令
查看当前系统中记录的环境变量
env
$符号
在Linux系统中,$符号被用于取变量的值
$环境变量名
结合echo
echo $PATH
当和其他内容混在一起时,加 { }
echo ${PATH}ABC
自行设置环境变量
临时生效
即关闭此连接窗口无效
export 变量名=变量值
永久生效
对当前用户
针对当前用户生效,配置在当前用户的:~/.bashrc文件中
编辑
vi ~/.bashrc
新增一行后,保存退出
让文件生效
source .bashrc
验证
切换到其他用户就没用了
对所有用户
针对所有用户生效,配置在系统的:/etc/profile文件中
编辑(root权限)
vim /etc/profile
添加环境变量,保存退出
生效
source /etc/profile
验证
自定义环境变量PATH
环境变量记录了系统执行命令的搜索路径
实例:
创建mytest文件夹,在里面创建hello文件,在里面写入echo “Hello”
vi hello
给予权限,执行一下
写入PATH(所有用户的、系统的)
vim /etc/profile //root权限
加入一行(一定要在PATH后面追加,千万不要写错!!!)
生效
source /etc/profile
检查
系统的PATH环境变量是公用的,但是不同用户都要重新生效一次
问:用户自己的PATH路径里面能写关于root目录的吗?
可以写,但是有权限限制!
执行命令 → PATH找到文件 → 有目录执行权限 → 有文件读取权限 → 有文件执行权限具体看对应的文件夹和文件对这个用户权限
文件的上传和下载
可视化方法
直接下载到桌面的一个文件夹里面
命令窗口和下面的图形化界面的权限不同
![]()
上半部分只是暂时获得root权限,实际整个连接窗口还是以个人用户(yzy)登录,所以下面查看不到root文件夹
修改登录用户
上传则反过来,打开目标文件夹,鼠标拖拽即可
命令行方法
首先rz、sz命令需要安装
yum -y install lrzsz # 安装命令
sz命令
下载
sz 对应文件名
进入到文件对应的目录
Tab键会补全文件名
回车,即开始下载到桌面的fsdownload文件夹
rz命令
上传
rz 回车
弹出我们电脑的资源管理器
但是这种命令方法上传得很慢,大文件一般拖拽
压缩和解压
压缩格式
zip格式:Linux、Windows、MacOS常用
7zip格式:Windows系统常用
rar格式:Windows系统常用
tar:Linux、MacOS常用
gzip:Linux、MacOS常用
在Windows系统中常用的软件(winrar、bandizip等)都支持各类常见的压缩格式。
下面讨论如何在Linux系统中操作:tar、gzip、zip这三种压缩格式,完成文件的压缩、解压操作
tar命令
对于tar和gzip格式文件
tar格式,称为tarball,后缀.tar,只是将文件组装到一个.tar的文件内,并没有太多文件体积的减少,仅仅只是简单的封装
gzip格式,后缀.tar.gz或.gz,是用gzip压缩算法将文件压缩到一个文件内,可以极大减少压缩后的体积
tar [-c -v -x -z -C -f] 参数1 参数2 …… 参数N
-c 压缩模式
-v 显示压缩、解压过程,用于查看进度
-x 解压模式
-z gzip模式,不使用-z就是普通的tarball格式 (使用的话,一般处于选项第一个)
-C 选择解压的目的地,用于解压模式
-f 要创建的文件,或要解压的文件 (-f选项必须在所有选项中位置处于最后一个)
这么多限制怎么记!!?? 其实记住固定格式就行了
压缩成tar(-cvf)
将1.txt 2.txt 3.txt 压缩到test.tar文件内
tar -cvf test.tar 1.txt 2.txt 3.txt
压缩成gzip(-zcvf)
将1.txt 2.txt 3.txt 压缩到test.tar.gz文件内 (gzip模式)
tar -zcvf test.tar.gz 1.txt 2.txt 3.txt
解压tar(-xvf)
解压test.tar到当前目录
tar -xvf test.tar
解压test.tar到指定目录
tar -xvf test.tar -C /home/yzy
解压gzip(-zxvf)
解压test.tar.gz到当前目录
tar -zxvf test.tar.gz
zip命令
对于zip格式文件的压缩
zip [-r] 最终的压缩文件名 参数2 …… 参数N
-r 被压缩的包含文件夹时,需要使用-r选项
例1
将a.txt b.txt c.txt 压缩到test.zip文件内
zip test.zip a.txt b.txt c.txt
例2
将test、yzy两个文件夹和a.txt文件,压缩到test.zip文件内
zip -r test.zip test yzy a.txt
unzip命令
对于zip格式文件的解压
unzip [-d] 要解压的zip文件
-d 指定解压到的位置
例1
将test.zip解压到当前目录 (注意:同名内容会替换)
unzip test.zip
将test.zip解压到指定目录
unzip test.zip -d /home/yzy



被折叠的 条评论
为什么被折叠?



