10年学习Linux大师说这些命令不会等于不会Linux

Linux 基础命令入门到精通

📚 目录

  1. 环境准备
  2. 文件和目录操作
  3. 文本处理
  4. 进程管理
  5. 网络管理
  6. 系统监控
  7. 权限管理
  8. 包管理
  9. 高级技巧
  10. 实战场景

1️⃣ 环境准备

1.1 查看系统信息

bash 复制代码
# 系统版本
uname -r
cat /etc/os-release      # CentOS/RHEL
cat /etc/issue           # Debian/Ubuntu

# 硬件架构
uname -m                 # x86_64, aarch64 (Apple Silicon)

# CPU 信息
lscpu
grep ^model name* /proc/cpuinfo

1.2 磁盘空间查看

bash 复制代码
df -h                    # 查看各分区使用率
df -i                    # 查看 inode 使用情况

# 磁盘详情(带 S.M.A.R.T.)
sudo smartctl -a /dev/sda

# 剩余空间监控脚本
watch -n 60 'df -h'

2️⃣ 文件和目录操作

2.1 基础文件命令

命令 说明 示例
ls 列出目录内容 ls -lh (人性化输出)
cd 切换目录 cd ~cd ..
pwd 显示当前路径 pwd -P (物理路径)
mkdir 创建目录 mkdir -p a/b/c (递归创建)
touch 创建空文件 touch file.txt
cp 复制文件 cp -r src/ dst/
mv 移动/重命名 mv old new
rm 删除文件 rm -rf dir/ (慎用!)

2.2 目录操作技巧

bash 复制代码
# 创建多级目录
mkdir -p ~/projects/{web,api}/{src,test}

# 查看目录大小(递归)
du -sh /var/log/*

# 查找大文件
find / -type f -size +500M -exec ls -lh {} \;

# 清理临时文件
find /tmp -type f -mtime +7 -delete

# 隐藏文件操作
ls -a                    # 显示所有(含 . 开头)
touch .gitignore .env

2.3 文件内容查看

bash 复制代码
# 快速预览
cat file.txt            # 全部内容
head file.txt           # 前 N 行
tail -f file.log        # 实时监控日志

# 分页查看
less file.txt           # 支持搜索(/关键词)
more file.txt           # 较旧,少用

# 模糊查找关键词
grep -ri "error" .      # 递归搜索 error 关键字

2.4 文件压缩

bash 复制代码
# 创建压缩包
tar -czvf archive.tar.gz dir/     # gzip (默认)
tar -cjvf archive.tar.bz2 dir/    # bzip2 (压缩率更高)
tar -cJvf archive.tar.xz dir/     # xz (最慢但压缩比最高)

# 解压
tar -xzf archive.tar.gz
tar -tjf archive.tar.bz2          # 预览内容

# zip/unzip
zip -r archive.zip file1.txt file2.txt
unzip archive.zip

# gzip(原地压缩)
gzip file.log                     # 变成 file.log.gz
gunzip file.log.gz                # 还原
zcat file.log.gz                  # 查看压缩文件内容

3️⃣ 文本处理

3.1 grep - 高级搜索

bash 复制代码
# 基础用法
grep "pattern" file.txt
grep -i "pattern" *.log          # 忽略大小写

# 排除匹配
grep -v "pattern" file.txt       # 反向匹配

# 正则表达式
grep -E "pattern1|pattern2" file # 多条件 OR
grep "^error:" log.txt           # 行首 error:

# 统计匹配行数
grep -c "error" /var/log/syslog
grep "$ERR" logs/* | wc -l        # 管道计数

# Perl 模式(更强大)
grep -P "[0-9]{4}" file.txt      # Perl 正则

3.2 sed - 流编辑器

bash 复制代码
# 替换操作
sed 's/old/new/' file.txt              # 仅输出不修改
sed -i 's/old/new/g' file.txt          # 原地替换(-i)

# 多行处理
sed '/ERROR/{n;N;s/\(.*\).*\(\d+\)/\2/' file}   # 跨行替换

# 行号操作
sed '3,5d' file.txt                    # 删除 3-5 行
sed '4i new line' file.txt             # 第 4 行前插入

# 流控制(避免输出)
sed '/pattern/q' file                  # 匹配即停止处理

3.3 awk - 文本分析器

bash 复制代码
# 提取第 2 列
awk '{print $2}' file.txt

# 过滤特定条件
awk '$1 > 80 {print $0}' /proc/netstat

# 统计每列之和
awk '{sum += $4} END {print sum}' file.txt

# 格式化输出(表格)
column -t < file.txt

# 多文件处理
awk 'NR==FNR{a[$1]=$2;next} ($1 in a){print a[$1]}' file1 file2

3.4 sort & uniq

bash 复制代码
# 排序
sort file.txt                              # 默认数字/字典序
sort -rn file.txt                          # 逆序(降序)
sort -k2 -n file.txt                       # 按第 2 列数字排序
sort -t',' -k3 file.csv                    # 自定义分隔符

# 去重
uniq file.txt                              # 仅删除连续重复
sort | uniq -c | sort -rn                  # 统计并排序出现次数

# 组合处理(日志分析)
cat access.log.*/var/log/access.log | grep -E 'GET|POST' | sort | uniq -c > hits.txt

