【Linux日新月异(一)】CentOS 7文件操作命令全攻略:从入门到精通
·
🌌提供:
1. Kimi K2 Thinking(网站: 大语言模型(Large Language Model, LLM),是当前人工智能领域的重要技术分支,专注于自然语言处理和生成任务。)【开源】「AL」〖✿✿✿✿✿〗
🔔说明: 本文内容由Kimi K2生成。AI创作虽经校对,仍难免疏漏或偏颇之处。若您发现错漏、或有任何建议,恳请不吝赐教。您的每一次指正,都是我改进与成长的重要指引。
📓摘要:
略...(有好建议的可以留言哦~~~(✿◕‿◕✿))
📂 CentOS 7文件操作命令全攻略:从入门到精通
在Linux世界中,一切皆文件!掌握文件命令是系统管理的基石。本篇深度解析CentOS 7中核心文件操作命令,涵盖查看、编辑、权限、搜索等全方位技能!
一、👁️ 文件查看类命令
1.echo- 文本输出与重定向 ⭐
基本语法:
echo [选项] [字符串] [> 文件] [>> 文件]
核心选项:
-e:启用转义字符(\n换行,\t制表符)-n:不换行输出
案例1:基础输出
echo "Hello World"
# 输出:Hello World
echo -e "Line1\nLine2\nLine3"
# 输出:
# Line1
# Line2
# Line3
echo -n "No newline"
echo " appended"
# 输出:No newline appended
案例2:重定向魔法
# 覆盖写入(慎用!会清空原文件)
echo "New content" > file.txt
# 追加写入(安全推荐)
echo "New line" >> file.txt
# 创建多行文件(EOF模式)
cat <<EOF > config.ini
[database]
host=localhost
port=3306
user=admin
EOF
⚠️ 注意事项:
- 🔥
>会清空文件,使用前务必确认! >>才是追加的正确姿势- 变量输出要加引号:
echo "$PATH"而非echo $PATH(避免路径被拆分) - 转义字符在Shell脚本中常用,交互模式少用
2.cat- 文件内容查看与合并
语法:
cat [选项] [文件...]
核心选项:
-n:显示行号-A:显示所有特殊字符(含不可见字符)-b:非空行编号-s:压缩连续空行
案例1:基础查看
cat /etc/hosts
cat -n /etc/passwd # 带行号显示
案例2:文件合并
# 合并多个文件
cat file1.txt file2.txt > merged.txt
# 创建文件(快速但不如nano/vim灵活)
cat > quick.txt <<EOF
This is a quick file
created with cat
EOF
案例3:显示特殊字符
# 查看文件中的空格、制表符、换行符
cat -A /tmp/test.txt
# 输出示例:
# line1^Ivalue1$ (^I=制表符, $=换行符)
# line2^Ivalue2$
⚠️ 注意事项:
- 🔥不要cat大文件!会刷屏卡死,应使用
more或less - 纯查看大文件推荐
less,cat适合小文件和合并操作 -A选项是排查格式问题的利器
3.more/less- 分页查看器
more语法:
more [选项] 文件
案例:
more /var/log/messages
# 交互操作:
# 空格:下一页
# 回车:下一行
# b:上一页
# q:退出
less语法(强烈推荐):
less [选项] 文件
⭐ less优势:
- 支持向上翻页(
more只能向下) - 支持搜索(
/搜索,n下一个,N上一个) - 加载大文件更快
案例:
less /var/log/messages
# 交互操作:
# 空格/PgDn:下一页
# b/PgUp:上一页
# G:跳到文件尾
# g:跳到文件头
# /keyword:向下搜索
# ?keyword:向上搜索
# n:下一个匹配
# N:上一个匹配
# q:退出
⚠️ 注意事项:
-生产环境查看日志:永远用less而非cat/more
- 搜索功能在排查日志时效率提升10倍
less支持F模式实时追踪(类似tail -f)less有安全模式-X,可避免清屏
4.head/tail- 头尾查看器
head语法:
head [选项] [文件]
案例:
head -n 10 /etc/passwd # 查看前10行
head -20 /var/log/httpd/access_log # 简写,默认10行
tail语法:
tail [选项] [文件]
核心选项:
-n N:显示最后N行-f:实时追踪文件更新(日志监控神器)-F:追踪文件,即使文件被重命名/删除
案例1:基础使用
tail -n 20 /var/log/messages # 最后20行
tail -f /var/log/nginx/access.log # 实时监控访问日志
案例2:组合使用(查看中间行)
# 查看第100-120行
head -n 120 file.txt | tail -n 20
# 或更优
sed -n '100,120p' file.txt
案例3:多文件监控
# 同时监控多个日志文件(显示文件名前缀)
tail -f /var/log/{messages,secure,cron}
⚠️ 注意事项:
- 🔥
tail -f会阻塞终端,用Ctrl+C退出 - 日志轮转场景用
tail -F,避免文件改名后追踪失败 - 排查异常:
tail -n 100 -f先看最近100行再追踪 - 大文件勿用
cat | tail,直接tail效率更高
二、✏️ 文件编辑与创建类
1.touch- 文件时间戳与空文件创建
语法:
touch [选项] 文件...
核心选项:
-a:只修改访问时间-m:只修改修改时间-t [[CC]YY]MMDDhhmm[.ss]:指定时间-r 参考文件:使用参考文件的时间
案例1:创建空文件
touch newfile.txt # 文件不存在则创建
touch file1.txt file2.txt # 批量创建
案例2:更新时间戳
# 修改文件时间为当前时间(文件存在)
touch existing.txt
# 指定具体时间
touch -t 202312311830.30 log.txt # 2023年12月31日18:30:30
案例3:批量更新(配合find)
# 将所有.log文件时间更新为当前
find /var/log -name "*.log" -exec touch {} \;
⚠️ 注意事项:
- 创建文件需目录有w权限
- 时间戳陷阱:touch不会修改文件内容,但会触发某些备份机制
- 时间格式严格:
[[CC]YY]MMDDhhmm[.ss],CC=世纪,YY=年 - 配合
*通配符小心误操作:touch *.txt会更新所有txt文件
2.nano- 简易文本编辑器
语法:
nano [选项] [文件]
核心操作(底部有提示):
Ctrl+O:保存(WriteOut)Ctrl+X:退出Ctrl+K:剪切整行Ctrl+U:粘贴Ctrl+W:搜索Alt+A:选中区域
案例1:基础编辑
nano /etc/myapp/config.conf
案例2:显示行号
nano -c /etc/passwd # -c显示光标位置(含行号)
# 或进入后Alt+#切换行号
案例3:配置语法高亮
# nano支持语法高亮
ls /usr/share/nano/*.nanorc # 查看可用方案
# 在~/.nanorc中启用
echo "include /usr/share/nano/sh.nanorc" >> ~/.nanorc
⚠️ 注意事项:
- 🔥默认不自动换行:长行会显示
$,用Alt+$切换 - 权限问题:编辑系统文件需
sudo nano - 备份:nano退出时若文件被修改,会提示保存
- 比vim简单:适合新手,但功能较弱
3.⭐ vim / vi- 高级编辑器(必学)
虽然用户没提,但nano太简单,必须补充vim!
基础模式:
- 命令模式:默认,按
i进入插入 - 插入模式:编辑文本,按
Esc返回命令 - 底行模式:命令模式下按
:,输入命令
案例1:基础操作
vim /etc/nginx/nginx.conf
# 命令模式:
i # 插入
Esc # 返回命令
:wq # 保存退出
:q! # 强制退出不保存
案例2:高效技巧
# 搜索
/keyword # 向下搜索
n # 下一个
N # 上一个
# 替换
:%s/old/new/g # 全文替换
:10,20s/old/new/g # 10-20行替换
# 显示行号
:set nu # 临时
echo "set nu" >> ~/.vimrc # 永久
⚠️ 注意事项:
- 🔥vim难学但强大:花30分钟学习,效率提升10倍
- 编辑大文件:vim可以自由跳转,nano只能顺序
- sudo vim:编辑只读文件时,用
:w !sudo tee %强制保存 - 退出陷阱:新手常卡在插入模式,记住
Esc返回命令模式
三、🔐 文件权限类(深入补充)
chmod - 权限修改(之前已讲,补充高级用法)
数字模式补充:
chmod 755 script.sh # rwxr-xr-x
chmod 600 secret.txt # rw-------
chmod 644 doc.txt # rw-r--r--
chmod 700 private_dir/ # rwx------
符号模式高级:
# 精确设置(非增量)
chmod u=rwx,g=rx,o=r file.txt # 等价于754
# 递归修改(⚠️高危)
chmod -R 755 /path/to/dir
# 只改目录权限,不改文件
find /path -type d -exec chmod 755 {} \;
find /path -type f -exec chmod 644 {} \;
特殊权限位:
chmod 4755 /usr/bin/myapp # SUID (4) 以所有者权限运行
chmod 2755 /data/shared # SGID (2) 新建文件继承组
chmod 1755 /tmp # Sticky (1) 仅所有者可删
chown / chgrp - 所有者变更
语法:
chown [选项] [用户][:组] 文件...
chgrp [选项] 组 文件...
案例:
# 修改所有者
chown nginx nginx.conf
# 同时修改所有者和组
chown nginx:nginx /var/www/html/
# 只改组(两种写法)
chown :www-data index.php
chgrp www-data index.php
# 递归修改(⚠️高危)
chown -R www-data:www-data /var/www/
⚠️ 权限管理铁律:
- 永不777:文件755,目录644是黄金法则
- Web目录:所有者设为运行用户(nginx/apache),权限755
- 脚本执行:必须
+x,否则bash script.sh或./script.sh失败 - SUID风险:慎用!可能提权漏洞,SetUID程序必须严格审计
- 递归前备份:
chmod -R前用tar -czf backup.tar.gz /path备份
四、🔍 文件搜索与处理类
1.find- 文件查找神器 ⭐
语法:
find [路径] [表达式]
案例1:按名称查找
# 查找所有.log文件
find /var/log -name "*.log"
# 忽略大小写
find / -iname "nginx.conf"
# 查找并删除(⚠️危险)
find /tmp -name "*.tmp" -delete
案例2:按时间查找
# 7天内修改的文件
find /var/www -mtime -7
# 30天前访问的文件
find /data -atime +30
# 1小时内修改的文件(监控脚本常用)
find /etc -mmin -60
案例3:按权限查找
# 查找权限为777的文件(漏洞)
find / -perm 777
# 查找权限大于644的文件
find / -perm /222
案例4:执行操作
# 查找并压缩
find /var/log -name "*.log" -exec gzip {} \;
# 查找并修改权限
find /data/uploads -type f -exec chmod 644 {} \;
⚠️ 注意事项:
- 🔥默认递归:find会遍历所有子目录,可能很慢
- 指定深度:
-maxdepth 2限制搜索深度 - 性能优化:
-type f先限定类型,比-name更快 - xargs替代:大批量操作用
find ... | xargs比-exec高效
2.grep- 文本搜索王者
语法:
grep [选项] "模式" [文件...]
核心选项:
-i:忽略大小写-r:递归搜索-n:显示行号-v:反向匹配-E:支持扩展正则
案例1:基础搜索
# 在文件中搜索
grep "error" /var/log/messages
# 忽略大小写
grep -i "failed" auth.log
# 显示行号
grep -n "root" /etc/passwd
案例2:管道结合
# 查找进程
ps aux | grep nginx
# 查看日志中的IP
tail -f access.log | grep "192.168.1.100"
# 排除注释行
grep -v "^#" /etc/nginx/nginx.conf
案例3:正则表达式
# 查找IP地址
grep -E "([0-9]{1,3}\.){3}[0-9]{1,3}" access.log
# 查找邮箱
grep -E "[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}" users.txt
⚠️ 注意事项:
- 🔥grep递归:
grep -r可能很慢,用ack或ag更快 - 二进制文件:加
-a或--binary-files=text避免报错 - 颜色高亮:
grep --color=auto(CentOS 7默认) - 性能:大文件用
grep比vim搜索快100倍
3.wc- 统计计数
语法:
wc [选项] [文件...]
案例:
wc -l /etc/passwd # 统计行数(用户数)
wc -w essay.txt # 统计单词数
wc -c binary.dat # 统计字节数
# 组合使用
ls -l /etc | wc -l # 统计/etc下文件数
grep "error" app.log | wc -l # 统计错误数量
4.sort/uniq- 排序去重
案例:
# 排序
sort -k 3 -n access.log # 按第3列数字排序
# 去重(需先排序)
sort ip_list.txt | uniq > unique_ips.txt
# 统计重复次数
sort access.log | uniq -c | sort -nr | head -20 # TOP 20访问IP
五、📦 文件压缩与归档
1.tar- 归档打包 ⭐
语法:
tar [选项] [文件...]
核心选项:
-c:创建-x:解压-v:显示过程-f:指定文件-z:gzip压缩-j:bzip2压缩-J:xz压缩
案例1:创建压缩包
# 打包目录
tar -czf backup.tar.gz /var/www/html
# 打包多个文件
tar -czf configs.tar.gz /etc/nginx/nginx.conf /etc/php.ini
# 排除特定目录
tar -czf backup.tar.gz --exclude="*.log" /var/www
案例2:解压
# 解压到当前目录
tar -xzf backup.tar.gz
# 解压到指定目录
tar -xzf backup.tar.gz -C /opt/restore
# 查看压缩包内容(不解压)
tar -tzf backup.tar.gz
案例3:增量备份
# 创建全量备份
tar -czf full_backup.tar.gz /data
# 创建增量备份(基于时间戳)
tar -czf inc_backup.tar.gz --newer-mtime="2024-01-01" /data
⚠️ 注意事项:
- 🔥绝对路径问题:
tar默认存储相对路径,用-P保留绝对路径(危险) - 权限保留:加
-p保留文件权限和所有者 - 性能:
gzip最快,xz压缩率最高但慢 - 解压覆盖:解压会覆盖同名文件,先检查!
2.gzip/gunzip&zip/unzip
案例:
# gzip单个文件(原文件消失)
gzip large.log
# 生成 large.log.gz
# 解压
gunzip large.log.gz
# zip打包(保留原文件)
zip -r backup.zip /var/www/html
# 解压zip
unzip backup.zip -d /opt/restore
# 查看zip内容
unzip -l backup.zip
⚠️ 注意:
gzip只能压缩单个文件 ,不能压缩目录tar czf=tar cf - | gzip > file.tar.gzzip跨平台兼容性更好
六、🔗 文件链接与元数据
1.ln - 创建链接
语法:
ln [选项] 源文件 链接文件
案例:
# 创建硬链接(指向同一inode)
ln /data/file.txt /backup/file_link.txt
# 创建软链接(类似Windows快捷方式)
ln -s /var/www/html /var/www/current
# 软链接目录(常用)
ln -s /usr/local/nginx-1.24.0 /usr/local/nginx
差异对比:
| 特性 | 硬链接 | 软链接 |
|---|---|---|
| 跨文件系统 | ❌ | ✅ |
| 指向目录 | ❌ | ✅ |
| 原文件删除后 | 仍可用 | 失效 |
| inode | 相同 | 不同 |
| 占用空间 | 无 | 极小 |
⚠️ 注意事项:
- 🔥软链接路径:建议使用绝对路径,相对路径易出错
- 循环链接:
ln -s .. a/b/c/d可能创建循环,避免! - 权限:软链接权限为
lrwxrwxrwx,实际权限看源文件 - 备份:tar备份时默认不跟随软链接,加
-h才跟随
2.stat- 查看详细元数据
stat /etc/passwd
# 输出:
File: ‘/etc/passwd’
Size: 2345 Blocks: 8 IO Block: 4096 regular file
Device: fd01h/64769d Inode: 131090 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2024-11-15 10:30:00.123456789 +0800
Modify: 2024-11-10 15:20:30.987654321 +0800
Change: 2024-11-10 15:20:30.987654321 +0800
Birth: -
用途:
- 查看inode、硬链接数、精确时间戳
- 排查文件被异常修改
七、📋 实用小技巧合集
1.快速清空文件
# 方法1:echo
echo "" > large.log
# 方法2:重定向
> large.log
# 方法3:truncate(最专业)
truncate -s 0 large.log
2.安全删除(防止误删)
# 别用rm,用mv到回收站
alias rm='mv -t /tmp/trash'
mkdir -p /tmp/trash
3.只读查看大文件
# 用less,别用cat
less +G /var/log/huge.log # 直接跳到文件尾
4.实时监控文件变化
# 方法1:tail
tail -f app.log
# 方法2:watch
watch -n 1 "wc -l access.log"
# 方法3:inotify(高级)
inotifywait -m /var/www -e modify,create,delete
5.批量重命名
# 将所有.txt改为.log
for f in *.txt; do mv "$f" "${f%.txt}.log"; done
# 或使用rename(需安装)
rename .txt .log *.txt
八、🚨 高危操作警示清单
| 命令 | 危险等级 | 后果 |
|---|---|---|
chmod -R 777 / |
🔥🔥🔥🔥🔥 | 系统崩溃! |
rm -rf / |
🔥🔥🔥🔥🔥 | 删库跑路! |
> /etc/passwd |
🔥🔥🔥🔥🔥 | 无法登录! |
chmod 000 / |
🔥🔥🔥🔥 | 无法操作! |
find / -delete |
🔥🔥🔥🔥🔥 | 清空系统! |
保命法则:
- 操作前备份:
cp file file.bak - 先在测试环境验证
- 使用
ls确认路径:rm -rf / path与rm -rf /path天壤之别 - 启用别名保护:
alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'
九、📚 终极速查表
| 需求 | 命令 | 示例 |
|---|---|---|
| 创建空文件 | touch |
touch app.log |
| 查看小文件 | cat |
cat /etc/hosts |
| 查看大文件 | less |
less /var/log/messages |
| 查看文件尾 | tail |
tail -f app.log |
| 编辑文件 | nano/vim |
nano config.ini |
| 修改权限 | chmod |
chmod 755 script.sh |
| 修改所有者 | chown |
chown nginx:nginx /var/www |
| 查找文件 | find |
find / -name "*.log" -mtime -7 |
| 搜索文本 | grep |
grep -rn "error" /var/log/ |
| 压缩打包 | tar |
tar -czf backup.tar.gz /data |
| 统计行数 | wc |
wc -l /etc/passwd |
| 排序去重 | sort/uniq |
sort file | uniq -c |
🎓 总结 :文件命令是Linux运维的基本功!记住三个原则:
- “less比cat好” :查看日志永远用
less - “软链接比硬链接灵活” :目录链接必须用软链接
- “权限最小化” :755/644是黄金组合,777是系统毒药!
多练习、多模拟、多备份,方能游刃有余!
📖原文: 忘不了就忘不了吧,过往的羁绊弥足珍贵,但时间也会让我们结下新的缘分。-- 辰南《神墓年番》
⌛怡然: ...
更多推荐

所有评论(0)