Linux 文件与目录管理 全面命令操作指南(CentOS7)
核心思想:Linux 一切皆文件,目录是特殊文件。所有操作围绕 路径(绝对 / 相对)、权限、软硬链接 三个概念。 路径速记:
/根、~当前用户家目录、.当前目录、..上级目录、-上一次所在目录
一、目录结构速览(FHS)
/ 根目录
├── bin /usr/bin 普通命令
├── sbin /usr/sbin 管理命令(root)
├── etc 配置文件(my.cnf 在这里)
├── var 可变数据(日志 /var/log、MySQL数据 /var/lib/mysql)
├── home 普通用户家目录
├── root root家目录
├── tmp 临时文件
├── usr 系统程序与资源
└── mnt / media 挂载点(U盘、新盘)
二、导航与查看
pwd # 当前所在目录
cd /etc # 绝对路径跳转
cd .. # 上级
cd ~ # 回家目录
cd - # 回到上一次目录
cd # 同上,回家
ls 查看列表
ls # 普通列表
ls -l # 长格式:权限、属主、大小、时间(简写 ll)
ls -lh # 人类可读大小(K/M/G)
ls -la # 含隐藏文件(.开头)
ls -lt # 按修改时间排序
ls -lhtr # 最新的在最后(常用于日志目录)
ls -ld /etc # 看目录本身信息,不看里面
通配符
ls *.sql # 所有.sql结尾
ls /tmp/*.log #
ls [0-9]* # 数字开头
ls {a,b}* # a开头或b开头
三、创建与删除
新建
touch a.txt # 新建空文件(已存在则更新时间戳)
mkdir dir1 # 新建目录
mkdir -p a/b/c # 递归创建多级目录
删除
rm file.txt # 删文件(会提示确认)
rm -f file.txt # 强制删,不提示
rm -r dir1 # 递归删目录
rm -rf dir1 # 强制递归删【高危!】
rmdir emptydir # 只能删空目录
⚠️
rm -rf /或路径写错后果严重。养成习惯:先ls确认再删;重要目录先备份。
复制
cp src.txt dst.txt
cp -r dir1 dir2 # 复制目录必须 -r
cp -a dir1 backup_dir # 保留权限/时间/软链接(备份推荐)
cp -i # 覆盖前提示
移动 / 重命名
mv old.txt new.txt # 重命名
mv file.txt /tmp/ # 移动
mv -i a.txt b.txt # 覆盖前提示
四、查看文件内容
cat file.txt # 全部打印(小文件)
cat -n file.txt # 带行号
tac file.txt # 倒序打印
less file.txt # 分页查看(大文件首选)
# less内快捷键:空格下一页,b上一页,/关键词搜索,n下一个,q退出
head -20 file.log # 头20行
tail -20 file.log # 尾20行
tail -f /var/log/mysqld.log # 实时滚动【看日志必用】
tail -n 100 -f file.log
wc -l file.txt # 统计行数
wc -lwc file.txt # 行 词 字节数
file /bin/ls # 判断文件类型
stat file.txt # 详细属性(大小、时间戳)
大文件快速处理
# 只看100到200行
sed -n '100,200p' file.log
# 实时查看并过滤错误
tail -f app.log | grep ERROR
五、查找文件
find(最强大,按条件搜)
# 按名字
find /etc -name "*.conf"
find /var/log -name "*.log" -mtime +7 # 7天前修改的日志
# 按大小
find / -size +100M # 大于100M的文件
# 按属主
find /home -user zhangsan
# 找到后执行动作(删除7天前日志)
find /var/log/app -name "*.log" -mtime +7 -delete
# 找大文件并显示大小
find / -xdev -type f -size +500M -exec ls -lh {} \;
其他查找
which ls # 命令在哪个路径
whereis nginx # 命令+源码+man位置
lscpu / lsblk # 硬件信息
locate 文件名 # 数据库快速查找(需 updatedb)
六、软链接与硬链接(重要)
ln -s /usr/local/mysql/bin/mysql /usr/bin/mysql # 软链接(快捷方式)
ln 源文件 硬链接 # 硬链接(inode相同)
区别:
- 软链接:类似快捷方式,源文件删了链接失效;可以跨分区;可链接目录
- 硬链接:同一文件多个名字,inode 相同;不能跨分区;不能链接目录;删一个名字文件还在
七、权限与属主(重点)
看权限位 ls -l 输出
-rw-r--r--. 1 root root 1234 Sep 18 10:00 file.txt
│┬┬┬┬┬┬┬
│└┼┼┼┼└─── 其他人 r--
│ └┼┼┴──── 组 r--
│ └┼───── 属主 rw-
└────── 文件类型:-普通 d目录 l链接
权限数字:r=4 w=2 x=1
rwxr-xr-x= 755rw-r--r--= 644rwx------= 700(私密目录)
chmod 修改权限
chmod 755 script.sh
chmod 644 config.ini
chmod +x script.sh # 加执行权限
chmod -R 755 /app # 递归
chmod u+x,g-w,o=r file # 符号方式:user加x,group去w,other只读
chown 修改属主 / 属组
chown mysql:mysql /var/lib/mysql # 属主:属组
chown -R mysql:mysql /var/lib/mysql # 递归
chgrp developers shared_dir # 单独改组
umask 默认权限
umask # 查看当前掩码(通常0022)
umask 027 # 临时改
八、压缩归档
tar(前面讲过,这里汇总)
tar -czvf a.tar.gz dir/ # 打包+gzip压缩
tar -xzvf a.tar.gz # 解压
tar -tjvf a.tar.bz2 # 查看内容
tar -xJvf a.tar.xz -C /opt # 解压到指定目录
zip / unzip
yum install zip unzip -y
zip -r a.zip dir/
unzip a.zip
unzip a.zip -d /opt
gzip 单文件压缩
gzip file.log # 变 file.log.gz
gunzip file.log.gz
九、磁盘与空间
df -h # 各分区使用量
du -sh /var/log # 目录总大小
du -h --max-depth=1 /var # 一层子目录大小
du -sh * | sort -h # 当前目录各子项大小排序
lsblk # 块设备树
十、文本处理三连(grep/sed/awk 简介)
grep "ERROR" app.log # 过滤
grep -rn "password" /etc/ # 递归带行号
grep -v "^#" config.conf # 排除注释行
sed -n '10,20p' file # 打印10-20行
sed -i 's/old/new/g' file # 替换(直接改文件)
awk '{print $1, $3}' file # 取第1、3列
awk -F: '{print $1}' /etc/passwd # 按冒号分隔
十一、常用快捷键与技巧
Ctrl + R:历史命令搜索Ctrl + C:中断当前命令Ctrl + L:清屏(等同 clear)Tab:自动补全(连按两次列候选)!!:重复上一条命令!$:上一条命令最后一个参数history:历史;!100执行第 100 条
十二、典型实操场景
1. 清理大日志文件(不重启服务)
# 不要直接 rm,用 truncate 清空,服务仍占用句柄
: > /var/log/nginx/access.log
# 或
truncate -s 0 /var/log/nginx/access.log
2. 找出磁盘占用大户
du -h --max-depth=1 / | sort -h
3. 批量重命名(批量改后缀)
rename 's/\.txt$/.md/' *.txt
# 无rename用循环
for f in *.txt; do mv "$f" "${f%.txt}.md"; done
4. 安全删除( shred 覆盖)
shred -u secret.txt
十三、常见问题
- Permission denied:当前用户没权限,加
sudo或chmod。 - Read-only file system:分区只读挂载(磁盘故障或 fstab 配错),重新挂载
mount -o remount,rw /。 - rm 误删:别再往磁盘写东西,立刻停止服务,用
extundelete等工具尝试恢复。 - No such file or directory:路径写错,注意大小写和隐藏文件。
- 文件名有空格:用引号包裹
"my file.txt"或转义my\ file.txt。
命令速查表
表格
| 操作 | 命令 |
|---|---|
| 导航 | cd pwd |
| 列表 | ls ll |
| 创建 | touch mkdir -p |
| 删除 | rm -rf rmdir |
| 复制移动 | cp -a mv |
| 看内容 | cat less head tail -f |
| 查找 | find which whereis |
| 链接 | ln -s |
| 权限 | chmod chown |
| 空间 | df -h du -sh |
| 压缩 | tar -czvf/-xzvf |
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END











暂无评论内容