1. Linux 命令基础入门指南
作为一个从Windows转战Linux的老用户,我深知初学者面对命令行时的迷茫。记得我第一次登录Linux服务器时,连最基本的目录切换都手忙脚乱。这份指南将系统整理Linux常用命令,特别适合刚接触Linux的开发者、运维人员参考使用。
Linux命令是操作系统的核心交互方式,与图形界面相比,命令行操作更高效、更灵活。特别是在服务器环境、开发部署等场景中,掌握Linux命令是必备技能。本文将从实际工作场景出发,详解最常用的五大类命令及其组合用法。
提示:建议新手在虚拟机或测试环境中练习这些命令,避免在生产环境直接操作
2. 目录管理命令详解
2.1 基础目录操作
mkdir命令是创建目录的基础工具,但它的-p参数特别实用。在实际工作中,我们经常需要创建多层嵌套目录。例如部署Java应用时,可能需要创建/opt/apps/myapp/{bin,conf,logs}这样的目录结构:
bash复制mkdir -p /opt/apps/myapp/{bin,conf,logs}
这个命令会一次性创建完整的目录树,等效于:
bash复制mkdir /opt
mkdir /opt/apps
mkdir /opt/apps/myapp
mkdir /opt/apps/myapp/bin
mkdir /opt/apps/myapp/conf
mkdir /opt/apps/myapp/logs
cd命令的路径参数支持多种写法:
- 绝对路径:
cd /usr/local/bin - 相对路径:
cd ../parent_dir - 特殊符号:
cd ~(用户家目录)、cd -(返回上一个目录)
2.2 目录查看与删除
ls命令的常用组合:
ls -lht:按修改时间倒序显示,带人类可读的文件大小ls -lS:按文件大小排序ls -d */:只显示子目录
删除目录时需特别注意:
bash复制rm -rf /path/to/dir
这个命令极其危险,因为它会无提示地删除目录及其所有内容。我曾不小心在根目录执行过类似命令,幸好是在测试环境。建议:
- 先用
pwd确认当前目录 - 先用
ls查看要删除的内容 - 考虑使用
rm -ri进行交互式删除
3. 文件操作核心命令
3.1 文件查看与搜索
查看文件内容时,根据场景选择不同命令:
cat:适合小文件less:适合大文件(可上下翻页)tail -f:实时监控日志文件
grep是文本搜索的瑞士军刀,几个实用技巧:
bash复制# 搜索Java日志中的异常
grep -n "Exception" catalina.out
# 统计错误出现次数
grep -c "ERROR" app.log
# 搜索多个模式
grep -e "Error" -e "Warning" system.log
3.2 文件权限管理
Linux权限系统对新手可能比较困惑。权限分为三组:
- 所有者(u)
- 所属组(g)
- 其他用户(o)
数字权限计算方法:
- r(读)=4
- w(写)=2
- x(执行)=1
所以chmod 755 filename表示:
- 所有者:4+2+1=7(rwx)
- 组:4+1=5(r-x)
- 其他:4+1=5(r-x)
4. 用户与组管理实战
4.1 用户管理规范
创建部署用户的标准流程:
bash复制# 创建应用组
groupadd -g 2001 appgroup
# 创建用户并指定主组
useradd -u 1001 -g appgroup -m -s /bin/bash appuser
# 设置密码
passwd appuser
# 添加到附加组(如sudo组)
usermod -aG sudo appuser
4.2 权限控制技巧
ACL(访问控制列表)提供了更精细的权限控制。例如,给开发团队临时访问日志目录:
bash复制# 查看现有ACL
getfacl /var/log/myapp
# 添加读写权限
setfacl -Rm g:devteam:rw /var/log/myapp
# 设置默认ACL(新建文件继承)
setfacl -dm g:devteam:rw /var/log/myapp
5. 实用命令组合技巧
5.1 管道与重定向
管道(|)是Linux最强大的特性之一。几个实用组合:
bash复制# 查找并处理文件
find /opt -name "*.log" | xargs ls -lh
# 统计Java进程数量
ps -ef | grep java | grep -v grep | wc -l
# 分析日志中的高频错误
cat app.log | grep "ERROR" | cut -d' ' -f4- | sort | uniq -c | sort -nr
5.2 压缩与归档
不同压缩格式的选择建议:
.tar.gz:通用性好,压缩率中等.tar.bz2:压缩率高,但较耗时.zip:适合与Windows系统交互
备份网站目录的完整示例:
bash复制# 创建带时间戳的压缩包
tar -zcvf backup_$(date +%Y%m%d).tar.gz /var/www/html
# 排除某些目录
tar -zcvf backup.tar.gz --exclude='cache' --exclude='tmp' /var/www
6. 常见问题排查指南
6.1 权限问题诊断
遇到"Permission denied"时的检查步骤:
ls -l查看文件权限id查看当前用户信息groups查看用户所属组getfacl查看特殊权限设置
6.2 磁盘空间管理
磁盘爆满的应急处理:
bash复制# 查找大文件
find / -type f -size +100M -exec ls -lh {} \;
# 按目录统计大小
du -h --max-depth=1 / | sort -h
# 清理日志文件
find /var/log -name "*.log" -mtime +30 -exec rm {} \;
6.3 网络连接检查
基本网络诊断命令:
bash复制# 检查连通性
ping example.com
# 查看路由
traceroute example.com
# 检查端口
telnet example.com 80
nc -zv example.com 80
# 查看监听端口
netstat -tulnp
ss -tulnp
7. 进阶学习建议
掌握基础命令后,可以进一步学习:
- Shell脚本编程
- 正则表达式
- sed和awk文本处理
- 系统性能监控命令(top, vmstat, iostat等)
- SSH高级用法
建议每天学习2-3个新命令,并通过man命令查看完整文档。例如:
bash复制man grep
记住,Linux命令的学习是积累的过程。我个人的经验是准备一个cheatsheet,记录常用但容易忘记的命令组合。经过3-6个月的持续使用,这些命令就会变成你的第二本能。