Linux 基本操作

一、Linux 基本概念

Linux 是一种开源、类 Unix 的操作系统内核,由林纳斯·托瓦兹(Linus Torvalds)于 1991 年创建。Linux 系统通常指包含 Linux 内核及各种工具和库的完整操作系统(如 Ubuntu、CentOS、Debian 等发行版)。以下是 Linux 的核心概念:

  1. 开源与自由软件
    • Linux 遵循 GNU 通用公共许可证(GPL),代码公开,允许用户查看、修改和分发。
    • 自由软件强调用户对软件的控制权,支持自由使用、学习、修改和分享。
  2. 内核与用户空间
    • 内核(Kernel):管理硬件资源(如 CPU、内存、磁盘)、进程调度、设备驱动等。
    • 用户空间:运行用户程序和工具(如 Shell、编辑器、编译器),通过系统调用与内核交互。
  3. 发行版(Distribution)
    • Linux 内核结合不同软件包形成发行版,常见的有:
      • Ubuntu:用户友好,适合桌面和服务器。
      • CentOS/RHEL:企业级,注重稳定性。
      • Debian:通用且灵活。
      • Arch Linux:高度自定义,适合高级用户。
    • 每个发行版有独特的包管理器(如 apt、yum、pacman)。
  4. 文件系统
    • Linux 使用层次化文件系统,根目录为 /
    • 重要目录:
      • /home:用户主目录。
      • /etc:配置文件。
      • /var:日志、临时文件。
      • /usr:用户程序和库。
      • /binsbin:基本命令和系统命令。
    • 文件系统类型:ext4(常见)、btrfs、xfs。
    • 文件名区分大小写,无扩展名限制。
  5. 进程与多任务
    • Linux 支持多任务、多用户,允许多个进程并发运行。
    • 每个进程有唯一进程 ID(PID),可用 pstop 查看。
    • 进程分为前台和后台进程。
  6. 权限管理
    • 文件和目录有所有者(owner)、组(group)、其他(others)三种权限:读(r)、写(w)、执行(x)。
    • 使用 chmod 修改权限,chown 更改所有者。
  7. Shell 与命令行
    • Shell 是用户与系统的交互接口,常见为 bash、zsh、fish。
    • 命令行是 Linux 的核心操作方式,高效灵活。
  8. 软件包管理
    • 使用包管理器安装、更新、卸载软件:
      • Debian/Ubuntu:apt.deb 包)。
      • RHEL/CentOS:yum/dnf.rpm 包)。
      • Arch Linux:pacman.
    • 源码安装:./configure && make && make install.
  9. 网络与服务
    • Linux 广泛用于服务器,支持 SSH、HTTP 等服务。
    • 服务管理工具:systemdservice.
    • 网络配置:/etc/network 或 NetworkManager。
  10. 开发环境
    • 支持多种语言(C、Python、Java)。
    • 开发工具:GCC、Make、Git、Vim/Emacs。
    • 调试工具:GDB、Valgrind。

二、Linux 基本操作总结

1. 基础操作(熟悉 Linux 环境)

目标:掌握命令行操作,理解文件系统和权限。

  • 常用命令

    • 文件操作

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      # 列出当前目录内容(详细列表,包含隐藏文件)
      ls -la

      # 切换到 /home/user 目录
      cd /home/user

      # 显示当前工作目录
      pwd

      # 创建目录 test_dir
      mkdir test_dir

      # 创建空文件 example.txt
      touch example.txt

      # 复制 example.txt 到 test_dir
      cp example.txt test_dir/

      # 移动 example.txt 到 test_dir/renamed.txt
      mv example.txt test_dir/renamed.txt

      # 删除 test_dir 及其内容
      rm -rf test_dir
    • 文件查看

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      # 查看文件内容
      cat /etc/passwd

      # 分页查看文件
      less /var/log/syslog

      # 查看文件前 10 行
      head /etc/passwd

      # 实时监控日志文件
      tail -f /var/log/syslog

    • 查找与搜索

      1
      2
      3
      4
      5
      # 查找名为 config.conf 的文件
      find /etc -name "config.conf"

      # 在当前目录递归搜索包含 "error" 的文件
      grep -r "error" .

    • 权限管理

      1
      2
      3
      4
      5
      6
      7
      8
      # 查看文件权限
      ls -l example.txt

      # 赋予文件所有者执行权限
      chmod u+x example.txt

      # 更改文件所有者为 user1,组为 group1
      chown user1:group1 example.txt

    • 系统信息

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      # 查看系统信息
      uname -a

      # 查看磁盘使用情况(人类可读格式)
      df -h

      # 查看内存使用情况
      free -m

      # 实时监控系统资源
      top

  • Shell 基础

    • 输入/输出重定向与管道

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      # 将 ls 输出重定向到 file.txt
      ls > file.txt

      # 追加内容到 file.txt
      echo "New line" >> file.txt

      # 使用管道过滤 ls 输出
      ls | grep ".txt"

      # 从文件读取输入
      cat < file.txt

    • 任务管理

      1
      2
      3
      4
      5
      6
      7
      8
      # 后台运行 sleep 命令
      sleep 100 &

      # 查看后台任务
      jobs

      # 终止进程(假设 PID 为 1234)
      kill -9 1234

  • 练习

    • 创建目录结构,复制/移动文件,修改权限。
    • 使用 grep 搜索日志文件内容。
    • 组合管道命令(如 ps aux | grep python)。

