Linux 是现代开发者的必备工具,广泛用于服务器、云计算、容器化(如 Docker)、DevOps 和 AI 等领域。以下是面向开发者的 Linux 快速上手教程,涵盖核心命令、文件管理、Shell 编程和实战技巧。


目录

  1. Linux 简介与发行版
  2. 基础命令速查表
  3. 文件与目录操作
  4. 权限管理
  5. 进程与系统监控
  6. 软件包管理
  7. Shell 脚本入门
  8. 网络与远程连接
  9. 开发环境配置
  10. 实战案例
  11. 注意事项

Linux 简介与发行版

常见发行版对比

发行版适用场景包管理器特点
Ubuntu开发、桌面、云环境apt社区活跃,文档丰富
CentOS服务器、企业级应用yum/dnf稳定性强,兼容 RHEL
Arch Linux高级用户、定制化pacman滚动更新,轻量级
Fedora开发者实验、新技术dnf创新前沿,Red Hat 支持

基础命令速查表

# 系统信息
uname -a                # 查看内核/系统信息
top                     # 实时监控进程
df -h                   # 查看磁盘空间
free -h                 # 查看内存使用

# 文件操作
ls -la                  # 列出目录内容(含隐藏文件)
cd /path/to/dir         # 切换目录
mkdir -p dir1/dir2      # 创建多级目录
cp file1 file2          # 复制文件
mv file1 file2          # 移动/重命名
rm -rf dir              # 删除目录及内容

# 文本处理
cat file.txt            # 查看文件内容
grep "pattern" file     # 搜索文本
head -n 10 file         # 查看前 10 行
tail -f file            # 实时查看日志
sed 's/old/new/g' file  # 替换文本
awk '{print $1}' file   # 提取列

# 权限管理
chmod 755 file          # 修改权限
chown user:group file   # 修改所有者

# 网络
ping google.com         # 测试网络
ifconfig/ip a           # 查看 IP 地址
ssh user@host           # 远程登录
scp file user@host:/path # 传输文件

文件与目录操作

1. 文件查找

# 查找文件
find /path/to/search -name "*.log" -mtime -7  # 7 天内修改的日志文件

# 查找并删除
find . -type f -name "*.tmp" -exec rm {} \;

# 快速定位
locate filename       # 需先执行 updatedb

2. 文件压缩与解压

# 压缩
tar -czvf archive.tar.gz dir/    # gzip 压缩
zip -r archive.zip dir/          # zip 压缩

# 解压
tar -xzvf archive.tar.gz         # 解压 gzip
unzip archive.zip                # 解压 zip

权限管理

1. 权限表示

-rw-r--r-- 1 user group 1234 Jan 1 00:00 file.txt
# 第一组:rw- (所有者可读写)
# 第二组:r-- (组用户只读)
# 第三组:r-- (其他用户只读)

2. 修改权限

chmod u+x script.sh      # 所有者添加执行权限
chmod 755 script.sh      # rwxr-xr-x

3. 特殊权限

chmod +s file            # SUID (运行时以文件所有者身份执行)
chmod +t dir             # Sticky Bit (防止非所有者删除文件)

进程与系统监控

1. 进程管理

ps aux                  # 查看所有进程
top                     # 实时监控
htop                    # 可视化进程监控(需安装)
kill -9 PID             # 强制终止进程
nohup command &         # 后台运行并忽略挂断信号

2. 系统资源监控

vmstat 1                # 每秒报告内存/CPU 使用
iostat -x 1             # 磁盘 I/O 监控
sar -u 1 5              # CPU 使用率统计(需 sysstat)

软件包管理

1. Debian/Ubuntu (apt)

sudo apt update          # 更新源
sudo apt install package # 安装
sudo apt remove package  # 卸载
sudo apt upgrade         # 升级

2. Red Hat/CentOS (yum/dnf)

sudo dnf install package
sudo dnf update
sudo dnf remove package

3. Arch Linux (pacman)

sudo pacman -Sy package   # 安装
sudo pacman -Syu          # 升级系统
sudo pacman -R package    # 卸载

Shell 脚本入门

1. 基本结构

#!/bin/bash
# 计算两个数之和
num1=10
num2=20
sum=$((num1 + num2))
echo "Sum: $sum"

2. 条件判断

if [ -f "file.txt" ]; then
    echo "File exists"
elif [ -d "dir" ]; then
    echo "Directory exists"
else
    echo "Does not exist"
fi

3. 循环

# for 循环
for i in {1..5}; do
    echo "Iteration $i"
done

# while 循环
count=1
while [ $count -le 5 ]; do
    echo "Count: $count"
    ((count++))
done

4. 函数

function greet() {
    echo "Hello, $1!"
}
greet "Alice"

网络与远程连接

1. SSH 密钥管理

ssh-keygen -t rsa -b 4096  # 生成密钥
ssh-copy-id user@host      # 上传公钥

2. 端口转发

# 本地转发(将本地 8080 映射到远程 80)
ssh -L 8080:localhost:80 user@remote_host

# 动态转发(创建 SOCKS 代理)
ssh -D 1080 user@remote_host

3. 网络调试

curl -I http://example.com  # 查看 HTTP 头
tcpdump -i eth0 port 80     # 抓包分析
nmap -p 1-100 192.168.1.1   # 端口扫描

开发环境配置

1. 环境变量

export PATH=$PATH:/new/path     # 临时添加路径
echo $HOME                      # 查看环境变量

2. 多版本管理

# 使用 pyenv 管理 Python 版本
curl https://pyenv.run | bash
pyenv install 3.9.12
pyenv global 3.9.12

# 使用 nvm 管理 Node.js
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
nvm install 18

实战案例

1. 自动化日志清理脚本

#!/bin/bash
LOG_DIR="/var/log/app"
MAX_AGE=7

find $LOG_DIR -type f -name "*.log" -mtime +$MAX_AGE -exec rm {} \;
echo "Logs older than $MAX_AGE days deleted."

2. 监控网站可用性

#!/bin/bash
URL="http://example.com"
STATUS=$(curl -s -o /dev/null -w "%{http_code}" $URL)

if [ $STATUS -ne 200 ]; then
    echo "Website down! Status: $STATUS" | mail -s "Site Down" [email protected]
fi

注意事项

  1. 权限安全:
    • 避免随意使用 sudo,最小化权限。
    • 修改系统文件前备份:sudo cp /etc/file /etc/file.bak
  1. 路径问题:
    • 绝对路径(/home/user/file)与相对路径(./file)。
    • 使用 ~ 表示当前用户目录。
  1. 文本编码:
    • 使用 file file.txt 检查文件编码。
    • 转换编码:iconv -f UTF-8 -t ISO-8859-1 input.txt > output.txt
  1. 历史命令:
    • history 查看命令历史。
    • !123 执行第 123 条历史命令。
  1. 调试技巧:
    • 使用 strace 跟踪系统调用:strace -f -o debug.log ./script.sh
    • 使用 ltrace 跟踪库函数调用。

总结

Linux 是开发者的核心工具,掌握以下技能可显著提升效率:

  • 命令行操作:高效完成文件管理、文本处理、进程监控。
  • Shell 脚本:自动化重复任务,简化运维。
  • 网络与远程管理:安全连接、调试和部署应用。
  • 环境配置:灵活管理开发工具链和依赖。

进一步学习: