学习笔记002《Linux零基础入门教程》

77 阅读11分钟

【上海赛申宇机电科技有限公司】 www.saisenyoo.cn 荣誉出品

一套完整的 Linux 教程,从零开始,涵盖 Linux 版本及差异、常用命令行指令、日常使用及运维管理任务,力求让你能够胜任日常的 Linux 系统运维管理工作。

第一部分:Linux 基础知识

  1. 什么是 Linux?

    • Linux 是一种开源的、类 Unix 操作系统内核。
    • 我们通常所说的 "Linux" 指的是基于 Linux 内核的各种发行版。
    • Linux 具有稳定性、安全性、灵活性和强大的命令行工具等优点。
  2. Linux 发行版

    • Debian 系:
      • Debian: 稳定、安全,软件包管理使用 apt
      • Ubuntu: 基于 Debian,用户友好,桌面环境丰富,软件包管理使用 apt
      • Linux Mint: 基于 Ubuntu,更注重用户体验,开箱即用。
    • Red Hat 系:
      • Red Hat Enterprise Linux (RHEL): 商业发行版,提供支持和服务,软件包管理使用 yumdnf
      • CentOS: 基于 RHEL 的社区发行版,免费使用,软件包管理使用 yumdnf
      • Fedora: Red Hat 赞助的社区发行版,注重创新和新技术,软件包管理使用 dnf
    • Arch 系:
      • Arch Linux: 轻量级、高度可定制,滚动更新,软件包管理使用 pacman
      • Manjaro: 基于 Arch Linux,用户友好,提供图形化安装程序和工具。
    • SUSE 系:
      • openSUSE: 社区发行版,提供稳定版和滚动更新版,软件包管理使用 zypper
      • SUSE Linux Enterprise Server (SLES): 商业发行版,提供支持和服务。

    选择发行版

    • 服务器: 推荐 CentOS、Debian、Ubuntu Server。
    • 桌面: 推荐 Ubuntu、Linux Mint、Fedora。
    • 学习: 推荐 Ubuntu、CentOS。
    • 高级用户: 推荐 Arch Linux、Gentoo。
  3. Linux 文件系统

    • Linux 文件系统是一个树状结构,以根目录 / 为起点。
    • 常用目录:
      • /:根目录
      • /bin:存放常用命令
      • /sbin:存放系统管理命令
      • /boot:存放启动文件
      • /dev:存放设备文件
      • /etc:存放配置文件
      • /home:用户家目录
      • /lib:存放库文件
      • /media:挂载可移动设备
      • /mnt:临时挂载点
      • /opt:可选的应用程序
      • /proc:虚拟文件系统,存放内核和进程信息
      • /root:root 用户的家目录
      • /run:存放运行时数据
      • /srv:存放服务数据
      • /sys:虚拟文件系统,存放硬件设备信息
      • /tmp:存放临时文件
      • /usr:存放用户程序和文件
      • /var:存放可变数据,如日志文件

