1. Linux命令概述:从入门到精通的必备工具
Linux作为现代计算领域的基石,其命令行界面(CLI)的强大功能让无数开发者又爱又恨。与图形界面相比,命令行提供了更高效、更灵活的操作方式——一个熟练使用命令行的用户,其工作效率往往是图形界面用户的数倍。我在十多年的Linux系统管理中发现,80%的日常运维工作都可以通过20%的核心命令完成,这就是所谓的"二八法则"在Linux命令中的体现。
Linux命令行的设计哲学遵循UNIX传统:每个程序只做好一件事,通过管道(pipe)将简单工具组合起来完成复杂任务。这种模块化设计使得Linux命令具有惊人的组合潜力。例如,用grep过滤日志、用awk提取字段、用sort排序结果、用uniq统计次数——这些简单命令的组合可以完成复杂的数据分析工作。
提示:Linux命令区分大小写,且大多数选项前需要加短横线(如
-l)或双短横线(如--help)。命令、选项和参数之间需要用空格分隔。
2. 文件与目录操作:Linux系统的基石
2.1 导航与查看:基础中的基础
pwd(Print Working Directory)命令虽然简单,但在复杂的目录结构中能快速定位当前位置。我经常看到新手在深度目录中迷失方向,这时一个简单的pwd就能解决问题。
ls命令可能是使用频率最高的命令之一。通过不同的选项可以获取丰富的信息:
bash复制ls -l # 长格式显示,包括权限、所有者、大小等
ls -a # 显示所有文件(包括隐藏文件)
ls -lh # 人类可读的文件大小(如K、M、G)
ls -t # 按修改时间排序
cd命令用于切换目录,有几个特殊符号需要牢记:
bash复制cd ~ # 返回用户主目录
cd - # 返回上一个工作目录
cd .. # 返回上级目录
2.2 文件操作:创建、复制、移动与删除
touch命令不仅可以创建空文件,更常用于更新文件时间戳。这在构建系统中特别有用:
bash复制touch filename # 如果文件不存在则创建,存在则更新修改时间
cp和mv命令分别用于复制和移动文件。关键选项包括:
bash复制cp -r dir1 dir2 # 递归复制目录
cp -i src dst # 覆盖前提示确认
mv -n src dst # 不覆盖已存在文件
rm命令要谨慎使用,特别是-r(递归)和-f(强制)选项组合:
bash复制rm -rf / # 灾难性命令!会删除系统所有文件
警告:在生产环境中使用
rm时,建议先使用ls确认要删除的文件,然后用echo测试模式匹配结果,最后才执行真正的删除操作。
2.3 文件查看与编辑
cat适合查看小文件,但对于大文件会刷屏。更好的选择是:
bash复制less filename # 分页查看,支持搜索(/)、跳转(g/G)等
head -n 10 file # 查看前10行
tail -n 20 file -f # 查看末尾20行并持续跟踪(-f)
vim和nano是最常用的命令行编辑器。对于新手,nano更友好;而vim虽然学习曲线陡峭,但效率极高。建议至少掌握vim的基础操作:
bash复制vimtutor # 官方教程,30分钟可掌握基础
3. 系统监控与进程管理:运维的核心技能
3.1 系统状态监控
top是实时系统监控的经典工具,但htop提供了更友好的界面(需安装):
bash复制htop # 彩色显示,支持鼠标操作和树状视图
free查看内存使用情况,-h选项更易读:
bash复制free -h
df和du用于磁盘空间分析:
bash复制df -h # 查看文件系统使用情况
du -sh * # 查看当前目录各文件/目录大小
3.2 进程管理
ps命令的选项风格有UNIX(前导单横线)和BSD(无横线)两种:
bash复制ps aux # 查看所有进程(BSD风格)
ps -ef # 查看所有进程(UNIX风格)
kill用于终止进程,常见信号:
bash复制kill -9 PID # SIGKILL,强制终止
kill -15 PID # SIGTERM,优雅终止(默认)
nohup和&组合使进程在退出终端后继续运行:
bash复制nohup command & # 忽略挂断信号,输出重定向到nohup.out
4. 网络操作:连接与诊断
4.1 网络配置与诊断
ifconfig(旧)或ip(新)查看网络配置:
bash复制ip addr show # 显示所有网络接口信息
ping测试网络连通性,traceroute诊断路由:
bash复制ping -c 4 example.com # 发送4个ICMP包
traceroute example.com
netstat或ss查看网络连接:
bash复制ss -tulnp # 查看监听端口和对应进程
4.2 文件传输
curl和wget都是强大的网络工具:
bash复制wget https://example.com/file.zip # 下载文件
curl -O https://example.com/file.zip
curl -X POST -d 'data' http://example.com/api # 发送POST请求
scp和rsync用于安全复制和同步:
bash复制scp file user@remote:/path # 复制到远程
rsync -avz dir/ user@remote:dir/ # 增量同步
5. 文本处理:Linux的杀手锏
5.1 搜索与过滤
grep是文本搜索的瑞士军刀:
bash复制grep -r "pattern" /path # 递归搜索
grep -i "pattern" file # 忽略大小写
grep -v "pattern" file # 反向匹配
find按条件查找文件:
bash复制find /path -name "*.log" -mtime +7 -size +1M -exec rm {} \;
5.2 文本转换与处理
sed和awk是强大的文本处理工具:
bash复制sed 's/old/new/g' file # 替换文本
awk '{print $1}' file # 打印第一列
sort、uniq和wc用于统计:
bash复制sort file | uniq -c | sort -nr # 统计出现频率
wc -l file # 统计行数
6. 权限管理:安全的基础
6.1 用户与组
useradd和usermod管理用户:
bash复制useradd -m -s /bin/bash username # 创建用户
usermod -aG groupname username # 添加用户到组
passwd修改密码:
bash复制passwd username # root用户可修改其他用户密码
6.2 文件权限
chmod修改权限,chown修改所有者:
bash复制chmod 755 file # rwxr-xr-x
chown user:group file
特殊权限:
bash复制chmod +s file # 设置SUID/SGID
chmod +t dir # 设置粘滞位(如/tmp)
7. 实用技巧与高级用法
7.1 命令组合与重定向
管道(|)连接命令:
bash复制cat log.txt | grep "error" | wc -l
重定向:
bash复制command > file # 输出重定向(覆盖)
command >> file # 追加输出
command 2>&1 # 将标准错误重定向到标准输出
7.2 定时任务
crontab管理定时任务:
bash复制crontab -e # 编辑当前用户的任务
# 示例:每天3点执行备份
0 3 * * * /path/to/backup.sh
at命令用于单次定时任务:
bash复制echo "command" | at 3:00 tomorrow
7.3 环境变量与别名
export设置环境变量:
bash复制export PATH=$PATH:/new/path
alias创建命令别名:
bash复制alias ll='ls -alF'
8. 故障排查与系统救援
8.1 日志分析
journalctl查看系统日志(systemd系统):
bash复制journalctl -xe # 查看详细错误
journalctl -f # 跟踪日志
dmesg查看内核日志:
bash复制dmesg | grep -i error
8.2 系统救援
单用户模式(启动时编辑内核参数添加single或init=/bin/bash)
fsck修复文件系统:
bash复制fsck /dev/sda1
chroot进入已挂载的系统进行修复:
bash复制chroot /mnt/sysroot
掌握这些Linux常用命令,你将能应对大多数系统管理和开发任务。记住,熟练使用命令行的关键在于实践——不要害怕尝试,但生产环境操作前务必确认命令后果。建议设置alias rm='rm -i'等安全别名,避免误操作。随着经验积累,你会发现命令行不仅是工具,更是一种思维方式。
