零基础学Linux文件管理
首先,我们要明白在Linux系统中,系统会将所有资源都抽象成“文件”的形式,通过统一的文件操作接口(如读、写、打开、关闭)来管理这些资源,简化系统设计和使用;所以我们如何熟练使用这些文件管理命令是异常重要的。
一、touch命令
1.基本语法
touch 是 Linux/Unix 系统中一个灵活的命令,主要用于创建空文件和更新文件的时间戳(访问时间、修改时间等),功能看似简单,但在文件管理和脚本编写中非常实用。
touch [选项] 文件名/路径
2.核心功能和用法:
创建单个空文件:
touch test.txt # 若test.txt不存在,创建空文件;若存在,更新时间戳

创建多个空文件:
同时创建多个文件,用空格分隔文件名:
touch file1.txt file2.txt file3.txt # 一次性创建3个文件

结合通配符批量创建文件:
通过通配符(如 {} 序列)快速创建有规律的文件:
# 创建 img1.jpg 到 img5.jpg 共5个空图片文件
touch img{1..5}.jpg # 等价于 touch img1.jpg img2.jpg ... img5.jpg

-t : 用特定格式指定时间(精确到秒)
-t需按固定格式YYYYMMDDhhmm(YYYY为年,MM为月,DD为日,hh为时,mm为分):
touch -t 202510251450 test.txt

二、mkdir命令
1.基本语法:
mkdir 命令(全称 make directory)是 Linux/Unix 系统中用于创建新目录(文件夹) 的基础命令,功能简单但高频使用,常用于初始化项目结构、整理文件分类等场景。
mkdir [选项] 目录名/路径
2.核心功能与基础用法 :
创建单个目录:
在当前工作目录下创建一个新的目录,直接指定目录名即可:
mkdir docs # 在当前目录下创建名为“docs”的目录

若要在指定路径下创建目录(而非当前目录),需写明路径(绝对路径或相对路径):
# 用绝对路径在 /tmp 目录下创建“logs”目录
mkdir /tmp/logs
# 用相对路径在当前目录的“docs”子目录下创建“backup”目录(需确保“docs”已存在)
mkdir docs/backup

一次性创建多个目录:
同时创建多个同级目录,用空格分隔目录名:
# 在当前目录下同时创建 dir1\dir2\dir3 三个目录

创建多级目录(-p 选项):
若要创建嵌套的多级目录(如 a/b/c),直接创建会报错(因为父目录 a 或 a/b 可能不存在),需用 -p 选项(parent,递归创建父目录):
# 错误示例:直接创建多级目录(父目录不存在时)
mkdir a/b/c # 报错:mkdir: cannot create directory ‘a/b/c’: No such file or directory
# 正确用法:用 -p 递归创建所有不存在的父目录
mkdir -p a/b/c
# 结果:创建 a/ → a/b/ → a/b/c/ 三级目录(即使 a 和 a/b 原本不存在)

三、rm命令
1.基本语法:
rm 命令(全称 remove)是 Linux/Unix 系统中用于删除文件或目录的核心命令,功能直接但风险较高(删除后默认无法通过常规方式恢复),使用时需格外谨慎,尤其是批量删除或删除系统文件时。
rm [选项] 目标文件/目录
2.核心功能与基础用法:
删除单个文件:
直接指定文件名即可删除当前目录下的文件:
rm tets.txt # 删除当前目录的 test.txt 文件

删除指定路径的文件(绝对路径或相对路径):
rm /tmp/logs/error.log # 删除 /tmp/logs 目录下的 error.log
rm data/old.txt # 删除当前目录下 data 子目录中的 old.txt
绝对路径:

相对路径:

2.同时删除多个文件,用空格分隔文件名:
rm file1.txt file2.txt image.png # 一次性删除这3隔文件