2. 中级操作(系统管理与网络)

目标:掌握系统配置、软件安装和网络操作。

  • 包管理

    1
    2
    3
    4
    5
    6
    7
    8
    9
    # Ubuntu/Debian: 更新包列表并安装 nginx
    sudo apt update
    sudo apt install nginx

    # CentOS/RHEL: 安装 nginx
    sudo yum install nginx

    # 查询已安装包
    dpkg -l | grep nginx

  • 用户与组管理

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    # 创建用户 newuser 并设置主目录
    sudo useradd -m newuser

    # 设置 newuser 密码
    sudo passwd newuser

    # 添加 newuser 到 sudo 组
    sudo usermod -aG sudo newuser

    # 创建组 developers
    sudo groupadd developers

  • 服务管理

    1
    2
    3
    4
    5
    6
    7
    8
    # 启动 nginx 服务
    sudo systemctl start nginx

    # 设置 nginx 开机自启
    sudo systemctl enable nginx

    # 查看 nginx 服务状态
    sudo systemctl status nginx

  • 网络操作

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    # 查看网络接口
    ip addr

    # 测试与 google.com 的连通性
    ping -c 4 google.com

    # 远程登录到服务器
    ssh user@192.168.1.100

    # 传输文件到远程服务器
    scp localfile.txt user@192.168.1.100:/home/user/

  • 脚本编写

    1
    2
    3
    4
    #!/bin/bash
    # 备份 /home/user 目录到 /backup
    tar -czf /backup/backup_$(date +%F).tar.gz /home/user
    echo "Backup completed on $(date)"

  • 练习

    • 安装 Nginx,配置简单 Web 服务器。
    • 编写备份脚本,定时运行(使用 cron)。
    • 配置 SSH 免密登录(ssh-keygenssh-copy-id)。

3. 开发相关操作(程序开发环境搭建)

目标:搭建开发环境,编写、编译和调试程序。

  • 安装开发工具

    1
    2
    3
    4
    5
    6
    7
    8
    # Ubuntu: 安装 GCC、G++、Make
    sudo apt install build-essential

    # 安装 Python3 和 pip
    sudo apt install python3 python3-pip

    # 安装 Git
    sudo apt install git

  • C/C++ 开发

    1
    2
    3
    4
    5
    #include <stdio.h>
    int main() {
    printf("Hello, World!\n");
    return 0;
    }
    1
    2
    3
    4
    5
    # 编译 C 程序
    gcc hello.c -oalya

    # 运行程序
    ./hello

  • Makefile

    1
    2
    3
    4
    all:
    gcc hello.c -o hello
    clean:
    rm -f hello

  • 调试

    1
    2
    3
    4
    5
    # 使用 GDB 调试
    gdb ./hello

    # 使用 Valgrind 检查内存泄漏
    valgrind --leak-check=yes ./hello

  • 版本控制

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    # 配置 Git
    git config --global user.name "Your Name"
    git config --global user.email "your.email@example.com"

    # 克隆仓库
    git clone https://github.com/your/repo.git

    # 添加并提交代码
    git add .
    git commit -m "Initial commit"

    # 推送代码
    git push origin main

  • 练习

    • 编写 C 程序实现文件读写。
    • 使用 Git 管理项目,推送到远程仓库。
    • 使用 GDB/Valgrind 调试程序。

三、学习路径与建议

  1. 初学者(1-2 个月)
    • 安装 Ubuntu,熟悉命令行。
    • 练习文件操作、权限管理和管道。
    • 学习 Vim 或 Nano。
    • 使用 apt 安装软件。
  2. 中级(3-6 个月)
    • 编写 Shell 脚本,自动化任务。
    • 配置 SSH、Nginx,学习网络基础。
    • 管理用户、权限和服务。
    • 使用 findgrep 处理复杂任务。
  3. 高级(6 个月以上)
    • 搭建开发环境(GCC、Python、Git)。
    • 编写 C/C++ 或 Python 程序,使用 Make 和 GDB。
    • 参与开源项目,掌握 Git 工作流。
    • 学习 Docker 或 KVM。
  4. 资源推荐
    • 文档man 命令、/usr/share/doc
    • 书籍The Linux Command LineLinux System Programming
    • 在线教程Linux Journey、freeCodeCamp。
    • 社区:Stack Overflow、Reddit(r/linux)、X 上的 Linux 讨论。

四、总结

熟练操作 Linux 并进行程序开发需掌握: - 命令行:文件操作、搜索、权限管理。 - 系统管理:包管理、用户管理、服务配置、网络操作。 - 开发环境:编译、调试、版本控制。 - 脚本自动化:Shell 脚本、任务自动化。

通过实践(如搭建服务器、编写程序、参与开源项目),6-12 个月可达到熟练水平。建议从基础命令入手,逐步深入系统管理和开发,保持动手实践。