第二部分:Linux 命令行基础

  1. 终端(Terminal)

    • 终端是与 Linux 系统交互的命令行界面。
    • 打开终端:
      • 桌面环境:通常有快捷键或菜单项。
      • 命令行:Ctrl+Alt+T(某些发行版)。
  2. Shell

    • Shell 是一个命令解释器,接收用户输入的命令并执行。
    • 常见的 Shell:
      • Bash (Bourne Again SHell):大多数 Linux 发行版的默认 Shell。
      • Zsh (Z Shell):功能更强大,可定制性更高。
      • Fish (Friendly Interactive SHell):用户友好,易于学习。
    • 切换 Shell:chsh -s /bin/zsh(切换到 Zsh)。
  3. 基本命令格式

    command [options] [arguments]
    
    • command:命令名称。
    • options:选项,通常以 --- 开头。
    • arguments:参数,命令操作的对象。
  4. 常用命令

    • 目录操作

      • pwd:显示当前工作目录。
      • cd:切换目录。
        • cd /path/to/directory:切换到指定目录。
        • cd ..:切换到上级目录。
        • cd -:切换到上一个目录。
        • cd ~cd:切换到当前用户家目录。
      • ls:列出目录内容。
        • ls -l:长格式显示,包括权限、所有者、大小、时间等。
        • ls -a:显示所有文件和目录,包括隐藏文件(以 . 开头)。
        • ls -h:以人类可读的格式显示文件大小(如 1K, 234M, 2G)。
        • ls -t:按修改时间排序。
        • ls -r:反向排序。
      • mkdir:创建目录。
        • mkdir directory:创建单个目录。
        • mkdir -p dir1/dir2:创建多级目录。
      • rmdir:删除空目录。
        • rmdir directory:删除单个空目录。
      • rm:删除文件或目录。
        • rm file:删除文件。
        • rm -r directory:递归删除目录及其内容(谨慎使用!)。
        • rm -f file:强制删除文件,不提示。
        • rm -rf directory:强制递归删除目录及其内容(非常危险!)。
      • cp:复制文件或目录。
        • cp source destination:复制文件。
        • cp -r source destination:复制目录。
      • mv:移动文件或目录,也可用于重命名。
        • mv source destination:移动文件或目录。
        • mv old_name new_name:重命名文件或目录。
      • touch:创建空文件或更新文件时间戳。
        • touch file:创建空文件。
        • touch -a file:仅更新访问时间。
        • touch -m file:仅更新修改时间。
    • 文件内容查看

      • cat:显示文件内容。
        • cat file:显示整个文件内容。
        • cat file1 file2:合并显示多个文件内容。
      • more:分页显示文件内容。 * more file:按页显示文件内容,空格键翻页,q 键退出。
      • less:更强大的分页显示工具,支持上下滚动、搜索等。
        • less file:使用方法与 more 类似,但功能更强大。
      • head:显示文件开头部分。 * head file:默认显示文件前 10 行。 * head -n 20 file:显示文件前 20 行。
      • tail:显示文件结尾部分。 * tail file:默认显示文件最后 10 行。 * tail -n 20 file:显示文件最后 20 行。 * tail -f file:持续显示文件新增内容(常用于查看日志)。
      • grep:在文件中搜索指定文本。 * grep pattern file:在文件中搜索包含 pattern 的行。 * grep -i pattern file:忽略大小写。 * grep -v pattern file:显示不包含 pattern 的行。 * grep -r pattern directory:在目录中递归搜索。
    • 文本处理

      • wc:统计文件行数、单词数、字节数。
        • wc file:显示行数、单词数、字节数。
        • wc -l file:仅显示行数。
        • wc -w file:仅显示单词数。
        • wc -c file:仅显示字节数。
      • sort:对文本行进行排序。
        • sort file:按字母顺序排序。
        • sort -n file:按数字顺序排序。
        • sort -r file:反向排序。
      • uniq:去除重复行。
        • uniq file:去除连续的重复行。
        • sort file | uniq:去除所有重复行(先排序)。
      • cut:提取文本列。
        • cut -d, -f1 file:以逗号为分隔符,提取第一列。
      • paste:合并文本行。
        • paste file1 file2:将两个文件的对应行合并。
      • tr:字符转换或删除。
        • tr a-z A-Z < file:将小写字母转换为大写字母。
        • tr -d abc < file:删除字符 a、b、c。
      • sed:流编辑器,用于文本替换、删除、插入等。
        • sed 's/old/new/g' file:将文件中所有的 old 替换为 new
      • awk:强大的文本处理工具,支持模式匹配、字段提取、计算等。
        • awk '{print $1, $3}' file:打印文件的第一列和第三列。
    • 系统信息

      • uname:显示系统信息。
        • uname -a:显示所有信息。
      • hostname:显示或设置主机名。
      • whoami:显示当前用户名。
      • date:显示或设置日期和时间。
      • cal:显示日历。
      • uptime:显示系统运行时间。
      • w:显示当前登录用户。
      • who:显示当前登录用户(更详细)。
      • last:显示用户登录历史。
      • ps:显示进程状态。
        • ps aux:显示所有进程的详细信息。
      • top:动态显示进程状态和系统资源使用情况。
      • htop:更强大的 top 替代品(需要安装)。
      • free:显示内存使用情况。
        • free -h:以人类可读的格式显示。
      • df:显示磁盘空间使用情况。
        • df -h:以人类可读的格式显示。
      • du:显示目录或文件大小。
        • du -h directory:以人类可读的格式显示目录大小。
        • du -sh directory:只显示总大小。
      • ifconfigip:显示或配置网络接口。
        • ifconfig(旧版)。
        • ip addr:显示网络接口信息。
        • ip link set eth0 up:启用网络接口。
      • ping:测试网络连接。
      • netstatss:显示网络连接、路由表等。
        • netstat -tulnp(旧版)。
        • ss -tulnp:显示监听的 TCP 和 UDP 端口。
    • 用户和权限

      • useradd:添加用户。
      • userdel:删除用户。
      • passwd:设置或修改用户密码。
      • usermod:修改用户信息。
      • groupadd:添加用户组。
      • groupdel:删除用户组。
      • groupmod:修改用户组信息。
      • chown:更改文件或目录的所有者。
      • chgrp:更改文件或目录的所属组。
      • chmod:更改文件或目录的权限。
        • chmod u+x file:给文件所有者添加执行权限。
        • chmod g-w file:移除文件所属组的写权限。
        • chmod o=r file:设置其他用户对文件只有读权限。
        • chmod 755 file:使用数字表示权限(r=4, w=2, x=1)。
    • 包管理

      • Debian/Ubuntu (apt)
        • sudo apt update:更新软件包列表。
        • sudo apt upgrade:升级已安装的软件包。
        • sudo apt install package:安装软件包。
        • sudo apt remove package:卸载软件包。
        • sudo apt search package:搜索软件包。
        • sudo apt autoremove:自动移除不需要的软件包。
      • CentOS/RHEL/Fedora (yum/dnf)
        • sudo yum updatesudo dnf upgrade:更新软件包。
        • sudo yum install packagesudo dnf install package:安装软件包。
        • sudo yum remove packagesudo dnf remove package:卸载软件包。
        • sudo yum search packagesudo dnf search package:搜索软件包。
      • Arch Linux (pacman)
        • sudo pacman -Syu:更新软件包。
        • sudo pacman -S package:安装软件包。
        • sudo pacman -R package:卸载软件包。
        • sudo pacman -Ss package:搜索软件包。
    • 其他常用命令

      • man:查看命令手册。
        • man command:查看命令的详细用法。
      • info:查看命令信息(GNU 格式)。
      • whatis:显示命令的简短描述。
      • which:显示命令的路径。
      • whereis:显示命令、源代码和手册页的路径。
      • locate:快速查找文件(基于数据库)。
      • find:查找文件(实时搜索)。
        • find /path -name "pattern":在指定路径下查找符合模式的文件。
      • history:显示命令历史记录。
      • alias:创建命令别名。
        • alias ll='ls -l':创建 ll 作为 ls -l 的别名。
      • unalias:删除命令别名。
      • clear:清屏。
      • exit:退出终端。
      • sudo:以超级用户权限执行命令。
      • su:切换用户。
      • shutdown:关机。
      • reboot:重启。
      • poweroff:关机(某些系统)。

