欢迎光临
我们一直在努力

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

Linux 基础命令入门到精通

📚 目录

  • 环境准备
  • 文件和目录操作
  • 文本处理
  • 进程管理
  • 网络管理
  • 系统监控
  • 权限管理
  • 包管理
  • 高级技巧
  • 实战场景

  • 1️⃣ 环境准备

    1.1 查看系统信息

    # 系统版本
    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 磁盘空间查看

    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 目录操作技巧

    # 创建多级目录
    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 文件内容查看

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

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

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

    2.4 文件压缩

    # 创建压缩包
    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 – 高级搜索

    # 基础用法
    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 – 流编辑器

    # 替换操作
    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 – 文本分析器

    # 提取第 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

    # 排序
    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

    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

    # 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 高级查看技巧

    # 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 杀进程(按顺序)

    #!/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 前台命令后台化

    # 单例程序
    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 高级用法

    # 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 下载与断点续传

    # 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 管理

    # 测试域名解析
    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 & 内存分析

    # 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 & 网络监控

    # 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

    # 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

    # 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(访问控制列表)

    # 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)

    # 基础操作
    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)

    # 基础操作
    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)

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

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


    9️⃣ 高级技巧

    9.1 环境变量管理

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

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

    9.2 管道与重定向

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

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

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

    #!/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 服务器日志分析

    # 统计请求来源 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:批量备份脚本

    #!/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:健康检查脚本

    #!/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)。掌握这三板斧,再复杂的问题也能拆解解决!

    祝学习愉快!👋

    赞(0)
    未经允许不得转载:171主机测评 » 10年学习Linux大师说这些命令不会等于不会Linux
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址