1. Linux指令基础与使用场景
作为一个从2009年开始接触Linux的老用户,我至今记得第一次在终端里输入ls命令时那种既兴奋又忐忑的心情。十几年过去了,这些看似简单的命令行工具已经成为我日常工作不可或缺的一部分。不同于图形界面操作,命令行提供了更直接、高效的系统交互方式,特别适合批量处理、远程管理和自动化任务。
Linux指令大致可以分为几类:文件操作(如cp、mv)、文本处理(如grep、awk)、系统监控(如top、ps)、网络工具(如curl、ssh)以及权限管理(如chmod、sudo)。掌握这些基础指令后,你会发现很多原本繁琐的操作变得轻而易举。比如用find配合xargs批量重命名文件,或者用sed快速修改配置文件,效率能提升数倍。
新手常见误区是试图记忆所有参数。实际上,90%的日常操作只需要掌握20%的核心参数,其他时候善用
--help和man手册就够了。
2. 文件与目录操作指令详解
2.1 基础导航与查看
pwd(Print Working Directory)是最简单的指令之一,但它在复杂目录结构中能快速定位当前位置。我经常在自动化脚本开头使用它来确认执行路径:
bash复制#!/bin/bash
CURRENT_DIR=$(pwd)
echo "脚本将在 $CURRENT_DIR 目录下执行"
ls可能是使用频率最高的指令。推荐几个实用参数组合:
ls -lht:按修改时间倒序显示,附带人类可读的文件大小ls -d */:仅显示子目录(调试时特别有用)ls -la:显示包括隐藏文件在内的所有文件
cd的进阶技巧:
cd -:快速切换回上一个工作目录cd ~:返回用户主目录(比直接输入完整路径快得多)
2.2 文件操作三剑客
cp命令的-a参数是我最常使用的,它能保留所有文件属性(权限、时间戳等),特别适合备份:
bash复制cp -a /var/www/html /backups/html_$(date +%Y%m%d)
mv除了移动文件外,还是最安全的批量重命名工具。比如将所有.jpg文件改为小写:
bash复制for file in *.JPG; do mv "$file" "${file,,}"; done
rm的-i参数(交互式删除)能避免很多悲剧,但在脚本中更推荐先用ls确认匹配结果:
bash复制# 危险操作前先预览
ls *.log
# 确认无误后再删除
rm *.log
2.3 文件查找与统计
find是文件搜索的瑞士军刀。一个复杂但实用的例子——查找7天前修改过的超过10MB的日志文件并压缩:
bash复制find /var/log -name "*.log" -mtime +7 -size +10M -exec gzip {} \;
du查看目录大小时常配合-h(人类可读)和--max-depth(深度控制):
bash复制du -h --max-depth=1 /home
3. 文本处理与管道艺术
3.1 基础文本查看
cat虽然简单,但配合-n显示行号在调试时非常有用:
bash复制cat -n /etc/nginx/nginx.conf
less比more功能更强大,支持搜索(/)、跳转(g/G)等操作。我习惯设置环境变量让man默认使用less:
bash复制export PAGER=less
3.2 文本过滤三巨头
grep的-v(反向匹配)和-C(显示上下文)参数经常能救命:
bash复制# 查看错误日志,同时显示前后5行
grep -C 5 "ERROR" /var/log/app.log
awk处理结构化文本时效率惊人。比如统计Nginx访问日志中每个IP的访问次数:
bash复制awk '{print $1}' access.log | sort | uniq -c | sort -nr
sed的流编辑能力在批量修改时无可替代。例如统一修改配置文件中的路径:
bash复制sed -i 's|/old/path|/new/path|g' *.conf
3.3 高级管道技巧
将多个命令通过管道(|)连接可以完成复杂任务。一个实际案例——找出占用CPU最高的Java进程并获取其完整命令行:
bash复制ps -eo pid,cmd,%cpu --sort=-%cpu | grep java | head -n 1 | awk '{print $1}' | xargs -I{} cat /proc/{}/cmdline
4. 系统监控与进程管理
4.1 实时监控工具
top运行时按这些键位更高效:
M:按内存排序P:按CPU排序1:展开多核CPU详情q:退出
htop是top的增强版,支持鼠标操作和树状视图。安装方式:
bash复制# Ubuntu/Debian
sudo apt install htop
# CentOS/RHEL
sudo yum install htop
4.2 进程操作指令
ps的参数风格有BSD和UNIX两种,我推荐记忆UNIX风格(带-):
bash复制ps -ef | grep nginx # 查看所有进程
ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%mem | head # 内存占用Top5
kill发送信号时,除了常用的-9(SIGKILL),-15(SIGTERM)更优雅:
bash复制# 先尝试正常终止
kill -15 PID
# 若无效再强制杀死
kill -9 PID
4.3 系统信息查询
free查看内存时加上-h更直观:
bash复制free -h
df的-T参数可以显示文件系统类型:
bash复制df -Th
5. 网络相关指令实战
5.1 连接测试工具
ping的-c参数控制次数,-i调整间隔:
bash复制ping -c 5 -i 0.5 example.com
traceroute(或tracepath)诊断网络延迟时很有用:
bash复制traceroute -n 8.8.8.8 # -n不解析IP为域名
5.2 网络调试利器
netstat逐渐被ss取代,但两者都值得掌握:
bash复制ss -tulnp # 查看所有监听端口
netstat -anp | grep ESTABLISHED # 查看已建立连接
telnet测试端口连通性的快速方法:
bash复制telnet example.com 80
5.3 文件传输命令
scp在服务器间传输文件时,-C启用压缩能提升速度:
bash复制scp -C largefile.tar.gz user@remote:/path/
rsync的-aP参数组合是我的最爱:
bash复制rsync -aP /local/dir/ user@remote:/remote/dir/
6. 权限管理与用户操作
6.1 权限控制指令
chmod的数字表示法(如755)比符号表示法(u+rx)更简洁:
bash复制chmod 755 script.sh
chown修改属主时常用-R递归参数:
bash复制chown -R www-data:www-data /var/www
6.2 用户管理
useradd创建用户时推荐指定家目录和shell:
bash复制useradd -m -s /bin/bash newuser
passwd的-e参数能强制用户下次登录修改密码:
bash复制passwd -e username
7. 实用技巧与排错指南
7.1 历史命令优化
在~/.bashrc中添加这些配置提升效率:
bash复制# 增加历史记录数量
HISTSIZE=10000
HISTFILESIZE=20000
# 忽略重复命令和空格开头的命令
HISTCONTROL=ignoreboth
# 添加时间戳
HISTTIMEFORMAT="%F %T "
7.2 常见问题排查
问题1:Argument list too long错误
解决方案:使用find+xargs替代通配符:
bash复制# 错误写法
rm /path/to/many/files/*
# 正确写法
find /path/to/many/files/ -type f -print0 | xargs -0 rm
问题2:误删重要文件
预防措施:为rm设置别名:
bash复制alias rm='rm -i'
7.3 效率提升技巧
- 使用
!!重复上条命令,特别适合需要sudo时:
bash复制apt update
sudo !!
-
Ctrl+R反向搜索历史命令,输入关键词即可快速定位 -
用
alias创建常用命令的快捷方式:
bash复制alias ll='ls -alF'
alias myip='curl ipinfo.io/ip'
- 善用
tab补全,连续按两次会显示所有可选内容
8. 进阶组合命令示例
8.1 日志分析实战
分析Nginx访问日志,统计最频繁的10个请求:
bash复制awk '{print $7}' access.log | sort | uniq -c | sort -nr | head -n 10
8.2 系统清理脚本
查找并删除30天前的临时文件:
bash复制find /tmp -type f -mtime +30 -exec rm -f {} \;
8.3 批量图片处理
将所有.jpg图片转换为.webp格式:
bash复制for file in *.jpg; do cwebp -q 80 "$file" -o "${file%.*}.webp"; done
9. 终端环境定制建议
9.1 提示符优化
在~/.bashrc中添加:
bash复制PS1='\[\e[32m\]\u@\h \[\e[34m\]\w \[\e[31m\]\$ \[\e[0m\]'
效果:彩色显示用户名、主机名和工作目录
9.2 常用函数示例
快速创建并进入目录:
bash复制mkcd() {
mkdir -p "$1" && cd "$1"
}
使用:mkcd new_directory
10. 安全操作注意事项
- 生产环境执行
rm前务必先备份 - 使用
sudo时确认命令内容,避免误操作 - 敏感操作建议先在测试环境验证
- 定期检查
/etc/crontab和用户cron任务 - 重要命令先通过
echo预览实际执行效果
最后分享一个真实教训:曾经有同事在服务器上执行
rm -rf / tmp/*(/和tmp之间有空格),导致系统被删。因此务必养成检查命令再回车的好习惯。