如何更好地学习 Linux:从记住命令到独立解决问题

如何更好地学习 Linux:从记住命令到独立解决问题

从盲打练习、基础知识到日志分析和故障排查,分享通过实际任务学习 Linux 的方法,附四周练习计划、英文阅读推荐与 GNU/Linux 学习视频资源。

前言

刚开始学习 Linux 时,很容易陷入一种循环:打开教程,照着输入命令,看到相同的结果,然后觉得自己学会了。过了几天,换一个目录、换一台机器,或者遇到一句报错,又不知道该怎么办。

这通常是因为学习停留在了模仿操作上。命令的拼写记住了,却没有理解它在处理什么对象,也不知道执行后该怎样判断结果。

想把 Linux 学得更扎实,可以给每次练习加上三个问题:我想解决什么问题?为什么使用这条命令?怎样确认操作成功?

这篇文章就沿着这个思路,聊聊环境怎么准备、基础怎么学,以及怎样把教程里的知识变成自己的能力。

一、先了解什么是 Linux 操作系统

开始敲命令之前,先弄清楚自己正在学习什么,会更容易理解后面的内容。

操作系统负责什么?

操作系统(Operating System,简称 OS)负责管理计算机的硬件资源,并为应用程序提供运行环境。打开文件、启动程序、分配内存、通过网络收发数据,都需要操作系统参与。

Windows、macOS 和基于 Linux 的系统,都是我们接触计算机时可能使用的操作系统。

Linux、内核和发行版有什么区别?

严格来说,Linux 是一个操作系统内核(Kernel)。内核是操作系统的核心部分,负责进程调度、内存管理、设备访问等基础工作。Linux 最初由 Linus Torvalds 在 1991 年发布,随后在众多贡献者的参与下持续发展。

日常所说的“安装 Linux”,通常是安装一个 Linux 发行版(Distribution)。发行版将 Linux 内核、系统工具、软件包管理器及其他软件组合起来,提供可安装、可使用的系统;面向桌面的安装方案通常还会提供图形界面。

例如,Ubuntu、Debian、Fedora 和 Arch Linux 都是 Linux 发行版。它们使用 Linux 内核,但在软件包管理、默认配置、更新方式等方面有所不同。

可以通过下面这组关系来理解:

名称主要含义
Linux 内核管理硬件资源,为程序提供基础系统能力
Linux 发行版将内核与其他软件整合成可以安装和使用的系统
桌面环境提供窗口、面板、应用菜单等图形交互功能,例如 GNOME、KDE Plasma
终端与 Shell终端提供文本交互界面,Shell 解释命令并组织程序执行,Bash 是一种常见的 Shell

因此,Linux 可以有图形桌面,也可以在服务器上主要通过命令行使用。学习命令行,是为了更方便地管理系统、组合工具和实现自动化。

为什么有时称为 GNU/Linux?

许多常见的 Linux 发行版使用了 GNU 项目提供的工具和组件,例如 Bash、GNU Coreutils 和 GCC。GNU/Linux 这个名称强调了 GNU 软件与 Linux 内核共同构成系统的重要作用。

不过,Linux 内核也可以与其他工具组合使用。阅读资料时,需要结合上下文判断作者说的是内核、发行版,还是更广泛的生态。

对初学者来说,先把“内核”“发行版”“桌面环境”和“Shell”区分开,就能少一些困惑:更换桌面主题是在调整界面,学习 Bash 是在学习一种命令解释器,而更换发行版则可能改变软件管理和系统配置方式。

官方网站与资料入口

想进一步了解 GNU/Linux 与 Linux,可以从下面的官方资料开始:

网站或资料可以了解什么
GNU 项目官网GNU 系统、GNU 软件与自由软件理念
GNU 官方:Linux 与 GNUGNU 项目对 GNU 与 Linux 关系及 GNU/Linux 名称的说明
Linux 内核官网(kernel.org)Linux 内核发布、源代码及相关开发资源
Linux 内核文档内核使用、管理与开发文档,适合后续深入查阅

GNU/Linux 是一类系统的称呼,各发行版有各自的官方网站。下载完整系统时,应前往所选发行版的官网;kernel.org 提供的是内核相关资源。

常见发行版的官方网站

发行版官网入口可以从哪里开始了解
Ubuntuubuntu.com桌面版、服务器版与安装文档
Debiandebian.org系统下载、安装指南与社区支持
Fedorafedoraproject.org面向桌面、服务器等场景的不同版本
Linux Mintlinuxmint.com桌面系统介绍、下载与安装指南
Arch Linuxarchlinux.org系统下载、软件包与 ArchWiki 文档

下载前,先阅读对应版本的安装说明,确认镜像适用的处理器架构。例如,amd64 或 x86_64 通常指 64 位 x86 平台,并不意味着只能用于 AMD 处理器;ARM 平台则需要对应的镜像。下载页面提供校验值或签名时,也可以按照官方说明验证文件。

进一步了解自由软件与开源软件

