Linux Shell 是系统管理员和开发人员的核心工具,掌握常用操作能极大提升效率。以下是分类整理的 Shell 常用操作及示例:
导航与查看
pwd # 显示当前目录
ls -lht # 按修改时间倒序+人类可读大小显示
tree -L 2 # 树形显示目录结构(深度2层)
文件操作
cp -av src/ dest/ # 归档模式复制(保留属性)
mv -i file1 dir/ # 交互式移动(覆盖前确认)
rm -rf dir/ # 强制递归删除(慎用!)
内容查看
head -n 20 file.log # 查看前20行
tail -f /var/log/syslog # 实时追踪日志
grep -r "error" /var/log/ # 递归搜索关键词
grep
过滤
grep -E "404|500" access.log # 匹配多个模式
grep -v "debug" file.txt # 反向匹配(排除行)
sed
流编辑
sed 's/foo/bar/g' file.txt # 全局替换文本
sed -i.bak '1d' file.txt # 删除首行并备份原文件
awk
数据分析
awk '{sum+=$3} END{print sum}' data.csv # 计算第三列总和
awk -F',' '{print $1,$4}' users.csv # 指定逗号分隔符
进程管理
ps aux | grep nginx # 查看进程详情
kill -9 $(pidof mysqld) # 强制结束进程
htop # 交互式进程监控(需安装)
磁盘与内存
df -hT / # 显示根分区磁盘使用(人类可读)
du -sh * | sort -rh # 排序当前目录大小
free -m # 以MB显示内存
用户与权限
chmod -R 750 /opt/app # 递归设置目录权限
chown user:group file # 修改属主和属组
sudo -u www-data whoami # 以特定用户执行命令
连接测试
curl -I https://example.com # 仅显示HTTP头
wget --limit-rate=1m file.tar.gz # 限速下载
端口与路由
netstat -tulnp # 查看监听端口
ss -s # 更快的socket统计
traceroute -w 1 google.com # 路由追踪(1秒超时)
快捷键
Ctrl+R
:反向搜索历史命令Ctrl+U
:删除光标前所有内容!!
:重复上条命令(如 sudo !!
)重定向与管道
command 2>&1 | tee log.txt # 同时输出到屏幕和文件
diff <(ls dir1) <(ls dir2) # 比较两个命令输出
后台任务
nohup ./script.sh & # 脱离终端后台运行
screen -S session_name # 创建持久会话(防止断开丢失)
变量与条件
today=$(date +%F) # 获取当前日期
[ -f "/path/file" ] && echo "存在" || echo "不存在"
循环示例
for user in $(cat users.list); do
echo "Processing $user..."
done
调试脚本
bash -x script.sh # 显示执行过程
set -e # 遇到错误立即退出
jq
:JSON 处理bash
curl api.example.com | jq '.data[] | .id'
rsync
:增量同步bash
rsync -azP src/ user@remote:/backup/
tmux
:终端复用器(替代 screen)掌握这些操作后,可组合使用解决复杂问题。例如统计日志中每个 IP 的访问次数:
awk '{print $1}' access.log | sort | uniq -c | sort -nr
建议通过 man [command]
查阅手册获取更详细参数说明。