3.5 wc & cut

bash 复制代码
wc -l file.txt           # 行数
wc -c file.txt           # 字节数
wc -w file.txt           # 单词数

# cut(按列切分)
cut -d',' -f1,2,3 file.csv   # CSV 第 1-3 列
cut -f1,3 /etc/passwd         # 默认空格分隔

# paste(多文件合并)
paste file1.txt file2.txt    # 逐行横向拼接

3.6 xargs & tr

bash 复制代码
# xargs(批量处理)
ls *.log | xargs -I{} gzip {}              # 批量压缩
find . -name "*.jpg" -print0 | xargs -0 rm   # 安全删除(空名文件)

# 管道组合
find . -type f -name "*.txt" | xargs tail -5

# tr(翻译/删除字符)
tr '[:upper:]' '[:lower:]' < input.txt      # 转小写
tr -cd 'a-z0-9' < file.txt                  # 只保留字母数字

4️⃣ 进程管理

4.1 基础命令

命令 说明 示例
ps 查看进程快照 ps aux (所有进程)
top 动态监控 top -b -n 1
htop 增强版 top htop (需安装)
kill 终止进程 kill 12345
pkill 按名称杀 pkill nginx
killall 全名杀 killall python

4.2 高级查看技巧

bash 复制代码
# ps 详细视图
ps -ef                    # 传统格式
ps aux --sort=-%mem      # 按内存降序
ps -eo pid,comm,%mem,%cpu,args --sort=-%mem > top_procs.txt

# 查看父进程关系树
pstree -p PID             # 指定进程
tree -p PID               # 同效

# 查找进程(多种方式)
pidof nginx               # 找 PID
pgrep -a "python"         # 找含 python 的所有进程
lsof | grep sshd         # 看谁连接了服务

# 监控网络端口占用
ss -tlnp                  # 监听 TCP 端口
netstat -tulnp            # ss 的旧版

4.3 杀进程(按顺序)

bash 复制代码
#!/bin/bash
# kill_with_priority.sh --- 优雅关闭脚本
processes=("nginx" "mysql" "redis")
for proc in "${processes[@]}"; do
    p=$(pgrep -x $proc) || continue
    echo "[INFO] Killing $proc (PID: $p)"
    kill -15 $p           # SIGTERM (温和)
    sleep 2
    if ! pgrep -x $proc; then
        echo "[OK] $proc stopped"
    else
        echo "[WARN] Force killing $proc..."
        kill -9 $p        # SIGKILL (强制)
    fi
done

# 批量杀进程(谨慎!)
pkill -9 node             # 慎用!

4.4 前台命令后台化

bash 复制代码
# 单例程序
sleep 100 &               # 后台运行

# 重定向输出/错误
nohup long_task.sh > out.log 2>&1 &

# screen(会话管理)
screen -S mysession      # 新建会话
screen -ls               # 列出
screen -r mysession      # 恢复
screen -X quit           # 退出

# tmux(替代方案)
tmux new-session -d "sleep 100"       # 后台
tmux attach-session -t default        # 连接

5️⃣ 网络管理

5.1 基础命令

命令 说明 示例
ping 连通性测试 ping -c 4 www.example.com
curl HTTP 请求 curl https://api.example.com
wget 下载文件 wget url -O file.zip
ss/netstat 端口监听 ss -tlnp
traceroute 路由追踪 traceroute example.com

5.2 curl 高级用法

bash 复制代码
# GET 请求(含 JSON)
curl https://api.github.com/user
curl -X GET https://api.example.com/users?id=1

# POST + 表单
curl -X POST -d "user=bob&pass=secret" http://example.com/login

# POST + JSON Body
curl -X POST \
  -H "Content-Type: application/json" \
  -d '{"name":"Alice","age":30}' \
  https://api.example.com/users

# HTTP 认证(Token)
curl -H "Authorization: Bearer YOUR_TOKEN" https://example.com

# HTTPS 调试(自签名证书警告)
curl -k https://self-signed-ssl.example.com

# 分块下载大文件
wget --progress=bar:force -O /dev/null url