自由软件(Free Software)中的“自由”,强调用户运行、研究、修改和分享软件的自由。 这里的 Free 指自由,软件可以免费提供,也可以收费销售;研究和修改软件则需要能够获取源代码。

开源软件(Open Source Software)也需要符合相应的许可条件,能够看到源代码并不自动意味着可以任意使用、修改和分发。自由软件与开源软件在许多具体软件上有所重合,但理念和表述重点有所不同。

想进一步了解这段历史,可以观看《自由与开源软件的诞生:GNU/Linux前世今生》。下方提供嵌入播放器,读者可以直接点击播放,也可以通过标题链接前往 B 站观看。

Linux 与 Windows、macOS 有什么区别?

它们都能管理硬件、运行程序,也都可以通过图形界面和命令行操作。主要差异在于系统的组成与开放程度、软件生态、硬件支持,以及默认的管理方式。下面以常见桌面发行版与个人电脑使用场景为例进行比较。

对比维度Linux 发行版WindowsmacOS
系统组成与开放程度Linux 内核和大量基础组件是开源软件;发行版也可能包含专有软件或固件系统核心主要为专有软件,也包含开源组件系统包含开源的 Darwin 基础与专有的桌面、框架及应用组件
硬件与安装可以安装在多种硬件平台上,具体设备支持取决于内核、驱动与发行版广泛用于不同厂商的个人电脑,通常由厂商提供对应驱动由 Apple 为其 Mac 硬件提供整合的系统体验
软件安装常通过发行版的软件仓库与包管理器安装、更新,也可使用其他软件分发方式常通过安装程序、Microsoft Store 或包管理工具安装常通过 App Store、应用安装包或包管理工具安装
界面与定制可以选择不同桌面环境、窗口管理器和系统组件提供统一的主要桌面体验,并支持系统设置及第三方定制提供统一的桌面体验,围绕 Apple 的设计与生态整合
应用选择常用于服务器、开发与自动化;桌面应用需逐项确认支持情况桌面商业软件和游戏生态广泛,具体兼容性取决于应用与硬件支持许多开发、办公与创作应用,也是 Apple 平台应用开发的重要环境

软件能否使用,要看它是否提供对应系统的版本。 Windows 的 .exe 程序通常不能直接作为 Linux 原生程序运行。部分软件可以借助兼容层或虚拟机使用,但兼容程度需要具体确认。迁移之前,最好先列出自己必需的软件、游戏和外设,再检查它们的支持情况。

日常操作方式也有差异。例如,在常见 Linux 环境中,文件系统组织在以 / 为根的目录树下,其他磁盘可以挂载到其中的目录;Windows 用户则更常接触 C:、D: 这样的盘符。Linux 上常见的文件系统通常区分文件名大小写,notes.txt 与 Notes.txt 可以是两个文件;Windows 和 macOS 的常见默认配置通常不区分大小写,但具体行为仍取决于文件系统与设置。

Linux 的工具组合方式值得重点学习:一个程序输出文本,另一个程序继续筛选、统计或处理,再通过脚本重复执行这些步骤。Windows 和 macOS 同样具备命令行与自动化能力,macOS 也有 Unix 基础;使用 Linux 时,通常会更频繁地接触这些管理方式。

选择系统时,可以从实际任务出发。依赖特定桌面软件、游戏或外设,就先检查兼容性;希望学习服务器管理、部署与系统配置,可以准备一个 Linux 环境;需要开发 Apple 平台应用,则要关注相应工具对 macOS 的要求。初学阶段完全可以保留日常使用的系统,通过虚拟机或 WSL 逐步练习 Linux。

学习 Linux,具体是在学什么?

入门阶段,主要学习文件与目录、用户与权限、进程与服务、网络、软件安装,以及通过命令行和脚本完成任务。理解这些基础之后,再根据自己的方向深入服务器运维、软件开发、网络安全或桌面使用。

可以先给自己设定一个目标:能够说清系统中的基本对象,完成常见操作,并在出错时找到检查的入口。 带着这个目标准备练习环境,后面的学习就更有方向。

配合视频开始入门练习

了解基本概念后,可以接着观看《【GeekHour】30分钟Linux入门教程》。建议先准备好练习环境,观看时按需暂停,在自己的测试目录中动手操作,并检查每一步的结果。

下方可以直接点击播放,也可以通过标题链接前往 B 站观看。

二、准备一个能够反复练习的环境

学习 Linux,需要一个可以随时打开、允许自己犯错的环境。

如果电脑主要使用 Windows,可以通过 WSL 练习文件操作、文本处理和 Shell 脚本。如果希望完整体验系统启动、磁盘分区和网络配置,可以使用虚拟机。已经有测试服务器的,也可以通过 SSH 连接练习。

初期选一个常见发行版持续使用就够了。先熟悉它的目录结构、软件包管理方式和服务管理工具,再接触其他发行版,会更容易看清它们的共性与差异。

在虚拟机中完成基础安装后,可以保存一个快照。后续进行重要配置前再建立快照,遇到问题时就有机会比较和恢复。