3.关键选项与进阶用法(重点)
rm的选项决定了删除的“强度”和“交互方式”,核心选项如下:
(1) -r 或 -R :递归删除目录及其内容
必须掌握的选项!rm默认无法删除目录,-r(recursive)会强制递归删除目录下的所有文件、子目录,直至整个目录被删除。
# 删除名为“data”的目录(包括其下所有文件和子目录)
rm -r data
# 删除指定路径的目录(如 /tmp/old_data)
rm -r /tmp/old_data

(2)-f : 强制删除(不提示、不报错)
-f (force) 会跳过“确认提示”,直接删除文件;若文件不存在或权限不足(如只读文件),也不会报错(静默执行)。
# 强制删除 readme.txt (即使文件是只读的,也不提示直接删)
rm -f readme.txt

四、gedit 、 vim命令
1.gedit命令的基本语法
gedit 是 Linux 系统中默认的图形化文本编辑器(GNOME 桌面环境标配),操作直观、界面友好,类似 Windows 的 “记事本” 但功能更强(支持语法高亮、多标签、插件扩展等),适合新手或需要可视化编辑的场景,无需记忆复杂命令,纯鼠标操作即可。
gedit [选项] [文件名/路径...]
2.gedit命令的核心功能与基础用法
gedit [选项] [文件名/路径...]
若不指定文件名, gedit 会启动一个空白编辑窗口;
若指定文件名,会打开该文件(若文件不存在,保存时会创建)。

1.vim命令的基本作用
vim主要用于在命令行环境下(无图形界面也能运行)编辑文本文件,支持语法高亮、代码补全、多文件编辑等高级功能,既能处理简单的文本笔记,也能应对复杂的程序开发(如C、Python、Shell脚本等)。
2.vim命令的基本语法
vim [选项] [文件名/路径]
若指定1文件名(如 vim test.txt):若文件存在,打开该文件;若文件不存在,保存时会创建。
若不指定文件名(直接输入 vim ):启动一个空白编辑窗口。

3.核心:vim的三种基本模式(必须掌握!)
1. 浏览模式(命令模式) : 可以对文件内容进行浏览 , 也可以对vim的工作方式进行设定; " / "+关键字 : 关键字高亮显示 , 按 n 向下匹配 , 按 N 向上匹配;set noh : 取消关键字的高亮显示

进入到vim的浏览模式,浏览模式不能编辑文件
2.插入模式 : vim的编辑模式 , 只有在插入模式下才能对文件内容进行修改

在浏览模式中按<i>进入插入模式,在vim中鼠标不能控制光标用上下左右移动光标
3.退出模式 : 当文件内容修改完毕可以退出模式来保存或不保存修改内容

按<ESC>退出插入模式
按 :wq 保存更改
:q 当vim打开文件后未作任何操作可以直接退出
:q! 当vim打开文件后修改文件内容但不想保存可以强制退出
vim -o 同时打开多个文件:
vim -o lee1 lee2
# 上下模式打开两个文件
#<ctrl>+<w> <上|下>来转换控制窗口

vim的异常处理:
当vim编写文件时在未保存更改内容被强制关闭,那么vim进入异常模式,当再次用vim打开文件后文件出现异常例如下图:

处理方法如下 :
#[O] 只读打开文件
#[E] 继续编辑
#[R] 恢复未保存内容编辑
#[D] 删除.swp文件进入编辑
#[Q] 退出当前文件编辑
#[A] 退出vim程序
五、cat命令 、 head命令 、 tail命令 、 less命令
1.cat命令的基本语法:
cat 命令(全称 concatenate,意为 “连接”)是 Linux/Unix 系统中最基础的文本处理命令之一,核心功能是读取文件内容并输出到终端,还可用于创建文件、合并多个文件等,是查看短文本文件的首选工具。
cat [选项] [文件1] [文件2] ...
2.cat语法的核心功能:
查看文件内容(最常用):直接输出文件的全部内容,适合内容较少的文本文件(如配置文件、脚本、日志片段)。
查看单个文件:
cat test.txt # 输出 test.txt 的所有内容到终端

查看多个文件(按顺序连接输出):
cat part1.txt part2.txt # 先输出 part1.txt 内容,再输出 part2.txt 内容

显示文件内容并显示行号:
cat -n part1.txt

