Linux 从零入门:命令行管理文件完整教程

适配:CentOS

受众:零基础 Linux 学习者,聚焦文件 / 目录全套操作,包含 FHS 规范、软硬链接、通配符匹配

一、Linux 文件系统 FHS 规范

1.1 什么是 FHS

FHS(Filesystem Hierarchy Standard)文件系统层次标准,统一 Linux 目录存放规则,保证不同发行版目录结构一致。

分为两层规范:

  1. 定义根目录 / 下各目录存放数据类型;
  2. 定义 /usr/var 下级子目录规范。

1.2 核心系统目录用途

目录 功能说明
/ 系统根目录,所有文件入口
/boot 系统开机启动内核、引导文件
/dev device 硬件设备文件,硬盘、网卡、光驱等
/etc 全局系统、软件配置文件目录
/home 普通用户家目录,/home/用户名存放个人文件
/root root 管理员专属家目录
/tmp 全局临时目录,10 天未访问文件自动删除
/var variable 可变数据:日志、数据库、缓存、网站数据
/run 运行时进程临时文件,重启自动重建
/usr Unix System Resource,系统软件、程序库、用户命令
/usr/bin 普通用户可执行命令
/usr/sbin 系统管理员管理命令
/usr/local 手动编译安装的自定义软件

1.3 文件路径两种类型

  1. 绝对路径:以 / 开头,完整定位文件,脚本中推荐使用
  2. 相对路径:不以 / 开头,基于当前所在目录跳转
  • . 代表当前目录
  • .. 代表上一级父目录
  • ~ 代表当前用户家目录

二、目录导航基础命令 pwd /cd

2.1 pwd 打印当前工作目录

# Print Working Directory,查看当前所在路径
pwd
# 示例输出 /home/XXX

2.2 cd 切换目录全量实操

# 切换到绝对路径 /usr/bin
cd /usr/bin
pwd

# 切换到上一次访问的目录(快速往返)
cd -

# 切换到当前用户家目录,两种写法等价
cd
cd ~

# 切换到root用户家目录(普通用户无权限进入)
cd ~root

# 切换到父目录(上一级)
cd ..

# 多层相对路径跳转:../../ 往上两级
cd /usr/share/doc/xxx
cd ../../
# 多层跳转至/etc/yum
cd ../../../../etc/yum

三、目录查看命令 ls /tree/stat

3.1 ls 高频参数大全

# 基础展示,仅文件名
ls

# -1 数字1:单列分行展示文件
ls -1

# -a all:显示隐藏文件(.开头文件)
ls -a

# -l 长列表:权限、所有者、大小、修改时间
ls -l /etc/hosts

# -lh human:人性化单位KB/MB展示文件大小
ls -lh

# -r reverse:反向排序文件名
ls -rl

# -t time:按文件修改时间从新到旧排序
ls -tl

# -d 仅查看目录本身,不展开内部文件
ls -ld /etc/yum

# -R recursive:递归遍历所有子目录文件
ls -R /etc/yum

四、文件创建与时间戳修改 touch

touch 两大核心功能:文件不存在则创建空文件;文件已存在则刷新文件时间戳
# touch 两个核心作用:1.不存在则创建空文件;2.存在则刷新时间戳
touch test.txt

# -c --no-create:文件不存在也不会新建,仅更新已有文件时间
touch -c notexist.txt

# -a 仅修改访问时间atime
touch -a test.txt

# -m 仅修改内容修改时间mtime
touch -m test.txt

# -r 参考另一个文件的时间戳
touch -r /etc/hosts test.txt

五、目录创建 mkdir

# 创建单个目录
mkdir lab

# 一次性创建多个同级目录
mkdir lab1 lab2

# 无-p无法创建多级嵌套目录,会报错
mkdir dir1/dir2/dir3

# -p parent 递归创建多级目录,不存在自动新建,存在不报错
mkdir -p dir1/dir2/dir3/dir4

# 配合tree查看创建结果
tree dir1

六、文件 / 目录复制 cp

6.1 复制文件

# 复制/etc/hosts到当前目录 . 代表当前目录
cp /etc/hosts .

# 复制并重命名
cp /etc/hosts hosts-bak

# -i 覆盖前交互式询问,防止误覆盖
cp -i /etc/hosts hosts-bak

# 多个文件复制,目标必须是目录
cp /etc/passwd /etc/hosts.allow ./lab/

6.2 复制目录(必须加 -r 递归参数)

# 不加-r会直接跳过目录,报错
cp /etc/yum .

# -r 递归复制整个目录
cp -r /etc/yum ./yum-copy

# 同名目录复制:会将源目录放入目标目录内部,不会覆盖
cp -r /etc/yum ./yum-copy

七、移动 / 重命名 mv

mv 同一目录 = 重命名;跨目录 = 移动文件 / 目录

# 移动单个文件到指定目录
mv hosts-bak ../lab1

# 多个文件移动,目标必须是目录
mv passwd hosts ../lab1/

# 同目录重命名文件
mv hosts.allow hosts.allow-new

# 移动整个目录
mv etc ../lab1

# 批量移动多个目录
mv home yum yum-copy ../lab1

八、删除操作 rmdir /rm

8.1 rmdir 仅删除空目录

# 空目录可直接删除
rmdir lab2

# 目录内有文件则删除失败
rmdir etc

8.2 rm 删除文件 / 目录(高危命令,无回收站)

# 删除单个文件,有写保护文件会提示确认
rm hosts

# -f force 强制删除,不弹窗询问
rm -f hosts

# -r recursive 递归删除目录(目录删除必备)
rm -r yum

# -rf 强制递归删除目录,生产慎用
rm -rf etc