日常练习则使用普通用户,并把实验文件集中放在自己的目录中:

bash
mkdir -p ~/linux-lab
cd ~/linux-lab
pwd

pwd 输出的路径,应该是当前用户主目录下的 linux-lab。从第一步开始,就养成操作后检查结果的习惯。

三、练好盲打(Touch Typing),让操作跟得上思路

学习 Linux 时,盲打(Touch Typing)是一项很重要的基本功。这里说的盲打,是不看键盘也能准确输入字母、数字和常用符号。

使用终端时,我们经常需要一边看文档、日志和报错,一边输入命令。如果每输入几个字符就低头寻找按键,注意力会不断在屏幕与键盘之间切换。把键位练熟之后,就能把更多精力放在理解命令和观察结果上,写脚本、修改配置时也会更顺畅。

练习可以从下面几件小事开始:

  1. 先熟悉指法和键位:以 F、J 键上的定位凸点为参照,逐步做到输入时少看键盘。
  2. 先求准确,再提高速度:放慢一点,把每个字符输入正确,减少反复删除和重输。
  3. 专门练习终端常用符号:除了英文字母,还要熟悉 /、-、_、.、引号、括号、管道符 | 和重定向符号 > 的位置。
  4. 把练习融入日常操作:每天花十分钟练习,在测试目录里输入自己理解的命令,再写几行简单脚本。

尤其要区分直引号与中文弯引号、半角符号与全角符号。一个不起眼的字符差异,就可能改变命令的含义,或者导致语法错误。

同时,也要学会使用终端的补全和编辑功能。在常见的 Bash 配置中,Tab 可以补全路径和命令,方向上键可以调出历史命令,Ctrl + R 可以搜索历史记录。理解这些操作,再配合盲打,日常使用会轻松很多。

不必等到打字很快才开始学习 Linux,可以一边学一边练。盲打的目标是让输入更加准确、连贯;执行命令前,仍然要停下来检查路径、参数和操作范围。

推荐的盲打工具与练习网站

入门练习,我推荐先试试金山打字通。如果希望直接在浏览器里练习,也可以使用下面几个网站:

下面推荐的工具都可以免费进行基础打字练习。 其中,TypingClub 和 Keybr 另有可选付费方案;日常入门练习可以先使用免费功能,不需要为了开始练习而购买会员。

工具或网站适合怎样练习访问链接
金山打字通作为入门打字练习工具,配合前面的指法与键位训练使用访问金山打字通
TypingClub跟随课程学习盲打,通过手部姿势提示和分级练习熟悉键位打开 TypingClub
Keybr进行英文键位与输入练习,作为每天的短时间训练打开 Keybr
Monkeytype熟悉键位后进行打字测试,观察练习表现打开 Monkeytype

如果刚开始练习,可以选择金山打字通或 TypingClub,先把指法和键位练熟;有了一定基础后,再用 Keybr 或 Monkeytype 持续练习英文输入。不必同时使用所有工具,选一个自己愿意每天打开的就够了。

学习 Linux 时,英文输入和符号输入尤其值得单独练习。完成网站上的训练后,可以回到自己的测试目录,输入几条已经理解的命令,练习路径、参数和引号的准确输入,把盲打能力用到实际操作中。

四、先理解系统,再逐步扩充命令

Linux 的命令很多,初学阶段可以围绕下面几组知识建立框架。

学习主题需要理解的问题可以完成的练习
文件与目录当前在哪里?路径如何表示?创建目录,复制和移动文件
用户与权限谁可以访问文件?执行权限有什么作用?检查文件权限,为自己的脚本增加执行权限
文本处理怎样从大量内容中找到需要的信息?搜索日志,统计记录,提取字段
进程与服务程序是否运行?为什么退出?查看进程,检查服务状态与日志
网络基础地址是否正确?服务监听在哪里?查看接口、路由和监听端口
存储与软件包空间用在哪里?软件如何安装?查看磁盘使用情况,查询已安装的软件包

这些主题可以交替练习,不必等某一部分“全部学完”再继续。

例如,运行脚本时遇到权限问题,正好回头学习文件权限;启动服务失败时,再结合日志和配置文件一起分析。知识在实际问题中连接起来,理解会更牢固。

文件与目录:理解路径比记住选项更重要

Linux 中的目录与文件组成一棵以 / 为起点的树。这个起点叫作根目录(Root Directory)。硬盘分区、U 盘等文件系统可以通过挂载(Mount)接入这棵目录树,例如挂载到 /mnt/data;某个目录是否位于另一块磁盘上,不能仅凭目录名判断。

下面是一份简化的目录示意,实际布局会随发行版和安装方案有所不同:

text
/
├── home/
│   └── alice/
│       ├── linux-lab/
│       └── .bashrc
├── root/
├── etc/
├── usr/
│   ├── bin/
│   ├── lib/
│   └── share/
├── var/
│   └── log/
├── tmp/
├── boot/
├── dev/
├── proc/
├── sys/
├── run/
├── opt/
├── media/
└── mnt/

