Linux 基础命令教程 — 开发者必备

适用人群:所有开发者、运维人员
学习时长:约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自动补全
!!执行上一条命令

学习建议

  1. 先掌握文件操作和查看命令,这是最基础的
  2. 学会grep和find,搜索是日常高频操作
  3. 理解权限系统,chmod和chown必须掌握
  4. 学会查看日志,排查问题的关键
  5. 多练习,命令用多了自然熟练
返回首页