# POST + 多部分表单(multipart/form-data)
curl -X POST \
  -F "file=@image.jpg" \
  -F "caption=Hello!" \
  https://upload.example.com

5.3 下载与断点续传

bash 复制代码
# wget 基础
wget url
wget url -O file.zip           # 指定文件名
wget url -c                     # 断点续传

# 镜像服务器
wget url --mirror              # 完整站点的镜像(慎用!)

# aria2(更快、支持多线程)
aria2c -x 16 "https://example.com/big.iso" \
       -d /tmp -s 16            # 16 线程

# yt-dlp(下载视频)
yt-dlp "url"                   # 需安装

# 浏览器自动化工具
puppeteer                       # Node.js
playwright                      # 跨语言

5.4 DNS & hosts 管理

bash 复制代码
# 测试域名解析
nslookup www.example.com       # BIND9
dig @8.8.8.8 www.example.com   # Google DNS
host www.example.com           # host工具

# 查看/修改 hosts
cat /etc/hosts
sudo nano /etc/hosts           # 添加自定义映射

6️⃣ 系统监控

6.1 实时监控工具

命令 说明 示例
top CPU/内存动态视图 top -b -n 1 head -20
htop 增强版 top htop
vmstat 虚拟内存统计 vmstat 1 (每 1 秒)
iostat IO 监控 iostat -x 1
sar 系统活动报告 sar -u 5

6.2 CPU & 内存分析

bash 复制代码
# top 查看前 N 大进程
top -b -n 1 | head -20

# free + awk(格式化)
free -h | awk '/^Mem:/{printf "内存使用:%s%%\n", $3/$2*100}'

# vmstat 解读
vmstat 1                # 每秒刷新
vmstat 5                # 每 5 秒

6.3 磁盘 IO & 网络监控

bash 复制代码
# iostat(IO 使用率)
iostat -x 2             # 每 2 秒,输出 %util, await 等指标
iostat -e              # 事件统计

# netstat(网络连接)
netstat -s | grep "receive"      # 接收错误
netstat -an | grep ESTABLISHED    # 活跃连接

# ss(推荐替代 netstat)
ss -tuna                 # 所有 TCP/UDP 套接字
ss -s                    # 协议统计

7️⃣ 权限管理

7.1 chmod / chown

bash 复制代码
# chmod(权限变更)
chmod +x file            # 添加执行权限
chmod 644 file           # rw-r--r-- (owner rw, others r)
chmod a+x *.sh           # 所有用户可执行
chmod 700 dir/           # 仅 owner 完全访问

# chown(所有权变更)
chown user:group file    # root 权限
chgrp group dir          # 改组

7.2 umask & setuid

bash 复制代码
# umask(默认创建掩码)
umask                    # 查看当前 (022/077)
touch test; ls -l        # 验证生成文件权限 (rw-r--r--)

# setuid/setgid/sticky(位操作)
chmod u+s file           # owner 设置 UID
chmod g+s dir            # group 写时创建同组文件

# sticky bit (目录保护)
chmod 1777 /tmp          # 仅 owner 可删自文件

7.3 ACL(访问控制列表)

bash 复制代码
# ACL 基础
getfacl file              # 查看完整 ACL
setfacl -m u:user:rx file # 给 user 加权限
setfacl -x u:user file    # 删除 user 的 ACL

# 目录共享场景
mkdir /mnt/backup; setfacl -R -m g:group1:rwX /mnt/backup

8️⃣ 包管理(Debian/RHEL)

8.1 apt (Debian/Ubuntu)

bash 复制代码
# 基础操作
apt update              # 更新索引
apt upgrade             # 系统升级
apt install nginx       # 安装
apt remove nginx        # 卸载(不清除配置)
apt autoremove          # 清理无用依赖

# 来源管理
apt-cache search redis         # 搜索包
apt-cache show redis           # 详情
apt list --upgradable          # 可升级软件包列表

# 虚拟环境
apt install python3-venv venv \
    && cd /home/ubuntu && \
    python3 -m venv myenv \
    && source myenv/bin/activate

8.2 yum/dnf (RHEL/CentOS/Fedora)

bash 复制代码
# 基础操作
yum list                   # 列出所有包
yum search mysql           # 搜索
yum install nginx          # 安装
yum remove nginx           # 卸载
yum clean all && yum makecache     # 清理缓存

# EPEL 扩展源
yum localinstall epel-release   # 启用 EPEL
yum install python39            # EPEL 中才有

8.3 pacman (Arch) / apk (Alpine)

bash 复制代码
# pacman (Arch Linux)
pacman -Syu        # 同步更新
pacman -S nginx     # 安装
pacman -Rs nginx    # 卸载(不删配置)