# 批量删除多个目录
rm -rf home yum-copy

# 清理实验环境
rm -fr lab lab1 lab2 dir1

⚠️ 高危禁止:rm -rf / 直接清空服务器全部数据,无法恢复

九、软硬链接 ln

9.1 软链接(符号链接 symbol link)

等价 Windows 快捷方式,存放源文件路径,源文件删除后链接失效

# ln -s 创建软链接 格式 ln -s 源文件 链接名
ln -s /var/tmp/ mytmp

# 查看软链接信息
ls -l mytmp

# 通过软链接操作会同步修改真实目录文件
touch mytmp/testfile
ls /var/tmp/testfile

9.2 硬链接 ln

多个文件名指向同一个 inode 数据块,删除任意一个链接文件,数据仍存在;不能跨分区、不能链接目录

# 创建文件
cp /etc/hosts hosts-1

# 创建硬链接
ln hosts-1 hosts-2

# -i 查看inode编号,两个文件inode完全一致
ls -i1 hosts-1 hosts-2

# 修改其中一个文件内容,另一个同步变化
echo "test content" >> hosts-1
cat hosts-2

十、Shell 通配符批量匹配文件

10.1 通配符对照表

符号 匹配规则
* 0 个或任意多个字符,不匹配隐藏文件
? 任意单个字符
[abc] 匹配括号内任意一个字符
[^abc] 匹配不在括号内的字符
~ 当前用户家目录;~用户名 指定用户家目录
{a,b,1..10} 批量扩展匹配集合、数字区间
[[:digit:]] 数字 0-9
[[:alpha:]] 大小写字母
[[:lower:]] 小写字母
[[:upper:]] 大写字母

10.2 * 星号匹配示例

# 匹配/etc下ho开头所有文件
ls /etc/ho*

# 批量复制ho开头文件到/tmp
cp /etc/ho* /tmp

# 批量删除/tmp下ho开头文件
rm /tmp/ho*

# 查看全部隐藏文件
ls -d .*

10.3 ? 单字符匹配

# 提前创建测试文件
touch file-1 file-2 file-a file-ab file-a1

# file-后跟1个字符
ls file-?

# file-后跟2个字符
ls file-??

10.4 [] 括号字符匹配

# 匹配1、2
ls file-[12]

# 匹配a、b
ls file-[ab]

# 匹配非1、2的字符
ls file-[^12]

# 匹配数字、大小写字母
ls file-[[:digit:]]
ls file-[[:upper:]]
ls file-[[:lower:]]
ls file-[[:alnum:]]

10.5 {} 集合与区间扩展

# 等价 ls file-a file-b file-c
ls file-{a,b,c}

# 数字区间1~5
ls file-{1..5}

10.6 ~ 用户目录匹配

# 打印当前用户家目录路径
echo ~

# 切换到家目录
cd ~

# 打印root家目录路径
echo ~root

十一、文件操作速查表

操作类型 单文件 多文件 / 目录
创建目录 mkdir dir mkdir -p a/b/c
复制文件 cp f1 f2 cp f1 f2 dir/
复制目录 cp -r d1 d2 cp -r d1 d2 dir/
移动 / 重命名 mv f1 f2 mv f1 f2 dir/
删除文件 rm f1 rm f1 f2 f3
删除空目录 rmdir dir -
删除任意目录 rm -r dir rm -rf d1 d2
创建软链接 ln -s 源 链接名 -
创建硬链接 ln 源 链接名 -

十二、新手避坑总结

  1. Linux 严格区分大小写,File.txtfile.txt 是两个独立文件;
  2. 删除命令rm无回收站,rm -rf谨慎使用,禁止rm -rf /
  3. 复制、删除目录必须携带-r递归参数;
  4. *通配符不会匹配.开头隐藏文件,查看隐藏文件加ls -a
  5. 软链接源文件删除后链接失效,硬链接不支持跨分区、目录;
  6. 脚本路径尽量使用绝对路径,避免切换目录后执行报错;
  7. 操作/etc/root系统目录,普通用户需加sudo临时提权。

十三、完整综合实操案例

# 1. 创建多级实验目录
mkdir -p project/code project/log

# 2. 创建测试文件
touch project/code/demo.py project/log/run.log

# 3. 写入代码内容
echo "print('Linux 文件管理实操')" > project/code/demo.py

# 4. 树形查看目录结构
tree project

# 5. 复制项目备份
cp -r project project_bak

# 6. 创建软链接快速访问项目
ln -s ~/project myproj

# 7. 批量匹配查看py文件
ls project/code/*.py

# 8. 查看文件元数据
stat project/code/demo.py

# 9. 清理实验环境
rm -rf project project_bak myproj

在用户的主目录中,创建三个子目录:Music、Pictures 和 Videos。
在用户的主目录中:
一.创建六个文件,并以 songX.mp3 形式取名。
创建六个文件,并以 snapX.jpg 形式取名。
创建六个文件,并以 filmX.avi 形式取名
在每一组文件中,将 X 替换为数字 1 到 6 。
二.将 songX.mp3 所有文件移动到 Music 目录。
将 snapX.jpg 所有文件移动到 Pictures 目录。
将 filmX.avi 所有文件移动到 Videos 目录。
在用户的主目录中,创建三个子目录:friends、family 和 work。
将所有序号是1和2的文件复制到 friends 目录。
将所有序号是3和4的文件复制到 family 目录。
将所有序号是5和6的文件复制到 work 目录。
复制 family 和 friends 目录到/tmp中。
三.删除 family 和 friends 目录。
删除 work 目录中所有文件,然后在删除 work 目录。
删除以上步骤中创建的所有文件和目录。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