适用人群:所有开发者、运维人员
学习时长:约1-2天
重要程度:★★★★★(必须掌握)
一、文件操作
# ====================
# 目录操作
# ====================
pwd # 显示当前目录
ls # 列出文件
ls -la # 列出详细信息(含隐藏文件)
cd /path/to/dir # 切换目录
cd ~ # 回到家目录
cd .. # 上一级目录
mkdir mydir # 创建目录
mkdir -p a/b/c # 递归创建目录
rmdir mydir # 删除空目录
rm -rf mydir # 强制删除目录(危险!)
# ====================
# 文件操作
# ====================
touch file.txt # 创建空文件
cp file1 file2 # 复制文件
cp -r dir1 dir2 # 复制目录
mv file1 file2 # 重命名/移动
rm file.txt # 删除文件
rm -f file.txt # 强制删除
# ====================
# 查看文件
# ====================
cat file.txt # 查看全部内容
less file.txt # 分页查看(q退出)
head -n 20 file.txt # 查看前20行
tail -n 20 file.txt # 查看后20行
tail -f file.txt # 实时查看(日志)
wc -l file.txt # 统计行数
二、文件搜索
# ====================
# find 查找文件
# ====================
find / -name "*.log" # 按名称查找
find / -name "*.log" -size +100M # 查找大于100M的文件
find / -mtime -7 # 查找7天内修改的文件
find / -type f -name "*.txt" # 只查找文件
find / -type d -name "logs" # 只查找目录
find . -name "*.js" -exec grep "TODO" {} \; # 查找并执行命令
# ====================
# grep 搜索内容
# ====================
grep "error" file.txt # 搜索包含error的行
grep -r "error" /var/log/ # 递归搜索目录
grep -i "error" file.txt # 忽略大小写
grep -n "error" file.txt # 显示行号
grep -c "error" file.txt # 统计匹配行数
grep -v "error" file.txt # 反向匹配(不包含)
grep "error" *.log | head -20 # 搜索并限制输出
# ====================
# which/whereis 查找命令
# ====================
which python # 查找命令路径
whereis nginx # 查找命令相关文件
三、文件权限
# ====================
# 权限说明
# ====================
# r=4(读) w=2(写) x=1(执行)
# 所有者|组|其他人
# rwxr-xr-x = 755
# rw-r--r-- = 644
# ====================
# 修改权限
# ====================
chmod 755 file.sh # 设置权限
chmod +x file.sh # 添加执行权限
chmod -w file.txt # 移除写权限
chmod -R 755 /var/www # 递归修改
# ====================
# 修改所有者
# ====================
chown user:group file.txt
chown -R www:www /var/www/html
四、进程管理
# ====================
# 查看进程
# ====================
ps aux # 查看所有进程
ps aux | grep nginx # 查找特定进程
ps -ef | grep node # 另一种写法
top # 实时查看进程
htop # 增强版top
# ====================
# 进程操作
# ====================
kill PID # 终止进程
kill -9 PID # 强制终止
killall nginx # 按名称终止
pkill -f "node app.js" # 按命令行匹配终止
# ====================
# 后台运行
# ====================
./script.sh & # 后台运行
nohup ./script.sh & # 后台运行(断开终端不停止)
jobs # 查看后台任务
fg %1 # 将任务调到前台
五、系统信息
# ====================
# 系统信息
# ====================
uname -a # 系统信息
cat /etc/os-release # 发行版信息
hostname # 主机名
uptime # 运行时间
# ====================
# 硬件信息
# ====================
lscpu # CPU信息
free -h # 内存信息
df -h # 磁盘使用
du -sh /var/log # 目录大小
lsblk # 块设备信息
# ====================
# 网络信息
# ====================
ip addr # IP地址
ip route # 路由表
ss -tlnp # 监听端口
netstat -tlnp # 监听端口(旧版)
ping google.com # 测试连通性
curl http://localhost # HTTP请求
wget https://example.com/file.zip # 下载文件
六、文本处理
# ====================
# 排序和去重
# ====================
sort file.txt # 排序
sort -u file.txt # 排序并去重
sort -n file.txt # 按数字排序
sort -r file.txt # 逆序
uniq file.txt # 去重(需先排序)
# ====================
# 截取
# ====================
cut -d':' -f1 /etc/passwd # 按分隔符截取
awk '{print $1}' file.txt # 打印第一列
awk -F',' '{print $2}' data.csv # CSV截取
# ====================
# 替换
# ====================
sed 's/old/new/g' file.txt # 替换文本
sed -i 's/old/new/g' file.txt # 直接修改文件
sed -n '10,20p' file.txt # 打印10-20行
# ====================
# 统计
# ====================
wc -l file.txt # 行数
wc -w file.txt # 单词数
wc -c file.txt # 字节数
七、压缩与解压
# ====================
# tar
# ====================
tar -czf archive.tar.gz dir/ # 创建gzip压缩包
tar -xzf archive.tar.gz # 解压gzip压缩包
tar -cjf archive.tar.bz2 dir/ # 创建bzip2压缩包
tar -xjf archive.tar.bz2 # 解压bzip2压缩包
tar -tf archive.tar.gz # 查看压缩包内容
# ====================
# zip
# ====================
zip -r archive.zip dir/ # 创建zip
unzip archive.zip # 解压zip
八、网络工具
# ====================
# SSH
# ====================
ssh user@hostname # 远程登录
ssh -p 2222 user@host # 指定端口
ssh -i key.pem user@host # 使用密钥
# ====================
# SCP(远程复制)
# ====================
scp file.txt user@host:/path/ # 上传
scp user@host:/path/file.txt ./ # 下载
scp -r dir/ user@host:/path/ # 上传目录
# ====================
# rsync(增量同步)
# ====================
rsync -avz ./dir/ user@host:/path/ # 同步目录
rsync -avz --delete ./dir/ user@host:/path/ # 同步并删除目标多余文件
# ====================
# curl
# ====================
curl https://api.example.com # GET请求
curl -X POST -d '{"name":"test"}' -H "Content-Type: application/json" https://api.example.com
curl -o file.zip https://example.com/file.zip # 下载文件
curl -I https://example.com # 只获取响应头
九、系统服务
# ====================
# systemctl(systemd)
# ====================
sudo systemctl start nginx # 启动服务
sudo systemctl stop nginx # 停止服务
sudo systemctl restart nginx # 重启服务
sudo systemctl reload nginx # 重新加载配置
sudo systemctl status nginx # 查看状态
sudo systemctl enable nginx # 开机自启
sudo systemctl disable nginx # 禁止开机自启
# ====================
# 防火墙
# ====================
sudo ufw status # 查看状态
sudo ufw allow 80/tcp # 开放端口
sudo ufw allow 443/tcp
sudo ufw enable # 启用防火墙
# CentOS firewalld
sudo firewall-cmd --state
sudo firewall-cmd --add-port=80/tcp --permanent
sudo firewall-cmd --reload
十、日志查看
# ====================
# 常用日志文件
# ====================
/var/log/syslog # 系统日志
/var/log/auth.log # 认证日志
/var/log/nginx/ # Nginx日志
/var/log/mysql/ # MySQL日志
# ====================
# 查看日志
# ====================
tail -f /var/log/syslog # 实时查看
tail -n 100 /var/log/syslog # 查看最后100行
grep "error" /var/log/syslog # 搜索错误
journalctl -u nginx -f # 查看服务日志
journalctl --since "2024-01-01" # 按时间查看
常用快捷键
| 快捷键 | 说明 |
|---|
Ctrl+C | 终止当前命令 |
Ctrl+Z | 挂起当前命令 |
Ctrl+D | 退出当前Shell |
Ctrl+R | 搜索历史命令 |
Ctrl+A | 跳到行首 |
Ctrl+E | 跳到行尾 |
Tab | 自动补全 |
!! | 执行上一条命令 |
学习建议
- 先掌握文件操作和查看命令,这是最基础的
- 学会grep和find,搜索是日常高频操作
- 理解权限系统,chmod和chown必须掌握
- 学会查看日志,排查问题的关键
- 多练习,命令用多了自然熟练