显示文件内容并显示非空行行号:
# 仅为非空行添加行号
cat -b notes.txt

1.head命令的基本语法:
head 命令是 Linux 系统中用于查看文件开头内容的工具,与 tail(查看末尾)相对应,默认显示文件的前 10 行,适合快速了解文件的头部信息(如配置文件的注释、日志的起始记录等)。
head [选项] [文件1] [文件2]...
若指定单个文件,head会输出该文件的开头部分:
若指定多个文件,head会按顺序输出每个文件的开头部分,并在每个文件内容前加上文件名作为标识:

2.head命令核心功能:显示文件开头的内容
显示单个文件的前10行(默认行为):
head part1.txt # 输出 part1.txt 的前10行内容

显示多个文件的前10行(带文件名标识):
head part1.txt part2.txt

head -数字:显示文件前n行
head -5 part1.txt

1.tail命令的基本语法:
tail 命令是 Linux 系统中用于查看文件末尾内容的工具,尤其适合查看动态增长的文件(如日志文件,新内容会不断追加到末尾),是日志监控、调试的高频命令。
tail [选项] [文件路径]
若指定单个文件,head会输出该文件的结尾部分:
若指定多个文件,head会按顺序输出每个文件的结尾部分,并在每个文件内容前加上文件名作为标识:

2.tail命令核心功能:显示文件结尾的内容
显示单个文件的后10行(默认行为):
tail part1.txt # 输出 part1.txt 的后10行内容

显示多个文件的后10行(带文件名标识):
tail part1.txt

tail -数字:显示文件后n行:
tail -5 part1.txt

1.less命令的基本语法:
分页查看文件内容,避免一次性加载整个文件(适合大文件):
less [选项] 文件名
直接输入 less 文件名 即可进入浏览模式,按q退出(必须记住!):

进入less模式后的核心操作(高频)
1. 浏览控制(翻页 / 滚动)
| 操作键 | 功能 |
|---|---|
上箭头 / k |
向上逐行滚动 |
下箭头 / j |
向下逐行滚动 |
空格键 / Ctrl+F |
向前翻一页(最常用) |
Ctrl+B |
向后翻一页(最常用) |
G |
跳转到文件末尾 |
g |
跳转到文件开头 |
数字+G(如 50G) |
跳转到指定行(第 50 行) |
2. 搜索功能(快速定位)
| 操作键 | 功能 |
|---|---|
/关键字(如 /error) |
从当前位置向下搜索关键字 |
?关键字(如 ?error) |
从当前位置向上搜索关键字 |
n |
跳转到下一个匹配结果(同方向) |
N |
跳转到上一个匹配结果(反方向) |
3. 其他实用操作
| 操作键 | 功能 |
|---|---|
v |
直接进入 vim 编辑当前文件(保存后 :wq 自动返回 less) |
q |
退出 less 模式(必记!) |
!命令(如 !ls) |
在 less 中执行 shell 命令(按回车返回) |
Ctrl+L |
刷新屏幕(解决内容乱码) |
六、cp命令、mv命令
1.cp命令的基本语法:
cp是Linux中用于复制文件或目录的核心命令,通过它可以将文件/目录从一个位置复制到另一个位置,是日常文件管理中最常用的命令之一。
cp [选项] 源文件/目录 目标文件/目录

2.cp命令的核心功能:
复制多个文件到目录:
一次复制多个文件到目标目录(目标必须是已存在的目录):
# 复制 a.txt、b.jpg、c.sh 到 data 目录
cp a.txt b.jpg c.sh data/
# 结合通配符批量复制(复制所有 .pdf 文件到 docs 目录)
cp *.pdf docs/
cp -r 源目录 目标目录 :
cp -r 1 2

注意事项:复制目录必须加 -r 或 -R ,否则会报错 cp: omitting directory(忽略目录)。
1.mv命令的基本语法:
mv是Linux中用于移动文件/目录或重命名文件/目录的核心命令,功能类似Windows的“剪切”操作,是文件管理中高频使用的工具。
将文件从当前目录移动到目标目录(目标目录必须存在):
mv [选项] 源文件/目录 目标文件/目录