先熟悉这些常见目录的分工:

路径常见用途初学者需要注意的地方
/整个目录树的起点与管理员的主目录/root 不同
/home通常存放普通用户的主目录例如/home/alice,日常练习可以放在自己的主目录中
/rootroot 管理员的主目录普通用户不应把这里作为日常工作目录
/etc系统和服务的配置文件修改前理解配置含义,必要时保留副本
/usr系统提供的大量程序、库和共享数据这里通常不是存放个人文档的地方
/usr/bin大量用户命令与可执行程序自己的练习脚本可以先放在主目录中
/usr/local本地管理员安装的软件及相关文件常用于与发行版管理的软件区分
/var日志、缓存、队列等变化数据数据增长可能占用磁盘空间
/var/log常见日志存放位置有些日志由 journal 管理,应配合journalctl 查看
/tmp临时文件内容可能被清理,不适合长期保存重要资料
/boot内核与启动相关文件不应随意删除或修改
/dev设备文件,如磁盘设备节点对设备文件写入可能直接影响设备数据
/proc进程与内核状态的虚拟接口许多内容由内核动态提供,不是普通磁盘文件
/sys设备与内核子系统的虚拟接口部分可写条目用于调整系统状态
/run本次启动期间的运行时数据通常不用于持久保存文件
/opt附加应用软件具体布局取决于软件安装方式
/media、/mnt常用于挂载可移动介质或其他文件系统实际挂载位置因系统而异,也可能位于/run/media 下

你还可能看到 /bin、/sbin、/lib 等路径。在许多现代发行版中,它们是指向 /usr 下对应目录的符号链接;可以通过 ls -ld /bin /sbin /lib 查看本机情况。初学时理解它们与程序、管理命令、库有关即可。

绝对路径、相对路径与主目录

以 / 开头的是绝对路径,例如 /home/alice/linux-lab/notes.txt。相对路径从当前目录出发,例如 linux-lab/notes.txt。

  • . 表示当前目录,./hello.sh 表示当前目录中的脚本。
  • .. 表示上一级目录,cd .. 可以返回上一层。
  • ~ 在常见 Shell 中会展开为当前用户的主目录,普通用户通常对应 /home/用户名,root 用户通常对应 /root。
  • 以 . 开头的文件名通常在普通目录列表中隐藏,例如 .bashrc;使用 ls -a 可以查看。隐藏只是显示习惯,不表示加密或访问受限。

例如,先运行 cd ~ 回到主目录,再运行 pwd 查看位置。之后进入 linux-lab,再次查看 pwd,就能观察相对路径如何依赖当前目录。

遇到一个陌生文件时,先确认它在哪里、属于谁、由哪个程序使用,再决定如何操作。

理解分区结构:磁盘怎样接入目录树?

目录结构描述文件放在哪里,分区结构描述存储空间怎样划分。学习时,可以先区分下面几个概念:

概念含义示例
磁盘或块设备提供存储空间的设备/dev/sda、/dev/nvme0n1
分区表记录磁盘分区布局的信息GPT、传统的 MBR 分区表
分区(Partition)在磁盘上划分出来的一段区域/dev/sda1、/dev/nvme0n1p1
文件系统(Filesystem)在存储空间中组织文件、目录和元数据的方式ext4、XFS、Btrfs、FAT32
挂载点(Mount Point)某个文件系统接入目录树的位置/、/home、/mnt/data

一个常见关系是:磁盘划分出分区,分区中建立文件系统,文件系统挂载到某个目录。 实际系统还可能包含加密、LVM 逻辑卷、软件 RAID 等中间层,也可能直接在整个设备上建立文件系统,因此这只是入门时的简化模型。

看懂磁盘和分区名称

/dev/sda 通常表示一块通过相应驱动呈现的磁盘,/dev/sda1、/dev/sda2 是它的分区。NVMe 设备常使用 /dev/nvme0n1 这样的名称,对应分区写作 /dev/nvme0n1p1、/dev/nvme0n1p2。

虚拟机中也可能看到 /dev/vda 等名称。设备名取决于硬件和驱动,连接顺序变化时也可能改变;持久挂载配置中经常使用文件系统的 UUID 来标识目标。

一个常见的 UEFI 安装布局

下面以一块采用 GPT 分区表的磁盘为例,展示一种可能的布局。它用于帮助理解关系,并不是所有发行版都要求这样划分。

text
磁盘 /dev/nvme0n1(GPT 分区表)
├── /dev/nvme0n1p1  EFI 系统分区,FAT32 → /boot/efi
├── /dev/nvme0n1p2  ext4 文件系统       → /
└── /dev/nvme0n1p3  ext4 文件系统       → /home(可选)
分区或存储用途作用是否需要单独划分
EFI 系统分区(ESP)在常见 UEFI 安装中存放 EFI 启动相关文件,通常使用 FAT32可以与已有系统共用合适的 ESP;挂载位置可能是/boot/efi、/efi 或 /boot
根文件系统/承载系统目录树的根,存放没有被其他挂载覆盖的文件必须有根文件系统,但它可以来自普通分区、逻辑卷等不同存储形式
独立的/home将用户数据与根文件系统分别存放可选;没有独立分区时,/home 通常只是根文件系统中的目录
独立的/boot单独存放内核及启动相关文件取决于安装方案,不一定需要
swap 交换空间在需要时为内存管理提供后备空间,休眠也可能使用它可使用交换分区、交换文件或 zram,具体方案取决于系统配置

