🌌提供:
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大文件!会刷屏卡死,应使用moreless
  • 纯查看大文件推荐lesscat适合小文件和合并操作
  • -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/

⚠️ 权限管理铁律:

  1. 永不777:文件755,目录644是黄金法则
  2. Web目录:所有者设为运行用户(nginx/apache),权限755
  3. 脚本执行:必须+x,否则bash script.sh./script.sh失败
  4. SUID风险:慎用!可能提权漏洞,SetUID程序必须严格审计
  5. 递归前备份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可能很慢,用ackag更快
  • 二进制文件:加-a--binary-files=text避免报错
  • 颜色高亮grep --color=auto(CentOS 7默认)
  • 性能:大文件用grepvim搜索快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.gz
  • zip跨平台兼容性更好

六、🔗 文件链接与元数据

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 🔥🔥🔥🔥🔥 清空系统!

保命法则:

  1. 操作前备份cp file file.bak
  2. 先在测试环境验证
  3. 使用ls确认路径rm -rf / pathrm -rf /path天壤之别
  4. 启用别名保护
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运维的基本功!记住三个原则:

  1. “less比cat好” :查看日志永远用less
  2. “软链接比硬链接灵活” :目录链接必须用软链接
  3. “权限最小化” :755/644是黄金组合,777是系统毒药!

多练习、多模拟、多备份,方能游刃有余!



📖原文: 忘不了就忘不了吧,过往的羁绊弥足珍贵,但时间也会让我们结下新的缘分。-- 辰南《神墓年番》

⌛怡然: ...


🪁 LuminKu looks forward to seeing you again 🌌

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