若目标目录不存在,会报错 No such file or directory,需先创建目录(如 mkdir -p 目标目录)。
移动目录:
移动目录时,mv 会完整转移目录及其所有子内容(无需额外选项,自动处理递归):
# 将当前目录的 pics 目录移动到 /data 目录下
mv pics /data/
# 若 /data/pics 已存在,则 pics 会被移入 /data/pics 内(成为子目录)
核心逻辑;根据 “源” 和 “目标” 的位置关系,实现两种功能:
1.若 “源” 和 “目标” 在不同目录:执行 “移动” 操作(将源转移到目标位置)。
2.若 “源” 和 “目标” 在同一目录:执行 “重命名” 操作(将源改名为目标名称)。
2.mv命令的核心功能:
重命名文件/目录:
当 “源” 和 “目标” 在同一目录时,mv会将 “源” 重命名为 “目标”:
重命名文件:
mv old.txt new.txt # 将文件 old.txt 改名为 new.txt

重命名目录:
mv old_dir new_dir #将目录 old_dir 改名为 new_dir

移动文件到目标目录:
将文件从当前目录(或指定路径)移动到另一个目录,文件名不变:
示例:将 new.txt 文件移动到 /root/文档 目录
mv new.txt /root/文档 # 移动后路径为 /root/文档/new.txt

移动目录到目标目录:
将整个目录(包括内部文件)移动到另一个目录下:
示例:将 new_dir 目录移动到 /root/文档 目录
mv new_dir /root/文档

移动多个文件到目标目录:
可以同时移动多个文件到同一目录,用空格分隔源文件:
示例:将 a.txt 、 b.txt 移动到 docs 目录
mv a.txt b.txt docs/

批量移动文件(结合通配符):
通过通配符一次性移动多个符合条件的文件:
# 移动当前目录所有 .pdf 文件到 docs 目录
mv *.pdf docs/
# 移动以 "log_" 开头的文件到 /var/log/backup 目录
mv log_* /var/log/backup/
七、file命令、wc命令、ls命令:
file命令是 Linux 系统中用于识别文件类型的工具,它通过分析文件内容(而非文件名扩展名)来判断文件的真实类型,非常适合解决“文件名与实际类型不符”的问题。
1.file命令的基本语法:
file [选项] 文件名/文件路径
2.file命令的核心功能:
识别文件的类型:
输入:file test
输出:test: empty # 表示此文件为空文件

识别目录的类型:
输入:file docs/
输出:docs/: directory (明确是目录)

1.wc命令的基本语法:
wc 命令是 Linux 系统中用于统计文件内容的工具,主要功能是计算文件的行数、单词数、字节数(或字符数),非常适合文本处理和数据分析场景。
wc [选项] 文件名/文件路径