第三部分:日常使用及运维管理

  1. 文件管理

    • 使用 lscdmkdirrmcpmv 等命令管理文件和目录。
    • 使用 findlocate 查找文件。
    • 使用 targzipbzip2 等命令进行文件压缩和解压缩。
  2. 文本处理

    • 使用 catmorelessheadtail 查看文件内容。
    • 使用 grepsedawk 等命令进行文本搜索和处理。
  3. 用户和权限管理

    • 使用 useradduserdelpasswdusermod 等命令管理用户。
    • 使用 groupaddgroupdelgroupmod 等命令管理用户组。
    • 使用 chownchgrpchmod 等命令管理文件和目录权限。
  4. 进程管理

    • 使用 pstophtop 等命令查看进程状态。
    • 使用 killpkill 等命令终止进程。
  5. 系统监控

    • 使用 uptimewwholast 等命令查看系统负载和登录用户。
    • 使用 free 查看内存使用情况。
    • 使用 df 查看磁盘空间使用情况。
    • 使用 du 查看目录或文件大小。
    • 使用 ifconfigip 查看网络接口状态。
    • 使用 pingnetstatss 测试网络连接。
  6. 软件包管理

    • 使用发行版的软件包管理工具(如 aptyumdnfpacman)安装、更新、卸载软件包。
  7. 定时任务

    • 使用 crontab 命令设置定时任务。
  8. 日志管理

    • 查看系统日志(通常位于 /var/log 目录下)。
    • 使用 journalctl 命令查看 systemd 日志(如果系统使用 systemd)。
  9. 远程登录

    • 使用 ssh 命令远程登录到其他 Linux 系统。
  10. Shell 脚本

    • 编写简单的 Shell 脚本,自动化常用任务。