# apk (Alpine Linux)
apk update && apk add nginx

9️⃣ 高级技巧

9.1 环境变量管理

bash 复制代码
# 查看/设置环境变量
env                    # 查看所有变量
echo $PATH             # 当前 PATH
export VAR=value       # 导出给子进程
unset VAR              # 删除变量

# bashrc / profile(持久化)
vim ~/.bashrc          # 编辑用户配置
. ~/.bashrc            # 立即生效(source)

9.2 管道与重定向

bash 复制代码
# > >> & (标准流)
cmd1 > file              # 覆盖输出
cmd2 >> file             # 追加
cmd3 &                   # 后台任务
cmd4 2>&1               # 重定向错误到 stdout

# | && (管道/逻辑)
ps aux | grep nginx      # 管道筛选
cat file.txt && echo ok  # 前一项成功才执行

9.3 find + xargs + while(批量处理)

bash 复制代码
#!/bin/bash
# find_large_logs.sh --- 清理 7 天前的日志
find /var/log -name "*.log" -mtime +7 -print0 | \
    xargs -0 rm -f

# while(逐文件处理)
find . -type f \( -name "*.csv" -o -name "*.json" \) | \
while IFS= read -r file; do
    echo "处理 $file"
done

9.4 常用技巧速查

技巧 命令示例
查找空文件 find . -type f -empty
统计目录大小 `du -sh /*
查看网络连接数 `netstat -an
清空大文件(保留 inode) : > bigfile.txt
强制刷新文件描述表 exec 3>&1 >&/dev/null; exec 1>&3

🔟 实战场景

场景 1:Web 服务器日志分析

bash 复制代码
# 统计请求来源 TOP20
cat access.log | awk '{print $9}' | sort -u | \
    head -20 | while read domain; do
        echo "Top request: $(echo "$domain" | cut -d'.' -f1)"
    done

# 错误日志提取(匹配 HTTP 4xx/5xx)
grep -E 'HTTP/1\.[01]" [45]' access.log > errors.log

# Nginx 实时监控(tail + awk)
tail -f access.log | grep -v "GET /" | grep -i 'error'

场景 2:批量备份脚本

bash 复制代码
#!/bin/bash
# backup.sh --- 自动备份网站目录
BACKUP_DIR="/backup_$(date +%Y%m%d)"
mkdir -p $BACKUP_DIR
tar -czf $BACKUP_DIR/www.tar.gz /var/www/html
echo "✅ 备份成功:$BACKUP_DIR" >> /backup.log

# 循环清理旧备份(只留最近 7 天)
find /backup -name "backup_*.tar.gz" -mtime +7 -delete

场景 3:健康检查脚本

bash 复制代码
#!/bin/bash
# healthcheck.sh --- Web 服务存活检测
for url in http://localhost:80/health http://127.0.0.1:3000/api/v1; do
    if curl -sf "$url"; then
        echo "✅ $url 正常"
    else
        echo "❌ $url 已崩溃(自动重启)"
        systemctl restart apache2 nginx
    fi
done

📋 常用快捷键(bash/zsh)

快捷键 作用
Ctrl+C 中断当前命令
Ctrl+D 结束会话 / EOF
Ctrl+Z 挂起前台进程
Ctrl+L 清屏并重新排版(类似 clear + cat)
↑↓ 历史记录浏览
Tab 自动补全路径/文件/命令

📚 进一步学习资源

  • Linux man 手册 --- 官方文档,最全命令说明
  • 《鸟哥的 Linux 私房菜》--- 中文经典教材
  • TLDP Project --- 进阶教程

💡 提示 :Linux 命令虽多,但核心思想是 管道 (|)、重定向 (>|>)、脚本化 (bash)。掌握这三板斧,再复杂的问题也能拆解解决!

祝学习愉快!👋

相关推荐
im_AMBER1 小时前
前端性能优化之首屏提速
前端·学习·性能优化
s09071361 小时前
保姆级教程一:ZYNQ-7030开发板安装/烧录Linux系统详细指南(小白必看)
linux·fpga开发·系统安装·zynq
AnalogElectronic1 小时前
树莓派 RP2040 学习笔记1
笔记·学习
_下雨天.1 小时前
Linux系统安全学习
linux·学习·系统安全
我命由我123451 小时前
Git 创建新分支并推送到远程仓库
java·服务器·git·后端·学习·java-ee·学习方法
只说证事1 小时前
计算机应用技术专业,1+X证书选哪个好?
运维·服务器
勇闯逆流河2 小时前
【Linux】基础开发工具(gcc/g++,makefile)
linux·运维·服务器
爱丽_2 小时前
Linux 目录结构与常用命令速查(服务器必备)
linux·运维·服务器