目录与分区没有一一对应关系。 /etc、/usr、/var 可以都位于根文件系统中;/home 也可以来自另一块磁盘。文件系统挂载后,其内容通过挂载点访问,而不是通过一个新的 Windows 风格盘符访问。

例如,把数据分区挂载到 /mnt/data 后,访问 /mnt/data/report.txt 就是在读取该文件系统中的文件。如果挂载点原先已有内容,挂载后那些原有内容通常会暂时被遮住,卸载后才重新可见。

GPT、MBR、LVM 和 Btrfs 子卷不要混淆

GPT 和 MBR 是分区表格式,ext4、XFS 和 Btrfs 是文件系统。LVM 则用于管理物理存储、卷组和逻辑卷,逻辑卷中还可以建立文件系统。

Btrfs 还支持子卷(Subvolume)。例如,安装方案可能用同一个 Btrfs 文件系统中的不同子卷分别提供 / 和 /home;看到两个挂载点,并不代表一定存在两个磁盘分区。

怎样查看自己机器的实际布局?

可以先使用下面这些只读命令观察系统:

bash
lsblk
lsblk -f
findmnt /
findmnt /home
df -hT
swapon --show
  • lsblk 展示块设备之间的层级,注意区分磁盘、分区和逻辑卷。
  • lsblk -f 补充文件系统类型、UUID 和挂载点等信息。
  • findmnt / 查看根目录对应的挂载;findmnt /home 可检查 /home 是否是独立挂载点。若没有结果,可用 findmnt -T /home 查询承载这个路径的文件系统。
  • df -hT 查看已挂载文件系统的容量与使用情况,不代表完整的磁盘分区表。
  • swapon --show 查看当前启用的交换空间;没有输出时,表示没有列出已启用的交换空间。

在虚拟机中,这些命令看到的通常是分配给虚拟机的虚拟设备;在 WSL 或容器中,看到的也可能是该环境提供的视图,不能直接当作宿主机的完整分区布局。

初次安装时,可以先使用安装器提供的合适自动分区方案,在测试环境中观察它生成的结构。手动分区前要确认目标磁盘并备份重要数据,创建分区和格式化都可能破坏已有数据。

常见文件后缀:看到文件名,先判断用途

文件名后缀,也叫扩展名,通常是最后一个点号之后的部分,例如 notes.txt 的 .txt。有些名称包含多段后缀,例如 backup.tar.gz。

Linux 不要求每个文件都有后缀,后缀也不能单独决定文件的真实类型。 它主要是命名约定,方便人和应用程序识别用途。改名不会转换内容:把图片改名为 .txt,它也不会变成文本。

常见后缀或名称通常表示什么如何理解或处理
.txt纯文本通常可以用 Vim、less 或 cat 查看
.mdMarkdown 文本常用于博客和说明文档,可用编辑器预览排版
.log日志可以用less、grep 等查看和筛选
.conf、.cfg、.ini配置文件具体语法由对应程序决定,并非所有配置都使用相同格式
.yaml、.yml、.json、.toml结构化数据或配置要遵守对应格式的语法,尤其注意 YAML 的缩进
.sh通常是 Shell 脚本先阅读内容,确认需要的解释器和运行环境
.pyPython 源文件通常需要相应的 Python 环境
.c、.h、.cppC/C++ 源代码或头文件通常需要参与编译,不能当作已编译程序直接运行
.tar归档文件将多个文件打包,本身不一定压缩
.gz、.xz、.bz2、.zst压缩数据单独的压缩格式不等同于多文件归档格式
.tar.gz、.tar.xz、.tgz经过压缩的 tar 归档.tgz 常作为 .tar.gz 的缩写
.zip、.7z常见归档压缩格式通过支持相应格式的工具查看和解压
.debDebian 系发行版常用的软件包格式Ubuntu、Debian 等使用,仍要匹配架构与依赖
.rpmFedora、RHEL 等发行版使用的软件包格式相同后缀不代表可以跨发行版任意安装
.AppImage一种应用分发格式通常需执行权限,并确认架构及运行依赖
.iso光盘镜像格式常用于发行版安装镜像,可供虚拟机或启动盘工具使用
.so、.so.版本号共享库供程序加载使用,例如libexample.so.1
.servicesystemd 服务单元文件描述服务如何启动及相关配置
.desktop桌面条目文件可用于应用菜单与启动入口,也可能包含执行命令
.bak、.old常用的备份或旧版本标记属于命名习惯,需查看内容确认用途
.jpg、.png、.svg、.pdf图片或文档用相应查看器打开;SVG 本身是文本格式
README、LICENSE、Makefile常见的无后缀说明、许可或构建文件没有后缀也可能是可阅读的文本