第四部分:进阶主题

  1. Shell 脚本编程

    • 变量、条件语句、循环语句、函数等。
    • 常用 Shell 脚本示例:
      • 备份文件:
        #!/bin/bash
        
        # 设置备份目录和目标目录
        BACKUP_DIR="/path/to/backup"
        TARGET_DIR="/path/to/target"
        
        # 创建备份目录(如果不存在)
        mkdir -p "$BACKUP_DIR"
        
        # 备份文件
        tar -czvf "$BACKUP_DIR/backup_$(date +%Y%m%d_%H%M%S).tar.gz" "$TARGET_DIR"
        
        echo "Backup completed."
        
      • 批量重命名文件:
        #!/bin/bash
        
        # 设置目录和文件名模式
        DIR="/path/to/files"
        PATTERN="*.txt"
        
        # 循环处理文件
        for FILE in "$DIR/$PATTERN"; do
          # 提取文件名和扩展名
          FILENAME=$(basename "$FILE")
          EXTENSION="${FILENAME##*.}"
          BASENAME="${FILENAME%.*}"
        
          # 生成新的文件名
          NEW_FILENAME="${BASENAME}_new.$EXTENSION"
        
          # 重命名文件
          mv "$FILE" "$DIR/$NEW_FILENAME"
        done
        
        echo "Rename completed."
        
  2. 网络配置

    • 静态 IP 地址配置。
    • DNS 服务器配置。
    • 防火墙配置(如 iptablesfirewalld)。
  3. 服务管理

    • 使用 systemctl(systemd)或 service(SysVinit)管理服务。
    • 常见服务配置(如 SSH、Web 服务器、数据库服务器)。
  4. 磁盘管理

    • 分区、格式化、挂载。
    • LVM(逻辑卷管理)。
    • RAID(磁盘阵列)。
  5. 安全加固

    • SSH 安全配置。
    • 防火墙配置。
    • SELinux 或 AppArmor 配置。
    • 入侵检测系统(IDS)。
  6. 虚拟化和容器

    • KVM、VirtualBox 等虚拟化技术。
    • Docker、Podman 等容器技术。

学习资源

  • 在线文档:
  • 书籍:
    • 《Linux 命令行与 Shell 脚本编程大全》(The Linux Command Line)
    • 《UNIX 环境高级编程》(Advanced Programming in the UNIX Environment)
  • 社区论坛:
    • Stack Overflow、Reddit 上的 Linux 相关板块。
    • 各发行版官方论坛。

总结

这是一套完整的 Linux 教程,涵盖了从基础知识到日常使用及运维管理的各个方面。请根据你的实际需求和学习进度,逐步学习和实践这些内容。记住,实践是掌握 Linux 的关键。