Linux运维核心命令(入门)
1. Linux的目录结构
Linux的目录结构是一个树型结构,没有盘符这个概念,所有文件都只在一个”根目录 /“下,,不像Windows可以拥有多个盘符,如 C盘、D盘、E盘;

- Linux常见目录结构(高亮部分常接触):
目录 | 作用 |
/bin | 二进制命令所在的目录(普通命令 => 普通用户和超级管理员root) |
/boot | 系统引导程序所需要的文件目录,相当于Windows中的C盘 |
/dev | /device缩写,设备文件目录,磁盘,光驱 => /dev/sr0 |
/etc | 系统配置文件目录,启动程序,几乎所有的软件都会把自己的配置文件安装在/etc中 |
/home | 普通用户的家目录,默认用户数据存放目录,itheima账号 => /home/itheima文件夹 |
/lib | 共享库文件和内核模块存放目录,软件安装、运行依赖库文件.a、.so文件 |
/mnt | 临时挂载储存设备的挂载点,插入u盘、移动硬盘 => 先挂载 => /mnt中访问 |
/opt | 第三方应用软件包, 安装qq、游戏、wps办公软件 |
/proc | process进程目录,操作系统运行时,进程信息和内核信息存放在这里 |
/root | Linux超级权限用户root的家目录,超级管理员root => /root |
/sbin | 和管理系统相关的命令,【超级管理员用】,s = super超级 |
/tmp | 临时文件目录,这个目录被当作回收站使用 |
/usr | 用户或系统软件应用程序目录,类似Windows中的Program files |
- 总结说明
家目录: /home: 普通用户的家目录, 默认会在此目录下, 根据用户名构建一个子目录, 作为该用户家目录/root: 超级管理员root用户的家目录用于放置Linux命令的目录:/bin : 用于放置操作Linux系统的普通命令 例如 创建文件 创建文件夹 查看文件 ..../sbin: 用于放置管理Linux系统的命令 例如: 重启服务器 关闭服务器 用于安装软件的位置: /opt: 一般在安装第三方软件的时候, 通常放置到/opt目录下/usr: 一般是软件默认安装的位置Linux系统各种配置文件目录: /etc设备信息放置的目录: /dev临时存储文件的目录: /tmp注意: 在Linux中目录结构是一个树形结构, 没有盘符的概念, 最顶级的为 / 表示根目录2. Linux与目录相关命令
Linux目录的相关命令主要包括有pwd、ls、mkdir、cd、rmdir等, 如果把Linux的目录结构比作一个“文件柜”:
- pwd = 当前在文件柜的哪一层抽屉(显示当前位置)
- ls = 打开抽屉看看里面有什么(列出内容)
- mkdir = 增加了一个新的抽屉(创建目录)
- cd = 走进某个抽屉或文件夹(切换位置)
- rmdir = 扔掉一个空文件夹(删除空目录)
2.1 终端说明