怎样确认文件的实际类型?

在提供了 file 工具的环境中,可以结合下面的命令检查练习文件:

bash
ls -l notes.txt
file notes.txt

ls -l 帮助查看权限、大小等信息,file 根据内容特征等判断类型。判断仍需要结合文件来源和对应程序的文档;它们不等于安全性检查。

有 .sh 后缀就可以直接运行吗?

不一定。直接运行脚本时,通常需要执行权限、正确的路径,以及可用的解释器。脚本第一行的 #! 声明可以指定解释器,例如 #!/bin/bash。

./hello.sh 与 bash hello.sh 也有所不同:前者直接执行当前目录下的文件;后者明确让 Bash 读取并解释它,文件需要可读,但不依赖脚本本身的执行权限。适用于其他 Shell 的脚本,也不应仅因后缀是 .sh 就强行交给 Bash。

Linux 中很多可执行程序根本没有后缀,例如 ls。因此,理解文件内容、权限与运行方式,比只看文件名更重要。

用户与权限:先解释现象,再修改设置

看到 Permission denied,先检查当前用户和目标文件:

bash
whoami
id
ls -l

权限错误可能来自文件本身,也可能来自路径上某一级目录缺少访问权限。执行程序还可能受到挂载选项等条件影响。

因此,不要把 sudo 或 chmod 777 当成通用答案。练习时可以问自己:到底需要给哪个用户增加哪项权限?修改后的范围是否符合预期?

五、学会使用 Vim,这是一项重要的基本功

学习 Linux,熟练使用 Vim 非常重要。 通过 SSH 连接服务器、修改配置文件、编写脚本时,经常需要直接在终端中编辑文本。掌握 Vim 的基础操作,就能在这些场景中完成查看、修改和保存。

Vim 是一种具有多种操作模式的文本编辑器。初学时最容易遇到的问题,是打开文件后直接打字,却发现内容没有按预期输入。先理解下面三种常用模式,再学习快捷键,会容易得多。

先分清模式,再记住操作

模式用途如何进入
普通模式(Normal Mode)移动光标、删除、复制、粘贴和执行编辑操作从插入模式按Esc 返回
插入模式(Insert Mode)输入和修改文本在普通模式按i
命令行模式(Command-line Mode)输入保存、退出、替换等命令在普通模式按:

入门阶段,可以先掌握下面这些操作。表中以 : 或 / 开头的命令,都需要按回车执行;除特别说明外,先按 Esc 回到普通模式再操作。

操作按键或命令
在光标前开始输入i
在当前行下方新建一行并开始输入o
回到普通模式Esc
向左、下、上、右移动光标h、j、k、l
跳到文件开头或最后一行gg、G
向后搜索文本/关键词,按回车;用 n 跳到下一个匹配项
复制当前行yy
删除当前行,将其放入寄存器dd
将刚复制或删除的一行放到当前行下方p
撤销上一次修改u
重做已撤销的修改Ctrl + R
保存文件:w
退出,存在未保存修改时会提示:q
保存并退出:wq
放弃当前缓冲区的未保存修改并退出:q!

不用一次记住所有操作,先做到“打开文件—输入内容—保存退出”,再逐渐增加搜索、复制、删除和撤销。

完成一次编辑练习

先在自己的练习目录里创建文件:

bash
mkdir -p ~/linux-lab/vim-demo
cd ~/linux-lab/vim-demo
vim notes.txt

进入编辑器后,按照下面的步骤操作:

  1. 按 i 进入插入模式,输入 I am learning Linux and Vim.。
  2. 按 Esc 返回普通模式,输入 :w 并按回车保存。
  3. 按 yy 复制当前行,再按 p 粘贴,观察文件是否出现两行相同的内容。
  4. 按 u 撤销刚才的粘贴,确认恢复为一行。
  5. 输入 /Linux 并按回车,练习搜索定位。
  6. 输入 :wq 并按回车,保存退出。

回到终端后,查看实际保存的内容:

bash
cat notes.txt

结果应该只有一行 I am learning Linux and Vim.。能独立完成并解释这些操作,再尝试编辑简单的脚本或配置副本。

用 vimtutor 持续练习

如果环境中提供了 Vim 自带的交互教程,可以在终端运行:

bash
vimtutor

跟着教程边读边操作,练习移动、编辑和撤销。如果提示找不到 vim 或 vimtutor,需要通过当前发行版的软件包管理器安装相应组件;不同安装方案包含的内容可能不同。

部分精简系统只提供 vi 或兼容实现,功能和快捷键体验可能与完整 Vim 不同。熟悉基础模式和保存退出的方法,有助于适应这些环境。

