前言
刚开始学习 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 与 GNU | GNU 项目对 GNU 与 Linux 关系及 GNU/Linux 名称的说明 |
| Linux 内核官网(kernel.org) | Linux 内核发布、源代码及相关开发资源 |
| Linux 内核文档 | 内核使用、管理与开发文档,适合后续深入查阅 |
GNU/Linux 是一类系统的称呼,各发行版有各自的官方网站。下载完整系统时,应前往所选发行版的官网;kernel.org 提供的是内核相关资源。
常见发行版的官方网站
| 发行版 | 官网入口 | 可以从哪里开始了解 |
|---|---|---|
| Ubuntu | ubuntu.com | 桌面版、服务器版与安装文档 |
| Debian | debian.org | 系统下载、安装指南与社区支持 |
| Fedora | fedoraproject.org | 面向桌面、服务器等场景的不同版本 |
| Linux Mint | linuxmint.com | 桌面系统介绍、下载与安装指南 |
| Arch Linux | archlinux.org | 系统下载、软件包与 ArchWiki 文档 |
下载前,先阅读对应版本的安装说明,确认镜像适用的处理器架构。例如,amd64 或 x86_64 通常指 64 位 x86 平台,并不意味着只能用于 AMD 处理器;ARM 平台则需要对应的镜像。下载页面提供校验值或签名时,也可以按照官方说明验证文件。
进一步了解自由软件与开源软件
自由软件(Free Software)中的“自由”,强调用户运行、研究、修改和分享软件的自由。 这里的 Free 指自由,软件可以免费提供,也可以收费销售;研究和修改软件则需要能够获取源代码。
开源软件(Open Source Software)也需要符合相应的许可条件,能够看到源代码并不自动意味着可以任意使用、修改和分发。自由软件与开源软件在许多具体软件上有所重合,但理念和表述重点有所不同。
想进一步了解这段历史,可以观看《自由与开源软件的诞生:GNU/Linux前世今生》。下方提供嵌入播放器,读者可以直接点击播放,也可以通过标题链接前往 B 站观看。
Linux 与 Windows、macOS 有什么区别?
它们都能管理硬件、运行程序,也都可以通过图形界面和命令行操作。主要差异在于系统的组成与开放程度、软件生态、硬件支持,以及默认的管理方式。下面以常见桌面发行版与个人电脑使用场景为例进行比较。
| 对比维度 | Linux 发行版 | Windows | macOS |
|---|---|---|---|
| 系统组成与开放程度 | 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 连接练习。
初期选一个常见发行版持续使用就够了。先熟悉它的目录结构、软件包管理方式和服务管理工具,再接触其他发行版,会更容易看清它们的共性与差异。
在虚拟机中完成基础安装后,可以保存一个快照。后续进行重要配置前再建立快照,遇到问题时就有机会比较和恢复。
日常练习则使用普通用户,并把实验文件集中放在自己的目录中:
mkdir -p ~/linux-lab cd ~/linux-lab pwd
pwd 输出的路径,应该是当前用户主目录下的 linux-lab。从第一步开始,就养成操作后检查结果的习惯。
三、练好盲打(Touch Typing),让操作跟得上思路
学习 Linux 时,盲打(Touch Typing)是一项很重要的基本功。这里说的盲打,是不看键盘也能准确输入字母、数字和常用符号。
使用终端时,我们经常需要一边看文档、日志和报错,一边输入命令。如果每输入几个字符就低头寻找按键,注意力会不断在屏幕与键盘之间切换。把键位练熟之后,就能把更多精力放在理解命令和观察结果上,写脚本、修改配置时也会更顺畅。
练习可以从下面几件小事开始:
- 先熟悉指法和键位:以
F、J键上的定位凸点为参照,逐步做到输入时少看键盘。 - 先求准确,再提高速度:放慢一点,把每个字符输入正确,减少反复删除和重输。
- 专门练习终端常用符号:除了英文字母,还要熟悉
/、-、_、.、引号、括号、管道符|和重定向符号>的位置。 - 把练习融入日常操作:每天花十分钟练习,在测试目录里输入自己理解的命令,再写几行简单脚本。
尤其要区分直引号与中文弯引号、半角符号与全角符号。一个不起眼的字符差异,就可能改变命令的含义,或者导致语法错误。
同时,也要学会使用终端的补全和编辑功能。在常见的 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;某个目录是否位于另一块磁盘上,不能仅凭目录名判断。
下面是一份简化的目录示意,实际布局会随发行版和安装方案有所不同:
/ ├── 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,日常练习可以放在自己的主目录中 |
/root | root 管理员的主目录 | 普通用户不应把这里作为日常工作目录 |
/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 分区表的磁盘为例,展示一种可能的布局。它用于帮助理解关系,并不是所有发行版都要求这样划分。
磁盘 /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;看到两个挂载点,并不代表一定存在两个磁盘分区。
怎样查看自己机器的实际布局?
可以先使用下面这些只读命令观察系统:
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 查看 |
.md | Markdown 文本 | 常用于博客和说明文档,可用编辑器预览排版 |
.log | 日志 | 可以用less、grep 等查看和筛选 |
.conf、.cfg、.ini | 配置文件 | 具体语法由对应程序决定,并非所有配置都使用相同格式 |
.yaml、.yml、.json、.toml | 结构化数据或配置 | 要遵守对应格式的语法,尤其注意 YAML 的缩进 |
.sh | 通常是 Shell 脚本 | 先阅读内容,确认需要的解释器和运行环境 |
.py | Python 源文件 | 通常需要相应的 Python 环境 |
.c、.h、.cpp | C/C++ 源代码或头文件 | 通常需要参与编译,不能当作已编译程序直接运行 |
.tar | 归档文件 | 将多个文件打包,本身不一定压缩 |
.gz、.xz、.bz2、.zst | 压缩数据 | 单独的压缩格式不等同于多文件归档格式 |
.tar.gz、.tar.xz、.tgz | 经过压缩的 tar 归档 | .tgz 常作为 .tar.gz 的缩写 |
.zip、.7z | 常见归档压缩格式 | 通过支持相应格式的工具查看和解压 |
.deb | Debian 系发行版常用的软件包格式 | Ubuntu、Debian 等使用,仍要匹配架构与依赖 |
.rpm | Fedora、RHEL 等发行版使用的软件包格式 | 相同后缀不代表可以跨发行版任意安装 |
.AppImage | 一种应用分发格式 | 通常需执行权限,并确认架构及运行依赖 |
.iso | 光盘镜像格式 | 常用于发行版安装镜像,可供虚拟机或启动盘工具使用 |
.so、.so.版本号 | 共享库 | 供程序加载使用,例如libexample.so.1 |
.service | systemd 服务单元文件 | 描述服务如何启动及相关配置 |
.desktop | 桌面条目文件 | 可用于应用菜单与启动入口,也可能包含执行命令 |
.bak、.old | 常用的备份或旧版本标记 | 属于命名习惯,需查看内容确认用途 |
.jpg、.png、.svg、.pdf | 图片或文档 | 用相应查看器打开;SVG 本身是文本格式 |
README、LICENSE、Makefile | 常见的无后缀说明、许可或构建文件 | 没有后缀也可能是可阅读的文本 |
怎样确认文件的实际类型?
在提供了 file 工具的环境中,可以结合下面的命令检查练习文件:
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,先检查当前用户和目标文件:
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! |
不用一次记住所有操作,先做到“打开文件—输入内容—保存退出”,再逐渐增加搜索、复制、删除和撤销。
完成一次编辑练习
先在自己的练习目录里创建文件:
mkdir -p ~/linux-lab/vim-demo cd ~/linux-lab/vim-demo vim notes.txt
进入编辑器后,按照下面的步骤操作:
- 按
i进入插入模式,输入I am learning Linux and Vim.。 - 按
Esc返回普通模式,输入:w并按回车保存。 - 按
yy复制当前行,再按p粘贴,观察文件是否出现两行相同的内容。 - 按
u撤销刚才的粘贴,确认恢复为一行。 - 输入
/Linux并按回车,练习搜索定位。 - 输入
:wq并按回车,保存退出。
回到终端后,查看实际保存的内容:
cat notes.txt
结果应该只有一行 I am learning Linux and Vim.。能独立完成并解释这些操作,再尝试编辑简单的脚本或配置副本。
用 vimtutor 持续练习
如果环境中提供了 Vim 自带的交互教程,可以在终端运行:
vimtutor
跟着教程边读边操作,练习移动、编辑和撤销。如果提示找不到 vim 或 vimtutor,需要通过当前发行版的软件包管理器安装相应组件;不同安装方案包含的内容可能不同。
部分精简系统只提供 vi 或兼容实现,功能和快捷键体验可能与完整 Vim 不同。熟悉基础模式和保存退出的方法,有助于适应这些环境。
盲打与 Vim 也可以一起练习:键位熟悉之后,用常用编辑操作完成实际任务,会逐渐形成连贯的操作习惯。初期把精力放在文本编辑本身,等基础熟练后,再根据需求调整配置和安装插件。
视频延伸:了解 vi 与 Vim 的键盘操作
还可以配合这期关于 vi 与 Vim 的视频学习:《回归键盘,完全不用鼠标的真正方法:vi vi vi!》。观看时,可以结合前面的编辑练习,尝试用键盘完成移动、搜索、修改和保存。
下方可以直接点击播放,也可以通过标题链接前往 B 站观看。
六、通过完整的小任务掌握工具
只记“grep 可以搜索文本”,很快就会忘。给它配上一个具体任务,印象会深得多。
下面用一份自行创建的日志,完成“筛选错误记录并统计数量”的练习。示例在 Linux 的 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。再次执行会覆盖这个练习文件,因此要先确认自己所在的目录。
第二步:查找并统计
grep 'ERROR' app.log grep -c 'ERROR' app.log
第一条命令应该输出两条错误记录,第二条应该输出 2。其中,-c 统计的是匹配的行数;即使同一行出现多个 ERROR,这一行也只计一次。
第三步:保存结果并验证
grep 'ERROR' app.log > errors.log cat errors.log wc -l < errors.log
检查导出内容是否正确,行数是否仍为 2。这样,一次练习就串联起了文件创建、文本筛选、重定向和结果验证。
接下来可以自行增加条件:同时筛选 ERROR 和 WARN、显示匹配行的行号,或者尝试大小写不一致的输入。先预测结果,再执行命令,最后解释差异。
七、把故障排查作为学习的一部分
实际使用 Linux 时,很少有人提前告诉你该输入哪条命令。更多时候,摆在面前的只是一句“网站打不开了”或者“脚本没有运行”。
这时需要先收集信息,逐步缩小范围。
以本机上的 HTTP 服务无法访问为例,可以沿着下面的顺序检查:
- 确认现象:访问的地址、端口和协议是什么?具体报错是什么?
- 检查服务:进程是否存在?服务是否启动成功?
- 检查监听:服务监听了哪个地址和端口?
- 检查本机请求:在服务器本机能否访问?
- 检查外部链路:再分析 DNS、路由、防火墙及云平台的访问规则。
如果系统使用 systemd,且已经安装 Nginx,可以通过下面的命令观察状态:
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 响应。
排查时尽量一次只修改一个因素,修改后立即验证。否则同时改了配置、权限和网络设置,即使恢复正常,也很难知道真正的原因。
八、学会查资料,也学会留下自己的记录
命令的参数不需要一次背完。忘记用法时,可以先查看本机帮助:
ls --help man ls
本机手册通常更贴近已安装工具的版本。如果提示找不到 man,可以先使用工具自带的帮助,再按发行版的软件包管理方式补充手册组件。
阅读网上的教程时,留意对方使用的发行版、软件版本和运行环境。相同任务可能因为环境不同而使用不同命令,照搬之前要先确认适用条件。
笔记则建议围绕问题来写。例如记录一次服务启动失败:
现象:修改配置后,服务无法启动。 检查:查看服务状态和日志,定位到具体配置行。 原因:配置项拼写错误。 处理:修正配置,检查配置语法,再启动服务。 验证:确认服务状态、监听端口和实际请求结果。
这样的记录比一串没有上下文的命令更容易复用,也方便过一段时间回头复盘。
使用 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 就已经开始成为你真正掌握的一项能力。

评论区
使用 GitHub 账号登录后即可评论。
评论加载中…