2.wc命令的核心功能:
wc 的常用选项对应三大核心统计维度,默认不指定选项时,会同时输出“行数、单词数、字节数” + 文件名。
| 选项 | 功能描述 |
|---|---|
-l |
仅统计行数(lines) |
-w |
仅统计单词数(words) |
-c |
仅统计字节数(bytes) |
-m |
仅统计字符数(characters,支持多字节字符如中文) |
-L |
显示文件中最长一行的长度(字节数) |
默认输出(无选项时):
如果直接执行 wc 文件名,会同时输出 行数、单词数、字节数 和文件名,按顺序排列:
# 假设文件 test.txt 内容为:
# Hello world
# Linux 命令
wc test.txt
# 输出:2 4 26 test.txt
# 解释:2行(-l)、4个单词(-w)、26字节(-c)、文件名 test.txt
单独统计行数(-l):
最常用的选项之一,例如统计代码行数、日志条目数等:
# 统计 test.txt 的行数
wc -l test.txt
# 输出:2 test.txt
# 统计当前目录下所有 .sh 文件的总行数(结合通配符)
wc -l *.sh
# 输出:
# 5 script1.sh
# 8 script2.sh
# 13 总用量 # 最后一行是所有文件的行数总和
单独统计单词数(-w):
统计文本中的单词数量(按空白分隔):
# 统计 test.txt 的单词数
wc -w test.txt
# 输出:4 test.txt (对应内容中的 "Hello" "world" "Linux" "命令")
单独统计字节数(-c):
统计文件的总字节数(可理解为文件大小的另一种表示,与 ls -l 显示的字节数一致):
# 统计 test.txt 的字节数
wc -c test.txt
# 输出:26 test.txt (与 ls -l test.txt 显示的大小一致)
统计最长行长度(-L):
查看文件中最长一行的字节数(常用于检查格式是否符合要求):
# 假设 test.txt 中最长一行为 "Hello world"(含空格和换行符,共12字节)
wc -L test.txt
# 输出:12 test.txt
进阶用法:
组合选项:
可同时使用多个选项,按指定顺序输出结果:
# 同时统计行数和单词数(-l 在前,-w 在后)
wc -lw test.txt
# 输出:2 4 test.txt
# 统计行数、最长行长度、字节数
wc -lLc test.txt
# 输出:2 12 26 test.txt
统计多个文件:
wc 会分别统计每个文件的结果,并在最后显示 “总用量”:
wc file1.txt file2.txt
# 输出:
# 3 5 30 file1.txt
# 2 4 26 file2.txt
# 5 9 56 总用量 # 行数、单词数、字节数的总和
1.ls命令的基本语法:
ls 命令是 Linux 系统中最基础也最常用的命令之一,用于列出目录中的文件和子目录,是日常管理文件系统的核心工具。
ls [选项] [目录路径/文件路径]

若不指定 [目录路径] ,默认列出当前工作目录的内容。
若指定具体文件路径,会直接显示该文件(通常用于确认文件是否存在)。
2.ls命令的核心功能:
以下就是 ls 选项的各种用法:
| 命令 | 描述 |
|---|---|
| ls | 显示当前目录中文件的名称 |
| ls file | 显示指定文件的名称 |
| ls dir | 显示指定目录中内容的名称 |
| ls -d dir | 显示目录本身的名称 |
| ls -l file | 显示文件的属性 |
| ls -l dir | 显示目录中内容的属性 |
| ls -ld dir | 显示目录本身属性 |
| ls -a dir | 显示目录中所有文件名称包括隐藏文件 |
| ls -s | 显示文件大小 |
| ls -S dir | 在目录中按文件容量从大到小进行显示 |
| ls -R dir | 递归显示目录中的内容 |
八、绝对路径和相对路径
在 Linux 系统中,路径是用于定位文件或目录的字符串,分为绝对路径和相对路径两种,核心区别在于 “起点” 不同。
1.绝对路径
定义:从系统的根目录(/)开始的完整路径,无论当前处于哪个目录,绝对路径都能唯一、准确地指向目标文件/目录。
特点:路径以 / 开头,包含从根目录到目标的所有层级目录。
2.相对路径
定义:以当前工作目录为起点的路径,依赖于用户当前所在的目录位置。
特点:路径不以 / 开头,可通过特殊符号简化层级表示
.:表示当前目录(可省略)。
..:表示父级目录(上一级目录)。
核心区别对比:
| 维度 | 绝对路径 | 相对路径 |
|---|---|---|
| 起点 | 根目录(/) | 当前工作目录 |
| 格式特征 | 以 / 开头 |
不以 / 开头,可含 . 或 .. |
| 稳定性 | 不依赖当前目录,始终有效 | 依赖当前目录,换目录后可能失效 |
| 适用场景 | 脚本、配置文件(固定路径) | 终端手动操作(简洁方便) |
九、pwd命令、cd命令
1.pwd命令的基本语法:
pwd 命令是 Linux 系统中用于显示当前工作目录的绝对路径的工具,全称是 “Prnit Working Directory”,是日常终端操作中确认位置的常用命令。
pwd [选项]
# 示例输出(假设当前在用户的文档目录):
# /home/user/Documents