盲打与 Vim 也可以一起练习:键位熟悉之后,用常用编辑操作完成实际任务,会逐渐形成连贯的操作习惯。初期把精力放在文本编辑本身,等基础熟练后,再根据需求调整配置和安装插件。

视频延伸:了解 vi 与 Vim 的键盘操作

还可以配合这期关于 vi 与 Vim 的视频学习:《回归键盘,完全不用鼠标的真正方法:vi vi vi!》。观看时,可以结合前面的编辑练习,尝试用键盘完成移动、搜索、修改和保存。

下方可以直接点击播放,也可以通过标题链接前往 B 站观看。

六、通过完整的小任务掌握工具

只记“grep 可以搜索文本”,很快就会忘。给它配上一个具体任务,印象会深得多。

下面用一份自行创建的日志,完成“筛选错误记录并统计数量”的练习。示例在 Linux 的 Bash 中执行。

第一步:准备数据

bash
mkdir -p ~/linux-lab/log-demo
cd ~/linux-lab/log-demo

cat > app.log <<'EOF'
2026-10-28 09:00:00 INFO service started
2026-10-28 09:01:00 ERROR connection failed
2026-10-28 09:02:00 INFO retrying
2026-10-28 09:03:00 ERROR request timed out
2026-10-28 09:04:00 WARN slow response
EOF

这里通过重定向把文本写入 app.log。再次执行会覆盖这个练习文件,因此要先确认自己所在的目录。

第二步:查找并统计

bash
grep 'ERROR' app.log
grep -c 'ERROR' app.log

第一条命令应该输出两条错误记录,第二条应该输出 2。其中,-c 统计的是匹配的行数;即使同一行出现多个 ERROR,这一行也只计一次。

第三步:保存结果并验证

bash
grep 'ERROR' app.log > errors.log
cat errors.log
wc -l < errors.log

检查导出内容是否正确,行数是否仍为 2。这样,一次练习就串联起了文件创建、文本筛选、重定向和结果验证。

接下来可以自行增加条件:同时筛选 ERROR 和 WARN、显示匹配行的行号,或者尝试大小写不一致的输入。先预测结果,再执行命令,最后解释差异。

七、把故障排查作为学习的一部分

实际使用 Linux 时,很少有人提前告诉你该输入哪条命令。更多时候,摆在面前的只是一句“网站打不开了”或者“脚本没有运行”。

这时需要先收集信息,逐步缩小范围。

以本机上的 HTTP 服务无法访问为例,可以沿着下面的顺序检查:

  1. 确认现象:访问的地址、端口和协议是什么?具体报错是什么?
  2. 检查服务:进程是否存在?服务是否启动成功?
  3. 检查监听:服务监听了哪个地址和端口?
  4. 检查本机请求:在服务器本机能否访问?
  5. 检查外部链路:再分析 DNS、路由、防火墙及云平台的访问规则。

如果系统使用 systemd,且已经安装 Nginx,可以通过下面的命令观察状态:

bash
systemctl status nginx --no-pager
journalctl -u nginx -n 50 --no-pager
ss -lnt
curl -I http://127.0.0.1

这里以 Nginx 使用本机默认 HTTP 端口为例;实际练习时应按照配置修改地址和端口。读取部分系统日志可能需要额外权限。

每条输出都有自己的边界。端口处于监听状态,只能说明有程序在监听;HTTP 返回了状态码,也需要进一步判断它是否符合预期。比如 404 表示目标资源没有找到,但也说明该请求收到了 HTTP 响应。

排查时尽量一次只修改一个因素,修改后立即验证。否则同时改了配置、权限和网络设置,即使恢复正常,也很难知道真正的原因。

八、学会查资料,也学会留下自己的记录

命令的参数不需要一次背完。忘记用法时,可以先查看本机帮助:

bash
ls --help
man ls

本机手册通常更贴近已安装工具的版本。如果提示找不到 man,可以先使用工具自带的帮助,再按发行版的软件包管理方式补充手册组件。

阅读网上的教程时,留意对方使用的发行版、软件版本和运行环境。相同任务可能因为环境不同而使用不同命令,照搬之前要先确认适用条件。

笔记则建议围绕问题来写。例如记录一次服务启动失败:

text
现象:修改配置后,服务无法启动。
检查:查看服务状态和日志,定位到具体配置行。
原因:配置项拼写错误。
处理:修正配置,检查配置语法,再启动服务。
验证:确认服务状态、监听端口和实际请求结果。

这样的记录比一串没有上下文的命令更容易复用,也方便过一段时间回头复盘。

使用 AI 辅助学习时,也可以提供自己的环境、命令和完整报错,让它帮助解释原因、提出检查步骤。拿到建议后仍要理解命令含义,并在练习环境中验证。

九、给自己安排四周练习

如果不知道从哪里开始,可以参考下面的节奏。每周的重点是完成任务,进度可以根据自己的基础调整。

