【Linux】命令行常规操作全攻略:入门+实战+速查
- 前言
- [1. Linux 命令行概述与核心应用](#1. Linux 命令行概述与核心应用)
-
- [1.1 命令行释义](#1.1 命令行释义)
- [1.2 典型使用场景](#1.2 典型使用场景)
- [2.Linux 命令行常用方法对比](#2.Linux 命令行常用方法对比)
- 3.核心命令解读
-
- [3.1 核心指令模块](#3.1 核心指令模块)
- [3.2 案例说明:文件与目录操作](#3.2 案例说明:文件与目录操作)
-
- [3.2.1 核心指标说明](#3.2.1 核心指标说明)
- [3.2.2 代码展示](#3.2.2 代码展示)
- [3.2.3 示例结果展示](#3.2.3 示例结果展示)
- [3.3 进阶实战:文本处理与日志分析](#3.3 进阶实战:文本处理与日志分析)
-
- [3.3.1 核心原理](#3.3.1 核心原理)
- [3.3.2 完整代码实现](#3.3.2 完整代码实现)
- [3.3.3 运行结果](#3.3.3 运行结果)
- 4.拓展与应用方向
- 5.总结
前言
Linux 命令行(Terminal / Shell)是每一个开发者、运维工程师、数据工程师绕不开的基本功。无论是管理服务器、跑数据脚本、还是部署项目,命令行都是效率最高的操作方式。
本文以实用为核心,系统梳理 Linux 命令行的常规操作,涵盖文件管理、权限控制、进程管理、网络查询等高频场景,每个命令配合真实案例说明,适合入门到进阶的读者系统学习。
关键词
Linux;命令行;Shell;Terminal;文件操作;权限管理;进程管理;网络命令;grep;awk;运维基础
1. Linux 命令行概述与核心应用
1.1 命令行释义
命令行界面(CLI,Command Line Interface),是用户通过输入文本指令与操作系统交互的方式。Linux 默认的命令解释器是 Bash(Bourne Again Shell)。
相比图形界面(GUI),命令行的核心优势在于:
- 效率高:一行命令完成批量操作
- 可脚本化:命令可以组合、自动化,形成可复用的脚本
- 资源占用低:服务器环境几乎都是纯命令行,哪儿都可以用
- 远程友好:SSH 连接远程服务器,命令行是唯一选择
1.2 典型使用场景
- 后端开发:编译运行代码、查看日志、管理进程
- 数据分析:处理大文件、跑 Python/SQL 脚本、定时任务
- 运维部署:服务器配置、权限管理、网络排查、容器操作
- 日常效率:批量重命名文件、搜索内容、压缩备份
2.Linux 命令行常用方法对比
Linux 命令行操作可以分为几个层级,可以根据场景和技术水平选择合适的方案。
| 方法类型 | 核心特点 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|---|
| 单个命令 | 直接执行单条命令 | 简单直观、快速上手 | 无法自动化、重复操作繁琐 | 临时查询、一次性操作 |
| 管道组合 | 用 ` | ` 连接多个命令 | 灵活强大、一行完成复杂操作 | 需要理解各命令用法、调试困难 |
| Shell 脚本 | 将命令写入 .sh 文件 |
可复用、可维护、支持逻辑控制 | 需要编程基础、调试成本高 | 自动化部署、定时任务 |
| 系统工具 | 使用 systemctl、docker 等 | 专业可靠、生产级别 | 学习曲线陡、配置复杂 | 服务管理、容器编排 |
3.核心命令解读
3.1 核心指令模块
指令模块,指的是常用命令的分类:
- 文件操作 :
ls、cd、mkdir、rm、cp、mv、find - 文本处理 :
cat、grep、awk、sed、sort、uniq - 权限管理 :
chmod、chown、sudo - 进程管理 :
ps、top、kill、pkill、systemctl - 网络命令 :
ping、ssh、curl、wget、ss、lsof - 压缩工具 :
tar、zip、gzip
3.2 案例说明:文件与目录操作
文件操作是使用频率最高的一类命令,几乎每次打开终端都会用到。
3.2.1 核心指标说明
bash
# ls -l 输出解读
-rw-r--r-- 1 admin dev 1024 Apr 1 10:00 config.conf
│││││││││ │ │ │ │ │ │ │ │
│││││││││ │ │ │ │ │ │ │ └─ 文件名
│││││││││ │ │ │ │ │ │ └──── 时间
│││││││││ │ │ │ │ │ └─────── 文件大小(字节)
│││││││││ │ │ │ │ └─────────── 所属组
│││││││││ │ │ │ └──────────────── 所有者
│││││││││ │ └────┴───────────────────── 硬链接数
│││││││││ └──────────────────────────── 文件类型和权限
└─────────┴──────────────────────────── 权限详解:
- 第1位:- 普通文件,d 目录,l 软链接
- 2-4位:所有者权限(rwx)
- 5-7位:所属组权限(rwx)
- 8-10位:其他人权限(rwx)
3.2.2 代码展示
bash
# 查看当前目录详细信息(含隐藏文件,大小人性化显示)
ls -lah
# 递归创建多级目录
mkdir -p /data/project/logs
# 查找当前目录下所有 .log 文件
find . -name "*.log" -type f
# 查找 7 天前修改的日志文件
find /var/log -name "*.log" -mtime +7
# 将找到的文件删除(-exec 执行命令)
find /var/log -name "*.log" -mtime +7 -exec rm -f {} \;
# 批量重命名:把所有 .txt 改为 .md
for f in *.txt; do mv "$f" "${f%.txt}.md"; done
# 复制整个目录及其内容
cp -r /data/project /backup/project_backup
# 移动文件到另一个目录
mv config.conf /etc/app/config.conf
# 创建软链接(快捷方式)
ln -s /data/project/logs /var/log/app_logs
3.2.3 示例结果展示
bash
$ ls -lah
total 48
drwxr-xr-x 5 admin dev 160 Apr 1 17:00 .
drwxr-xr-x 12 admin dev 384 Apr 1 16:00 ..
-rw-r--r-- 1 admin dev 1024 Apr 1 10:00 config.conf
-rw-r--r-- 1 admin dev 2048 Apr 1 09:30 data.csv
drwxr-xr-x 3 admin dev 96 Apr 1 08:00 logs
-rwxr-xr-x 1 admin dev 512 Apr 1 07:00 deploy.sh
$ find . -name "*.log" -type f
./logs/app.log
./logs/error.log
./logs/access.log
$ mkdir -p /data/project/logs
$ echo "创建成功"
创建成功
3.3 进阶实战:文本处理与日志分析
日志排查、数据处理是日常工作的核心场景,这里展示如何用 grep、awk、sed 组合完成复杂任务。
3.3.1 核心原理
- grep:按行搜索,输出匹配的行
- awk:按列处理,支持条件判断和统计
- sed:流编辑器,支持替换、删除、插入等操作
- 管道
|:前一个命令的输出作为下一个命令的输入
3.3.2 完整代码实现
bash
# 1. 查看日志中的错误信息
grep "ERROR" app.log
# 2. 忽略大小写搜索
grep -i "error" app.log
# 3. 显示匹配行的行号
grep -n "timeout" app.log
# 4. 反向匹配:显示不包含关键词的行
grep -v "DEBUG" app.log
# 5. 递归搜索目录下所有文件
grep -r "database" /etc/
# 6. 搭配管道:查看进程中包含 python 的条目
ps aux | grep python
# 7. awk 打印第 1 列和第 4 列(默认空格分隔)
awk '{print $1, $4}' access.log
# 8. awk 统计日志中各状态码出现次数
awk '{print $9}' access.log | sort | uniq -c | sort -rn
# 9. awk 条件过滤:只显示状态码为 500 的行
awk '$9 == 500 {print}' access.log
# 10. sed 将文件中所有 "localhost" 替换为 "127.0.0.1"
sed -i 's/localhost/127.0.0.1/g' config.conf
# 11. sed 删除文件中的空行
sed -i '/^$/d' config.conf
# 12. sed 删除注释行
sed -i '/^#/d' config.conf
# 13. 综合案例:统计 access.log 中各 IP 的请求数,排序输出
awk '{print $1}' access.log | sort | uniq -c | sort -rn | head -10
3.3.3 运行结果
bash
$ grep "ERROR" app.log
2026-04-01 10:23:45 ERROR [main] Database connection failed
2026-04-01 10:24:12 ERROR [worker] Timeout after 30s
$ awk '{print $9}' access.log | sort | uniq -c | sort -rn
1523 200
342 404
89 500
45 403
$ awk '$9 == 500 {print}' access.log
192.168.1.100 - - [01/Apr/2026:10:23:45 +0800] "GET /api/user HTTP/1.1" 500 1024
192.168.1.101 - - [01/Apr/2026:10:24:12 +0800] "POST /api/data HTTP/1.1" 500 2048
$ awk '{print $1}' access.log | sort | uniq -c | sort -rn | head -10
523 192.168.1.100
342 192.168.1.101
198 192.168.1.102
89 192.168.1.103
4.拓展与应用方向
- Shell 脚本编程 :将常用命令组合成
.sh脚本,实现自动化部署、定时备份、监控告警等任务 - 定时任务 crontab :用
crontab -e配置周期性任务,如每天凌晨自动清理日志、定时备份数据库 - vim 编辑器精通:服务器上编辑配置文件的必备工具,掌握基本的插入、保存、退出、查找替换操作
- 环境变量管理 :理解
PATH、export、.bashrc/.zshrc的配置方式,自定义命令别名 - 系统监控与诊断 :结合
df(磁盘)、free(内存)、iostat(IO)、netstat做全面的系统健康检查 - tmux / screen:终端复用工具,SSH 断线不丢失任务,多窗口并行操作
- 权限与安全 :深入理解
sudo、umask、SELinux 等权限机制,提升系统安全性
5.总结
其实吧,Linux 命令行看似门槛高,真实运用的高频命令只有那部分,任何代码语言都差不多。
建议从文件操作和 grep 开始上手,结合实际项目场景逐步积累,命令行是开发者的基本功,早练早受益。