2.2 基本导航命令
2.2.1 定位与查看(pwd、ls)
pwd(print working directory):
- 格式:pwd
- 作用:查看当前所在位置
ls(list show):
- 格式:ls [选项][路径]
作用 :ls 是英文单词list show的简写, 其功能为列出目录的内容,是用户最常用的命令之一
ls常用选项
ls -l与ll显示信息说明:
选项
含义
-a
all所有, 显示指定目录下所有子目录与文件, 包含隐藏文件
-l
list,以列表方式显示文件的详细信息
-h
配合 -l 以人性化的方式显示文件大小(文件大小 + 单位)
2.2.2 七日换与目录结构(cd、tree)
cd(change directory):
- 作用:更改当前的工作目录
- 格式:
命令
含义
cd
切换到用户主目录(root用户主目录是/root,其他用户是/home/用户名)等价于 cd ~
cd 目录
切换到指定目录下 => cd /etc
cd ..
切换到上级目录
普及:路径有两种写法绝对路径 :从根目录一级一级向下移动,不能越级。如/home/itheima 例如:访问根目录下的usr目录下local目录下的nginx文件夹 cd /usr/local/nginx => 路径不需要记忆,用到的时候,直接按Tab键(自动补全)相对路径 :以当前位置作为参考 例如:当前路径为/usr/local,cd nginx即可进入/usr/local/nginx
tree:树形结构可视化辅助工具
- 安装 tree 命令
dnf -y install tree # 查看目录结构 tree /home示例输出:
2.3 目录管理命令
2.3.1 创建目录(mkdir)
mkdir(make directory):
- 作用:mkdir 命令用于创建目录
- 格式:
mkdir [-p] dirName
参数:
-p:一次创建多级目录
2.3.2 删除空目录(rmdir)【了解】
作用:rmdir命令用于删除空目录
rmdir dirName
清屏命令: ctrl + l(好用)
2.4 综合练习
2.4.1 搭建一个【游戏存档】目录
任务:
- 在根目录创建 game_saves 目录,进入它
- 创建子目录 level1、level2、backup
- 在 backup 中创建 2023 和 2024 目录
- 删除 backup/2023,再尝试删除整个 game_saves(观察错误)
解答:
1. 在根目录创建 game_saves 目录,进入它 mkdir /game_saves cd /game_saves2. 创建子目录 level1、level2、backup mkdir level1 level2 backup3. 在 backup 中创建 2023 和 2024 目录 mkdir -p backup/2023 backup/20244. 删除 backup/2023,再尝试删除整个 game_saves(观察错误) rmdir backup/2023 cd / rmdir game_saves报错:rmdir: failed to remove 'game_saves': Directory not empty 注:rmdir只能删除空目录,game_saves里面还有目录,无法直接删除
2.4.2 搭建一个family目录
结构要求:
要求:用 tree 命令验证结构,最后删除整个目录(只用已学命令)。
解答:
mkdir -p family/parents/dad mkdir -p family/parents/mom mkdir -p family/children/son mkdir -p family/children/daughter# 一条命令完成搭建 mkdir -p family/parents/{dad,mom} family/children/{son,daughter}# 删除整个目录(非常麻烦,后面我们介绍简洁方便的删除方式) rmdir family/parents/dad rmdir family/parents/mom rmdir family/children/son rmdir family/children/daughter rmdir family/parents rmdir family/children rmdir family
3. Linux与文件相关命令
3.1 文件操作命令
3.1.1 创建文件(touch)
作用:touch命令创建新文件
格式:touch 文件名
案例演示:
注:touch命令不仅可以创建.txt文本文档,还可以创建python/java/go等脚本程序。如touch main.py需求一: 在家目录下,创建一个hello.java cd touch hello.java需求二: 在家目录下,创建一个a.txt cd touch a.txt
3.1.2 复制(cp)
作用:cp(copy)命令用来实现文件或者目录的复制
格式:cp [-r] 源文件位置... 目标路径
参数
说明
-r
递归,复制文件夹必须添加
需求一: 分别将家目录下的hello.java 和 a.txt 拷贝到 /usr/local cd cp hello.java /usr/local cp a.txt /usr/local 或者 cp hello.java a.txt /usr/local需求二: 将/usr/local 这个目录 拷贝到家目录下(~/表示家目录) cd /usr cp -r local /root cp -r local ~
3.2.3 移动(mv)
作用:mv(move)命令用于文件、目录的移动和重命名
格式:mv 源文件路径... 目标路径
注意:mv没有任何选项,移动文件和文件夹都可以
案例演示:
需求一: 将 /root目录下的disk.pl文件,移动到 /export/data 目录下 mkdir -p /export/data cd ~ mv disk.pl /export/data需求二: 将 /export目录移动到 /root目录下 cd / mv export ~重命名:
需求: 将root用户家目录的a.txt文件, 更名为 test.txt cd ~ mv a.txt test.txt需求二: 将test.txt 移动到 / 目录下,并改名 a.txt cd ~ mv test.txt / cd / mv test.txt a.txt或者 cd ~ mv test.txt /a.txt
3.1.4 文件上传与下载