时间学习重点本周练习
第一周路径、文件操作、帮助文档建立练习目录,整理文件,完成一次压缩与解压,并比较结果
第二周Vim、权限、文本处理、管道与重定向完成 Vim 编辑与日志筛选练习,解释权限字符串,用 Vim 编写并运行简单脚本
第三周进程、服务、网络与日志在测试环境启动一个服务,检查状态、端口与访问结果
第四周Shell 脚本与综合排查编写备份脚本,并在新目录中恢复备份、核对文件内容

这四周里,可以每天安排十分钟练习英文和符号盲打,再把熟悉的键位用到实际命令中。记录经常输错的字符,有针对性地练习,不必急着追求打字速度。

每天可以先花一点时间理解概念,再用更长时间亲手练习,最后写下今天遇到的问题。隔几天不看笔记重做一次,往往就能发现自己到底掌握到了什么程度。

如果某项任务失败了,也不必急着跳过。能够说清楚“我观察到了什么、已经排除了什么、下一步准备检查什么”,本身就是很重要的进步。

十、推荐一本书:《Just for Fun》(英文原版)

学习 Linux 的过程中,也推荐读一读 《Just for Fun: The Story of an Accidental Revolutionary》(英文原版,语言:英语)。这本书由 Linux 内核的创造者 Linus Torvalds 与 David Diamond 合著,通过 Linus 的个人经历讲述 Linux 的起源与发展。可以在 Google Books 的书籍介绍中查看作者和内容简介。

它适合作为技术练习之外的延伸阅读:在熟悉命令和配置文件的同时,了解这个系统背后的人,以及兴趣、尝试和分享怎样推动一个项目成长。

我推荐它,是希望刚入门的人也能给好奇心留一些空间。学习过程中,除了完成规定的练习,也可以试着解决一个自己在意的小问题:让文件整理更省事,让备份自动执行,或者弄清楚某条报错为什么出现。

带着这样的兴趣使用 Linux,每次学到的知识就更容易找到用处。书名中的“Just for Fun”,也可以成为对自己的一句提醒:保持动手尝试的乐趣,给持续学习多一个理由。

十一、视频延伸:把 GNU/Linux 用到日常生活中

还可以参考 unixchad 的视频《7条建议(更好的)学习与使用GNU/Linux》。作者在简介中说明,这期视频回顾了自己学习并将 Linux 作为桌面操作系统使用时,帮助很大的事情。

可以直接点击下方播放器观看,也可以前往哔哩哔哩观看原视频。

下面根据作者公开的视频简介和资源列表整理,补充在本文的学习路线中,供读者继续实践与阅读;这里没有逐条复述视频中的七条建议。

1. 把盲打练习落到具体工具上

作者的工具列表中包含打字练习工具 gtypist 和 ttyper。如果希望把前面的盲打(Touch Typing)练习坚持下去,可以从其中一个入手,把短时间的打字练习加入日常安排。

结合本文的练习目标,可以重点观察自己经常输错的英文字母和符号,再回到终端任务中检验输入是否更加准确、连贯。

2. 增加一本系统学习命令行的英文书

视频简介提供了 《The Linux Command Line》(英文) 的阅读入口,可以与前面推荐的《Just for Fun》搭配:一本用于学习命令行,一本用于了解 Linux 背后的人与故事。

阅读技术书时,可以每次选一小节,在自己的练习目录里完成示例,再尝试修改参数、输入或文件内容。英文阅读也可以从命令帮助和简短报错开始,逐渐熟悉常见表达。

3. 给自由软件的背景留一点阅读时间

作者还列出了 《Free as in Freedom》(英文)。它可以作为了解自由软件背景的延伸阅读,与技术练习并行安排。

作者在简介中说明,这两本电子书通过 Creative Commons 或 GNU 自由文档许可证发布,并提供了可免费阅读的入口。具体版本及许可条件,应以各书页面的说明为准。

4. 从自己的日常需求里挑选实践任务

简介还列出了作者用于编辑文本、阅读电子书、管理文件、订阅 RSS、安排日程和执行定时任务的工具。这个列表也提供了一种实践思路:从自己每天确实要做的事情里,挑一个适合在 GNU/Linux 上完成的小任务。

例如,先在系统中阅读一份文档、整理一批文件,或者编写一个简单的备份脚本。完成后再判断工具是否适合自己的工作习惯,逐步形成自己的使用方式。

这些是结合简介资源提出的练习建议。希望了解作者完整的七条建议及其理由,可以继续观看原视频。

写在最后

学好 Linux,需要在一次次使用中理解系统:知道文件在哪里,知道程序怎样运行,知道报错后该从哪里寻找线索。

今天可以先建一个练习目录,完成一次日志筛选;明天写一个简单脚本,再检查它的执行结果。把这些小任务做完整,命令就会逐渐变成随手可用的工具。

等到面对陌生问题时,你能先观察、再判断,并且有办法验证自己的想法,Linux 就已经开始成为你真正掌握的一项能力。

给博客接入 Giscus:用 GitHub Discussions 管理评论
该怎样学习网络安全并且掌握CTF竞赛实战技巧

评论区

使用 GitHub 账号登录后即可评论。

评论加载中…