Linux 命令行艺术:文件、进程与文本处理
FreeGuideOnline
最新
2026-06-12
Linux 命令行艺术:文件、进程与文本处理
引言:为什么你需要掌握命令行
图形界面可以完成日常操作,但在服务器管理、自动化脚本、海量数据处理等场景中,命令行是不可替代的利器。本教程聚焦于 Linux 命令行最核心的三个领域——文件系统操作、进程控制与文本处理流,帮助你打下坚实的 Shell 基础。
文件与目录管理
基础导航命令:pwd, ls, cd
pwd— 显示当前工作目录的绝对路径。ls -lha— 列出详细信息(-l)、人类可读大小(-h)、包含隐藏文件(-a)。cd— 改变目录:cd ..返回上一级,cd -回到上一个目录,cd ~返回家目录。
创建、删除、移动与复制
| 命令 | 用途 | 常用示例 |
|---|---|---|
touch file.txt |
创建空文件或更新时间戳 | touch {a..d}.txt 一次创建多个文件 |
mkdir dir |
创建目录 | mkdir -p parent/child 递归创建 |
rm file |
删除文件 | rm -rf dir/ 强制递归删除目录(危险) |
cp source dest |
复制文件 | cp -r dir1 dir2 递归复制目录 |
mv source dest |
移动或重命名 | mv old.txt new.txt 重命名文件 |
查看文件内容
cat— 一次性输出全部内容。less— 分页浏览,支持/搜索、q退出。head -n 20/tail -n 20— 显示头部或尾部行。tail -f /var/log/syslog— 实时追踪日志文件新增内容。
文件权限与所有者
Linux 的权限体系基于用户(u)、用户组(g)和其他(o),每个文件有三种权限:读(r)、写(w)、执行(x)。
chmod修改权限:- 符号模式:
chmod u+x script.sh给属主增加执行权限。 - 八进制模式:
chmod 755 file对应rwxr-xr-x。
- 符号模式:
chown user:group file改变属主和属组。
查找文件与内容
find— 强大的文件搜索。- 按名称:
find /path -name "*.log" - 按大小:
find . -size +100M - 按修改时间:
find . -mtime -7最近7天修改的文件 - 执行动作:
find . -name "*.tmp" -delete
- 按名称:
locate— 依赖数据库的快速文件搜索(需updatedb更新数据库)。
进程管理
查看进程
ps aux— 列出所有用户的所有进程,显示 CPU、内存占用等信息。ps -ef— 另一种常用格式,特别适合结合grep过滤。top或htop(更友好)— 动态实时监控系统进程和资源。pgrep -l ssh— 根据名称查找进程 ID。
控制进程
- 前台进程:可直接用
Ctrl+C终止;Ctrl+Z将进程挂起到后台。 jobs查看当前终端挂起的任务;fg %1把后台任务调回前台。bg %1使挂起的任务在后台继续运行。&符号:command &直接在后台启动命令。nohup command &— 即使退出终端进程也不会中断。
发送信号
kill 命令用于向进程发送信号,默认发送 TERM(15)信号请求正常终止。
kill -l列出所有信号。kill -9 PID强制杀死进程(SIGKILL),不留清理机会。pkill -f pattern按命令全匹配杀死进程。killall process_name按名称杀死所有同名进程。
文本处理:命令行管道艺术
标准输入输出与管道
Linux 中每个命令都有标准输入(stdin)、标准输出(stdout)和标准错误(stderr)。
- 重定向:
command > file覆盖写入,>>追加写入,2> error.log重定向错误。 - 管道
|将一个命令的输出作为另一个命令的输入,是文本处理的基石。
文本处理五剑客
grep — 文本搜索
grep "error" log.txt搜索包含 error 的行。grep -i "Error"忽略大小写。grep -v "debug"反向匹配(排除)。grep -r "function" src/递归搜索目录。- 结合正则:
grep -E "failed|error"使用扩展正则。
sed — 流编辑器
- 替换:
sed 's/old/new/' file将每行第一个 old 换为 new。 - 全局替换:
sed 's/old/new/g' - 删除行:
sed '/^$/d'删除空行;sed '2,5d'删除第2到5行。 - 就地修改:
sed -i 's/foo/bar/g' file.txt
awk — 数据处理引擎
awk 按字段处理文本,默认字段分隔符为空白。
- 打印特定列:
awk '{print $1, $3}' data.txt - 条件过滤:
awk '$3 > 100' data.txt - 使用自定义分隔符:
awk -F: '{print $1}' /etc/passwd - 变量与计算:
awk '{sum+=$2} END {print "Total:", sum}'
cut — 列裁剪
- 按字符:
cut -c 1-10 file提取每行前10个字符。 - 按分隔字段:
cut -d',' -f2,3 file.csv
sort 和 uniq — 排序与去重
sort -n按数值排序;sort -k2按第二列排序。uniq去除重复行(通常需先排序):sort file | uniq -c统计重复次数。sort -u相当于排序并去重。
实用组合示例
-
统计日志中访问量最高的5个IP
awk '{print $1}' access.log | sort | uniq -c | sort -nr | head -5 -
批量替换文件中的字符串
find . -name "*.conf" -exec sed -i 's/old_domain/new_domain/g' {} \; -
监控特定进程的CPU使用率
watch -n 2 "ps aux | grep nginx | grep -v grep"
进阶技巧:提升效率
- 命令历史:
history查看历史,!number执行历史中某条命令,Ctrl+R反向搜索。 - 别名:在
~/.bashrc中定义alias ll='ls -lha',然后source ~/.bashrc生效。 - xargs:将标准输入转化为命令参数。
find . -name "*.jpg" | xargs rm删除所有找到的 jpg 文件。cat urls.txt | xargs -n 1 curl -O批量下载。
- tee:同时将输出写入文件和 stdout:
command | tee output.txt
总结
命令行是系统管理的肌肉,文本处理是自动化运维的灵魂。掌握文件操作、进程管控以及以管道为核心的文本处理链,你就能将繁琐的任务转化为高效的一行命令。接下来,将这些技巧融入 Shell 脚本,开启自动化编程之旅。
练习建议:找一个日志文件或 CSV 数据,试着只用管道命令完成数据清洗、统计和格式转换。不要依赖图形工具,让键盘成为你的主要接口。