ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

Linux命令行基础:从入门到精通的必备技能

Linux命令行基础:从入门到精通的必备技能

1. Linux命令基础概述

作为一名使用Linux系统超过十年的老用户,我至今记得第一次在终端输入ls命令时看到目录内容整齐列出的震撼。Linux命令行的魅力在于其简洁高效的设计哲学——每个命令都像瑞士军刀上的工具,单一功能做到极致,通过管道组合却能完成复杂任务。对于刚接触Linux的新手来说,掌握基础命令是打开这个开源世界大门的钥匙。

Linux命令主要分为以下几类:文件操作(如ls、cp、mv)、文本处理(grep、awk、sed)、系统管理(ps、top、df)、网络操作(ping、curl、ssh)等。这些命令大多遵循命令 [选项] [参数]的基本格式,选项通常以-或--开头。例如ls -l /home会以长格式列出home目录内容。

新手常见误区:Linux命令区分大小写,LS和ls是完全不同的;选项组合时短格式可以合并,如ls -l -a可简写为ls -la

2. 文件操作核心命令详解

2.1 目录导航与查看

pwd显示当前工作目录,是迷路时的指南针。cd改变目录,支持相对路径(../parent)和绝对路径(/usr/local)。特殊符号~代表用户主目录,-返回上次目录。

ls命令的实用选项组合:

  • ls -lh:人类可读的文件大小显示(KB/MB)
  • ls -lt:按修改时间排序,最新文件在前
  • ls -R:递归列出子目录内容
  • ls --color=auto:不同类型文件彩色显示

2.2 文件操作三剑客

cp复制文件时,-r选项递归复制目录,-i启用覆盖确认。实测cp -a保留所有属性是最安全的复制方式。

mv移动/重命名文件时要注意:

  • 跨文件系统移动实际是"复制+删除"操作
  • 批量重命名可用rename命令或for循环配合mv

rm删除命令要格外小心:

rm -rf / # 灾难性命令!会强制递归删除根目录

建议设置别名保护:

alias rm='rm -i' # 每次删除前确认

2.3 文件权限管理

chmod修改权限的数字表示法:

  • 4=读(r),2=写(w),1=执行(x)
  • 755表示:所有者rwx,组用户rx,其他用户rx

chown改变文件所有者:

chown user:group file # 同时修改所有者和组

3. 文本处理黄金组合

3.1 grep文本搜索

grep是文本搜索的瑞士军刀:

  • grep -r "pattern" /path递归搜索目录
  • grep -i忽略大小写
  • grep -v反向匹配(显示不包含模式的行)
  • grep -A3 -B2显示匹配行前后内容

3.2 sed流编辑器

sed适合批量文本替换:

sed -i 's/old/new/g' file.txt # 原地替换文件内容 sed '/pattern/d' file # 删除匹配行

3.3 awk文本分析

awk适合结构化文本处理:

awk -F: '{print $1}' /etc/passwd # 打印所有用户名 awk '$3 > 1000 {print $0}' file # 打印第三列大于1000的行

4. 系统监控与管理

4.1 进程管理

ps aux显示所有进程,常用组合:

  • ps -ef | grep nginx查找特定进程
  • pstree -p树状显示进程关系

top实时监控系统:

  • 按M按内存排序,P按CPU排序
  • 1显示所有CPU核心详情
  • shift + >/<改变排序字段

4.2 磁盘与内存

df -h查看磁盘使用情况,注意/分区剩余空间。du -sh *查看当前目录各文件/目录大小。

free -h显示内存使用:

  • available列表示可用内存(含buffers/cache)
  • watch -n 1 free -h每秒刷新内存信息

5. 网络相关命令

5.1 连接测试

ping检查网络连通性:

ping -c 4 example.com # 发送4个包后停止

telnet测试端口连通性:

telnet example.com 80 # 测试80端口

5.2 网络调试

curl是强大的网络工具:

curl -I example.com # 仅显示HTTP头 curl -o file.zip http://example.com/file.zip # 下载文件

netstat查看网络状态:

netstat -tulnp # 查看监听中的TCP/UDP端口及对应进程

6. 实用技巧与避坑指南

6.1 命令组合艺术

管道|将前命令输出作为后命令输入:

ps aux | grep nginx | awk '{print $2}' | xargs kill -9

命令替换` `或$():

tar -czf backup-$(date +%Y%m%d).tar.gz /path

6.2 历史命令优化

history查看命令历史,配合!快速执行:

  • !!上一条命令
  • !$上条命令的最后一个参数
  • !n执行历史记录中第n条命令

设置历史记录增强:

export HISTTIMEFORMAT="%F %T " # 记录时间戳 export HISTSIZE=10000 # 内存中保存历史数量 export HISTFILESIZE=20000 # 历史文件记录数量

6.3 常见问题排查

问题:命令找不到(command not found) 解决:

  1. 检查命令是否存在:which command
  2. 检查PATH变量:echo $PATH
  3. 可能需要安装软件包

问题:Permission denied 解决:

  1. 检查文件权限:ls -l
  2. 尝试用sudo执行
  3. 检查SELinux状态:getenforce

7. 进阶学习路径

掌握基础命令后,建议深入学习:

  1. Shell脚本编程(变量、循环、条件判断)
  2. 正则表达式(增强grep/sed/awk能力)
  3. SSH密钥管理与端口转发
  4. 日志分析(journalctl、tail、grep组合)
  5. 性能分析(vmstat, iostat, sar)

我个人的学习建议是:每天掌握3个新命令,通过man阅读手册页,并在实际工作中应用。遇到问题时,先思考如何用命令行解决,这能快速提升熟练度。记住,Linux命令行不是用来死记硬背的,理解其设计哲学才能灵活运用。

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进