Linux 命令行文件管理完全指南
Linux文件管理目录一、文件系统层次结构FHS二、文件路径导航三、文件管理命令四、链接文件五、Shell扩展匹配六、综合练习一、文件系统层次结构FHS1.1 什么是FHSFHSFilesystem Hierarchy Standard文件系统层次结构标准采用树形结构组织文件定义系统中每个区域的用途规范了Linux文件系统目录结构避免因不同发行版导致的使用困难1.2 FHS两层规范层级范围说明第一层/根目录定义根目录下各目录应存放的内容第二层/usr和/var定义这两个目录的子目录规范1.3 重要目录说明目录全称/含义用途/usrUnix System Resource系统安装的软件、共享库/etc-系统配置文件/varvariable可变数据日志、缓存、数据库等动态数据/home-普通用户主目录/root-管理员root主目录/tmptemporary临时文件10天未使用自动删除/var/tmp-临时文件30天未使用自动删除/boot-开机启动所需文件/devdevice设备文件/run-运行时数据重启时重新创建1.4 /usr 目录重要子目录text/usr/ ├── bin/# 用户命令├── sbin/# 系统管理命令├── lib/# 通用库文件├── lib64/# 64位库文件└── local/# 本地自定义软件二、文件路径导航2.1 路径类型路径类型说明示例绝对路径以根/开头/usr/bin/ls相对路径不以/开头./file.txt当前路径当前所在位置使用pwd查看2.2 特殊目录表示符号含义.当前目录..上一级目录父目录~当前用户的主目录~username指定用户的主目录-上一次所在目录2.3 常用导航命令pwd - 显示当前工作目录bash[laomacentos7 ~]$ pwd /home/laomacd - 切换目录bash# 切换到指定目录 cd /usr/bin # 切换到上一次所在目录 cd - # 切换到当前用户主目录 cd cd ~ # 切换到父目录 cd .. # 使用相对路径 cd ../../etc/yum2.4 ls 命令常用选项选项说明示例-l长列表格式显示详细信息ls -l /etc/hosts-a显示所有文件包括隐藏文件ls -a-R递归查看子目录ls -R /etc/yum-d只查看目录本身ls -ld /etc/yum-1单列格式展示ls -1-r反向排序ls -rl-t按时间排序ls -tl示例输出bash[HZcentos7 ~]$ ls -l /etc/hosts -rw-r--r--. 1 root root 197 11月 3 14:35 /etc/hosts # 权限 硬链接数 所有者 组 大小 修改时间 文件名2.5 tree命令以树形格式查看目录结构bash# 安装tree工具 yum install -y tree # 使用 [HZcentos7 ~]$ tree /etc/yum /etc/yum ├── fssnap.d ├── pluginconf.d │ ├── fastestmirror.conf │ └── langpacks.conf ├── protected.d │ └── systemd.conf ├── vars │ ├── contentdir │ └── infra └── version-groups.conf 4 directories, 6 files2.6 stat命令查看文件的元数据属性bash[laomacentos7 ~]$ stat /etc/fstab 文件/etc/fstab 大小541 块8 IO 块4096 普通文件 设备fd00h/64768d Inode67160130 硬链接1 权限(0644/-rw-r--r--) Uid( 0/ root) Gid( 0/ root) 环境system_u:object_r:etc_t:s0 最近访问2022-12-14 11:09:49.628179033 0800 最近更改2022-12-13 10:38:44.625179973 0800 最近改动2022-12-13 10:53:38.563774524 08002.7 touch命令更新文件时间戳或创建空文件选项说明-a只更改访问时间-m只更改修改时间-c不创建任何文件-d使用指定时间-t使用指定时间戳bash# 更新文件时间戳 touch existing_file.txt # 创建新文件不存在则创建 touch new_file.txt # 不创建文件-c选项 touch -c file_not_exist.txt # 不创建三、文件管理命令3.1 操作概览操作单一来源多来源复制文件cp file1 file2cp file1 file2 file3 dir移动文件mv file1 file2mv file1 file2 file3 dir删除文件rm file1rm file1 file2 file3创建目录mkdir dirmkdir -p dir1/dir2/dir3复制目录cp -r dir1 dir2cp -r dir1 dir2 dir3 dir4移动目录mv dir1 dir2mv dir1 dir2 dir3 dir4删除目录rm -r dir1或rmdir dir1rm -rf dir1 dir2 dir33.2 mkdir - 创建目录bash# 创建单个目录 mkdir lab # 创建多个目录 mkdir lab1 lab2 lab3 # 级联创建目录-p选项 mkdir -p dir1/dir2/dir3/dir43.3 cp - 复制文件/目录复制文件bash# 复制到当前目录 cp /etc/hosts . # 复制并重命名 cp /etc/hosts ./hosts-1 # 使用-i选项提示覆盖 cp -i /etc/hosts ./hosts-1 # 复制多个文件目标必须是目录 cp /etc/passwd /etc/hosts.allow .复制目录bash# 使用-r选项递归复制 cp -r /etc/yum . # 复制并重命名 cp -r /etc/yum ./yum-1 # 目标已存在时源目录会放入目标目录中 cp -r /etc/yum ./yum # 结果是 ./yum/yum/3.4 mv - 移动/重命名文件bash# 移动单个文件 mv hosts-1 ../lab1 # 移动多个文件目标必须是目录 mv passwd hosts /home/laoma/lab1/ # 重命名文件 mv hosts.allow hosts.allow-new # 移动单个目录 mv etc ../lab1 # 移动多个目录 mv home/ yum/ yum-1/ ../lab13.5 rm - 删除文件/目录bash# 删除文件 rm hosts # 删除多个文件 rm hosts-1 passwd # 强制删除-f选项 rm -f cacerts # 递归删除目录-r选项 rm -r yum # 递归强制删除-rf选项 rm -fr etc # 删除多个目录 rm -fr home/ yum-1/3.6 rmdir - 删除空目录bash# 只能删除空目录 rmdir empty_dir # 非空目录会报错 rmdir etc # 报错: 目录非空四、链接文件4.1 软链接符号链接 Symbolic Link特点相当于Windows中的快捷方式可以跨文件系统可以链接目录删除原文件链接失效bash# 创建软链接 ln -s /var/tmp/ mytmp # 查看软链接 ls -l mytmp # 输出: lrwxrwxrwx. 1 laoma laoma 9 11月 4 11:40 mytmp - /var/tmp/ # 验证链接指向 readlink mytmp # 输出: /var/tmp/ # 进入软链接目录 cd mytmp pwd # 显示: /home/laoma/mytmp4.2 硬链接特点多个文件名指向同一个数据块不能跨文件系统不能链接目录删除任何一个数据依然存在bash# 创建硬链接 ln hosts-1 hosts-2 # 查看硬链接 ls -l hosts-1 hosts-2 # -rw-r--r--. 2 laoma laoma 158 11月 4 13:34 hosts-1 # -rw-r--r--. 2 laoma laoma 158 11月 4 13:34 hosts-2 # 注意: 硬链接数显示为2 # 查看inode相同表示是同一数据 ls -i1 hosts-1 hosts-2 # 33554556 hosts-1 # 33554556 hosts-2 # 修改任一文件另一个同步变化 echo hello hosts-1 cat hosts-2 # 也会显示hello4.3 软链接 vs 硬链接特性软链接硬链接跨文件系统✅ 可以❌ 不可以链接目录✅ 可以❌ 不可以删除原文件❌ 链接失效✅ 数据仍存在inode不同相同文件类型l链接文件普通文件五、Shell扩展匹配5.1 通配符汇总模式含义示例*任意长度字符串不匹配隐藏文件*.txt?单个任意字符file-?[abc]括号中任意一个字符file-[abc][^abc]或[!abc]不在括号中的任意字符file-[^0-9]~当前用户主目录~/Documents~username指定用户主目录~root{a,b,c}大括号扩展列表file-{a,b,c}{1..5}大括号扩展范围file-{1..5}5.2 字符类POSIX字符类字符类含义等价[[:alpha:]]任意字母[a-Z][[:lower:]]小写字母[a-z][[:upper:]]大写字母[A-Z][[:alnum:]]字母或数字[a-Z0-9][[:digit:]]数字[0-9][[:space:]]空白字符空格、制表符等[[:punct:]]标点符号除空格和字母数字5.3 使用示例*通配符bash# 匹配所有ho开头的文件 ls /etc/ho* # 输出: /etc/hosts /etc/hostname /etc/hosts.allow /etc/hosts.deny # 复制所有匹配的文件 cp /etc/ho* /tmp # 删除所有匹配的文件 rm /tmp/ho*?通配符bash# 准备文件 touch file-1 file-2 file-a file-b file-ab file-a1 # 匹配file-后跟1个字符 ls file-? # 输出: file-1 file-2 file-a file-b # 匹配file-后跟2个字符 ls file-?? # 输出: file-a1 file-ab[]字符类bash# 匹配特定字符 ls file-[abc] # file-a file-b # 匹配数字 ls file-[0-9] # file-1 file-2 # 匹配大写字母 ls file-[[:upper:]] # file-A file-Z # 取反匹配 ls file-[^12] # file-a file-b{}大括号扩展bash# 列表形式 ls file-{a,b,c} # 相当于: ls file-a file-b file-c # 范围形式 ls file-{1..5} # 相当于: ls file-1 file-2 file-3 file-4 file-5 # 创建多个文件 touch song{1..6}.mp3 # 创建: song1.mp3, song2.mp3, ..., song6.mp3 # 复制特定范围 cp Music/song{1,2}.mp3 friends/六、综合练习6.1 练习要求在用户主目录中完成以下操作创建三个子目录Music、Pictures、Videos创建文件songX.mp3X1到6snapX.jpgX1到6filmX.aviX1到6将文件移动到对应目录创建三个子目录friends、family、work复制序号1-2的文件到friends复制序号3-4的文件到family复制序号5-6的文件到work复制family和friends到/tmp删除family和friends删除work中所有文件再删除work目录创建软链接mytmp指向/var/tmp验证软链接清理所有创建的文件和目录6.2 完整解决方案使用Shell扩展匹配bash#!/bin/bash # 进入用户主目录 cd ~ # 步骤1: 创建三个子目录 mkdir -p Music Pictures Videos # 步骤2-4: 使用大括号扩展创建文件 touch song{1..6}.mp3 touch snap{1..6}.jpg touch film{1..6}.avi # 步骤5-7: 使用通配符移动文件 mv song*.mp3 Music/ mv snap*.jpg Pictures/ mv film*.avi Videos/ # 步骤8: 创建三个新子目录 mkdir -p friends family work # 步骤9-11: 使用扩展匹配复制文件 # 序号1-2 - friends cp Music/song{1,2}.mp3 friends/ cp Pictures/snap{1,2}.jpg friends/ cp Videos/film{1,2}.avi friends/ # 序号3-4 - family cp Music/song{3,4}.mp3 family/ cp Pictures/snap{3,4}.jpg family/ cp Videos/film{3,4}.avi family/ # 序号5-6 - work cp Music/song{5,6}.mp3 work/ cp Pictures/snap{5,6}.jpg work/ cp Videos/film{5,6}.avi work/ # 步骤12: 复制目录到/tmp cp -r family friends /tmp/ # 步骤13: 删除 family 和 friends rm -rf family friends # 步骤14: 删除 work rm -f work/* rmdir work 2/dev/null || rm -rf work # 步骤15: 创建软链接 ln -s /var/tmp mytmp # 验证软链接 ls -l mytmp readlink mytmp # 步骤16: 清理所有 rm -f mytmp rm -rf Music Pictures Videos rm -rf /tmp/family /tmp/friends echo ✓ 所有操作完成6.3 关键扩展匹配使用操作使用的扩展说明创建文件{1..6}批量创建6个文件移动文件*通配符匹配所有文件复制文件{1,2}、{3,4}、{5,6}精确匹配特定序号删除文件*删除work中所有文件6.4 验证命令bash# 验证目录结构 tree ~ # 验证软链接 ls -l ~/mytmp readlink ~/mytmp # 验证文件数量 ls Music/ | wc -l ls Pictures/ | wc -l ls Videos/ | wc -l总结核心要点FHS规范了解Linux目录结构标准路径导航掌握绝对路径、相对路径和特殊目录符号文件管理命令cp、mv、rm、mkdir、rmdir链接文件区分软链接和硬链接Shell扩展匹配使用*、?、[]、{}提高操作效率最佳实践使用-i选项防止误覆盖使用-p选项创建多级目录使用-r选项递归操作目录使用扩展匹配减少重复输入删除前先确认文件内容常见错误错误原因解决方法cp: 目标不是目录多源复制时目标不是目录确保目标目录存在rm: 无法删除目录删除目录时缺少-r选项使用rm -r或rmdir硬链接数不理解inode概念使用ls -i查看inode软链接失效原文件被删除检查原文件是否存在