3.1.5 删除(rm)
格式:rm [选项] 文件/目录路径
选项
说明
-r
是否启动递归删除方案(适用于删除目录的时候)
-f
是否需要强制删除,如果不添加, 会有一个询问的操作
# 前面提及的简洁方便删除family文件
rm -rf family
3.1.6 文本查找相关命令(find)
作用: 用于查找文档
语法: find 路径范围 选项1 选项1的值 [选项2 选项2 的值…]
选项
说明
-name
按照文档名称进行搜索(支持模糊搜索)
* : 通配符,匹配任意个任意字符
-type
按照文档的类型进行搜索,文档类型的值,f(file)表示文件,d(directory)表示文件夹
-size
用于根据文件大小查找文件。格式为 [+/-]n[单位]
+ 和 - 前缀:
- +n:查找大于 n 的文件。
- -n:查找小于 n 的文件。
单位说明:
- c:字节(默认单位)
- k:千字节(KB)
- M:兆字节(MB)
- G:吉字节(GB)
- b:512字节块(不常用)
-mtime
用于根据文件的修改时间(modification time)来筛选文件,参数值是一个整数,表示天数
- -mtime +n:查找修改时间超过 n 天前的文件
- -mtime -n:查找修改时间在 n 天以内的文件
- -mtime n:查找修改时间正好是 n 天前的文件
-exec
用于对 find 查找到的文件执行指定的命令. 它的语法比较特殊,需要用 {} 表示查找到的文件,并用 \; 结束命令
例如:
查找所有 .log 文件并删除
find /var/log -name "*.log" -exec rm -f {} \;
# 查询 在/usr/lib目录下大于100M的文件 find /usr/lib -size +100M -type f# 查询 在 /var/log下面 所有以 .log 结尾的文件 find /var/log -name "*.log" -type f# 查询 在 /var/log下面 所有以 .log 结尾的文件 并且文件大于10kb的 find /var/log -name "*.log" -size +10K -type f# 查询系统中,大于30天的文件或目录 find / -mtime +30# 查询 在 /var/log下面 所有以 .log 结尾的文件 并且文件大于10kb的 将查询到的内容执行删除操作find /var/log -name "*.log" -size +10K -type f -exec rm -rf {} \;# 查询 在/usr/lib目录下大于100M的文件 , 将并查询到的结果复制到/root目录下 find /usr/lib -size +100M -type f -exec cp {} /root \;
3.2 文件操作命令综合练习
3.2.1 日志文件管理与备份
某服务器日志目录 /var/log/app 需要定期清理和备份。要求:
- 创建 6 个不同日期的日志文件(如 access_20251101.log、access_20251102.log ...)
- 说明: 如何修改文件的最后时间
# 通过 touch -d 设置 touch -d "2023-10-01 12:34:56" example.txt说明: 表示将example.txt文件的最后修改时间为 2023-10-01 12:34:56
- 将 3 天前的日志文件复制到 /backup/old_logs 目录
- 删除 5 天前的日志文件
3.2.2 清理临时文件
某临时目录 /tmp/userdata 中存在大量临时文件(文件名包含 tmp_ 前缀),要求:
- 查找所有 24 小时内修改过的 tmp_* 文件并移动到 /tmp/recent
- 删除超过 30 天未修改的 tmp_* 文件
初始化数据: # 创建 userdata目录 mkdir -p /tmp/userdata cd /tmp/userdata # 在目录下, 创建一些以tmp_开头的文件 touch tmp_01.txt touch tmp_02.txt touch tmp_03.txt touch tmp_04.txt touch tmp_05.txt touch tmp_06.txt# 修改文件的最后修改时间, 以便于后续需求查询验证工作 touch -d '2025-11-01 15:00:00' tmp_01.txt touch -d '2023-08-15 15:00:00' tmp_03.txt touch -d '2026-03-01 15:00:00' tmp_05.txt touch -d '2025-02-25 15:00:00' tmp_06.txt# 需求一: 查找所有 24 小时内修改过的 tmp_* 文件并移动到 /tmp/recent # 查找所有 24 小时内修改过的 tmp_* 文件 cd /tmp/userdata find ./ -mtime -1 -type f -name 'tmp_*' # 并移动到 /tmp/recent# 验证: 目标目录是否存在 如果没有先创建 mkdir -p /tmp/recent # 执行移动操作: mv 要移动的内容 目的地 find ./ -mtime -1 -type f -name 'tmp_*' -exec mv {} /tmp/recent \; # 验证是否移动成功: # 步骤一: 查看 /tmp/userdata 下 02 和 04 是否存在 【正常应该是不存在】 # 步骤二: 查看 /tmp/recent 下 02 和 04 是否存在 【正常应该是存在】
3.2.3 查找特定文件并归档
某服务器 /usr/lib 目录下可能存在遗留的大文件(超过 100MB),要求:
- 查找所有大小超过 100MB 的文件。
# 检验: /usr/lib 是否存在 【存在】 # 需求实现 find /usr/lib -size +100M -type f#尝试校验: ll -h 跟上find查询到文件路径,确认是否是大于100M
- 将这些文件的路径记录到 /var/log/large_files.list。
注意: 目前, find目录执行完后, 直接将查询的结果, 输出到控制台, 需求要求直接输出到一个文件中, 此时相当于要改变输出的方式此时, 一般要使用的就是一个新的命令, 重定向符号 > 和 >> : 重定向符号作用: 将执行的结果, 通过重定向符号, 直接输出到另一个地方> 覆盖>> 追加使用格式: 命令1 > 目的地注意: 输出的目的地文件如果不存在, 重定向会自己创建写法: find /usr/lib -size +100M -type f > /var/log/large_files.list表示将查询的结果, 通过重定向的符号,覆盖到 /var/log/large_files.list文件中
- 将这些文件复制到 /archive/large_files 目录
# 验证: 复制的目的地是否存在,如果不存在, 需要先创建 mkdir -p /archive/large_files # 执行 find /usr/lib -size +100M -type f -exec cp {} /archive/large_files \;#校验: 直接进入到 /archive/large_files 查看是否有大于100M文件复制过来 cd /archive/large_files/ ll -h
3.3 编辑文件(vi、vim)
vi是visual interface的简称,是Linux中最经典的文本编辑器(Windows中的记事本)
vi的核心设计思想:让程序员的手指始终保持在键盘的核心区域,就能完成所有编辑操作
vi的特点:
- 只能是编辑文本内容, 不能对字体段落进行排版
- 不支持鼠标操作
- 没有菜单
- 只有命令
vim 是从vi发展出来的文本编辑器,支持代码补全、编译及显示效果等方面编程的功能提别丰富,在程序员中被广泛使用,被称为编辑器之神。
在CentOS Stream 9系统中,我们可以通过dnf命令安装vim编辑器:
dnf -y install vim
3.3.1 打开文件
vi a.txt # 直接打开文件
vim a.txt # vim是vi的增强版
vim +10 a.txt # 直接打开文件,并定位到第10行
vi/vim三种工作模式: 命令模式、插入模式(编辑模式)、末行模式(底行模式)
命令模式:复制、粘贴、移动光标、撤销与恢复
插入模式(编辑模式):只能编辑文件内容(写字)
底行模式(末行模式):保存文件、退出文件、显示行号、搜索关键词
3.3.2 命令模式
当我们通过vi/vim命令打开文件时,默认就处于命令模式
小技巧:进入vim编辑器,先查看左下角有没有提示信息,如果没有任何信息,代表你当前位于命令模式!
命令
功能
o
在当前行后面插入一空行
O
在当前行前面插入一空行
dd
剪切或删除光标所在行
ndd
从光标位置向下连续剪切或删除 n 行
yy
复制光标所在行
nyy
从光标位置向下连续复制n行
p
粘贴
u
撤销上一次命令,相当于Windows中的Ctrl + Z
gg
回到文件顶部
G
回到文件末尾
Ctrl + R
恢复,与u相对应
3.3.3 编辑模式
问题:如何进入编辑模式呢?
答:
i:在当前光标的前面插入内容
a:在当前光标的后面插入内容
o:在光标的后一行插入内容
O:在光标的前一行插入内容
问题:如何从编辑模式回到命令模式
答:按Esc键
3.3.4 底行模式
核心重点记住3个字母即可,:w、:q、! :x
在Linux操作系统中,文件必须先保存后退出!
!叹号代表强制,强制保存、强制退出、强制保存并退出!
命令
功能
:w 文件
另存为
:w
保存(ctrl + s)
:q
退出, 如果没有保存,不允许退出
:q!
强行退出, 不保存退出
:wq
保存并退出
:x
保存并退出 【建议运维选择】
:set nu
设置行号,取消行号使用:set nonu
:%s/旧关键词/新关键词/g
文本替换
:noh
取消高亮
/关键词
搜索某一关键词
:wq和:x区别?
答:如果文件内容有改变,两者的效果是一样的。如果文件内容没有改变,:x不会改变文件的最后修改时间,但是:wq会更新文件的最后修改时间。
运维工程师,强烈推荐使用:x
3.3.5 编辑常见问题
如果在打开某个文件时,弹出以上提示,那代表你这个文件之前没有保存就强制退出了,触发了Vim的备份机制,产生了一个.文件名称.swp交换文件。
以后每次打开之前的文件就会产生上面的提示,解决方案:
① 之前的修改不重要,可以直接删除的情况
- 直接回车,切换到错误的底部,然后按q,直接退出,然后执行删除操作
rm .源文件名称.swp② 之前的修改很重要,需要先恢复内容,然后再解决报错问题
- 第一步:直接回车,切换到错误的底部,找到回复菜单,一般是R,恢复文件内容
- 第二步:针对找回的内容进行:x保存并退出
- 第三步:删除刚才产生的交换文件
rm .源文件名称.swp
3.4 文件查看命令
- 1- cat命令【重要】
- 作用:从上往下查看文件内容,一次性加载所有数据,适合小文件查看
- 格式: cat 文件
案例说明: 需求: 查看家目录中anaconda-ks.cfg文件 cat disk.pl
- 2- more命令
- 用于分页查看文件内容的命令
- 格式:more filename
进入文件后,可使用的相关操作:空格键:向下滚动一页。 Enter键:向下滚动一行。 b:向上翻页(可能不支持所有系统)。 q:退出查看案例:more disk.pl
- 3- less命令【重要】
- less 命令与 more 类似,但功能更强大,它允许用户向前和向后滚动文件,同时提供了更多的操作选项
- 语法: less filename
进入文件后,可使用的相关操作:空格键:向下翻页。 b:向上翻页。 Page Up/Page Down:向上/向下滚动。 【通过方向键 上下来完成滚动】 q:退出查看。 /搜索词:搜索某个关键词,并跳转到该词的位置。 【可以检索操作】 n:跳到下一个匹配的搜索结果。 h:查看帮助信息案例演示:less disk.pl【退出操作】
强制退出: ctrl + c (大多数) ctrl + d (少数)其他退出方式:q quit exit
- 4- head命令【了解】
- 作用:查看文件的前N行内容,默认显示前10行
- 格式:head -N 文件
N: 表示从前往后看N行案例说明: 需求: 查看家目录中disk.pl文件的前10行 head disk.pl需求: 查看家目录中disk.pl文件的前20行 head -20 disk.pl
- 5- tail命令【重要】
- 作用: 用于从后往前看文件,并支持监控文件变化
- 语法:tail -[N][f] 文件
N: 表示从后往前看N行 f: 是否持续显示文件末尾内容例如:tail -100 xx.log 查看某个文件最后100行的内容tail -f xx.log 实施查看该文件的输出内容tail -100f xx.log 默认显示文件末尾100行的内容,并实时监测最新的数据后期主要使用这个命令。 来查看系统运行的日志额外学习了一个小命令: echo 打印输出命令, 用于进行输出到控制台例如: 输出 111echo '111'
- 6- wc命令
- 作用: 用于统计文件或输入中的行数、单词数和字节数
- 语法: wc [选项] [文件]
选项
说明
-l
统计行数(lines)
-w
统计单词数(words)
-c
统计字节数(bytes)
-m
统计字符数(characters)
-L
统计最长行的长度(length)
- 7- grep命令
- 作用: 在文件中直接找到包含指定信息的那些行,并把这些信息显示出来
- 语法: grep 要查找的内容 文件名
示例:grep network boot.log含义:在boot.log文件中,查找包含network的行grep network /var/log/*含义:在/var/log目录下的所有文件中,查找包含network的行扩充点: | 如何打印|: shift + 反斜杠按键 (英文模式下)| 表示管道符号格式: 命令1 | 命令2 | 命令3 ....作用: 将上一个命令的执行结果, 作为下一个命令的输入例如:cat a.txt b.txt | grep linux对cat执行结果,通过grep查询包含linux的行内容并不是所有的命令都支持管道符的