1.cd命令的基本语法:
cd 命令是 Linux 系统中用于切换当前工作目录的核心命令,全称“Change Directory”,几乎所有终端操作都离不开它。
cd [目标目录路径]

若不指定 [目标目录路径],默认切换到当前用户的家目录(/home/用户名 或 ~ 表示)。
2.cd命令的核心功能:
根据目标目录的路径类型,cd 有多种灵活用法,结合绝对路径、相对路径和特殊符号使用更高效。
切换到绝对路径指定的目录:
直接使用从根目录(/)开始的完整路径,无论当前在哪个目录,都能准确切换。
# 切换到 /var/log 目录(绝对路径)
cd /var/log
# 切换到用户家目录下的 docs 子目录(绝对路径)
cd /home/user/docs
切换到相对路径指定的内容:
以当前工作目录为起点,通过 ./(当前目录,可省略)或 ../(父目录)表示层级关系。
# 切换到当前目录下的 docs 子目录(相对路径,等价于 cd ./docs)
cd docs
# 切换到当前目录的父目录(/home)
cd ..
# 切换到父目录的 public 子目录(/home/public)
cd ../public
# 切换到当前目录的子目录 nested 中的 sub 目录(./nested/sub)
cd nested/sub
切换到用户家目录:
家目录是每个用户的默认目录(路径为 /home/用户名,如 /home/zhangsan),有多种快捷方式:
# 方式1:直接 cd(无参数)
cd
# 方式2:使用 ~ 符号(~ 代表家目录)
cd ~
# 方式3:切换到其他用户的家目录(需权限)
cd ~lisi # 切换到用户 lisi 的家目录(/home/lisi)
切换到上一次工作目录(cd -):
cd - 会切换到 “上一次所在的目录”,类似于 “返回” 功能,适合在两个目录间快速切换。
# 假设当前在 /home/user/docs
cd /var/log # 切换到 /var/log
cd - # 切换回上一次的目录 /home/user/docs
切换到当前目录(cd .):
. 代表当前目录,cd . 执行后目录不变(看似无用,但在脚本中可用于标准化路径或强制刷新状态)。
cd . # 保持当前目录不变
多层目录快速切换:
结合相对路径和特殊符号,快速定位深层目录:
# 假设当前在 /a/b/c/d,切换到 /a/b/x/y
cd ../../x/y # 先回退两级(../../ → /a/b),再进入 x/y
十、文件批处理
通配符
是一类类特殊字符,用于模糊匹配文件名或路径,简化对多个组符合特定规则的文件 / 目录的操作。通过通配符,无需逐个输入文件名,就能批量批量处理多个文件(如查看、复制、删除等),是命令行中高效操作文件的重要工具。
* #匹配0~任意字符
? #匹配单个字符
[[:alpha:]] #匹配单个字符
[[:lower:]] #匹配单个小写字符
[[:upper:]] #匹配单个大写字符
[[:digit:]] #匹配单个数字
[[:alnum:]] #匹配单个字母或者字母
[[:punct:]] #匹配单个符号
[[:space:]] #匹配单个空格
[[::][::]] #一个类型或者一个类型
应用案例:备份/etc/目录中所有以".conf"并且名字中含有数字的文件,把文件备份到/tmp/confback 目录中,如果此目录不存在请自行建立
cp -r /etc/*[[:digit:]].conf* /tmp/confback

{} ##精确指定
{1..5} ##查找1到5这5个数
{a..c} ##查找a到c这三个字母
{1,3,5} ##查找1,3,5
应用案例:同时建立a-c三个文件
touch file{a..c}

[] ##模糊匹配,应用场景:要处理已经存在文件的时候
[a-c] ##a或者c或者是b
[1-3] ##1或者是2或者是3
[!a-c] ##不是a并且不是b并且不是c
[^a-c] ##除了a,b,c之外的
应用案例:已存在file{a..f}{1..5}30个文件,现在将带有3、5的文件移到目录test里
mv file?[35] test

更多推荐



所有评论(0)