文章索引
学习路线
面向第一次主要在远程服务器上使用 Linux 的读者,整理一条从系统概念到远程工作流的 Linux 基础学习路线。
操作系统基础
很多 Linux 问题表面上是命令不会用,背后其实是操作系统概念没对上:进程为什么会存在、文件为什么要有权限、内存和调度到底在管什么。
Linux 系统介绍
如果你之前主要是在图形界面里使用电脑,Linux 一开始会显得很“命令行”。这份课件可以先帮你建立一个整体印象:Linux 是什么、系统由哪些部分组成、日常使用里哪些概念会反复出现。
Linux 新手快速上手笔记
以远程服务器工作流为主线,整理 Linux 新手最先该掌握的终端、路径、权限、进程和日志基本操作。
Linux 路径基础
路径是 Linux 里最基础、也最容易在一开始卡住的概念之一。相对路径、绝对路径、当前目录、家目录、系统目录,这些词如果没有先分清,后面写命令时很容易出现“我明明输入了,为什么找不到文件”的情况。
Linux 权限控制
权限问题是新手使用服务器时最常见的阻塞点之一:脚本不能执行、目录不能写、文件改不了、服务读不到配置。很多时候不是命令复杂,而是没有把用户、用户组和读写执行权限这套模型看清楚。
Linux 环境变量
环境变量看起来像是一堆零散的名字和值,但它们实际上决定了命令去哪找、程序怎么运行、工具读取哪些默认配置。PATH、HOME、LDLIBRARYPATH 这些变量一旦理解了,很多环境配置问题就会从“玄学”变成可以定位的事情。
Linux 定时任务
有些任务不适合人工盯着执行,比如定期备份、清理日志、检查服务状态、周期性跑脚本。Linux 的定时任务就是把这些重复动作交给系统来做。
Linux Module 使用
在集群或共享服务器上,经常不会让每个人都自己随便改系统环境,而是通过 module 来切换编译器、MPI、CUDA、数学库等软件栈。会不会用 module,直接影响你能不能正确加载实验需要的环境。
Vim 基础使用
Vim 不一定是每个人最喜欢的编辑器,但在远程服务器上,它经常是最容易立即打开的工具。至少知道怎么进入编辑、怎么保存、怎么退出、怎么搜索,可以避免很多刚连上服务器时的尴尬。
Linux 软件编译与安装
在 Linux 上装软件,有时不是一个 apt install 或 conda install 就能结束。科研代码、性能库、老项目和特定版本依赖,经常会把你带到源码编译这条路上。
Linux 中的 Shell 环境配置
很多环境配置问题都发生在 Shell 启动的那一刻:哪些配置文件会被读取、变量什么时候生效、为什么新开一个终端以后设置又不见了。
Shell 程序设计:echo 命令
echo 是 Shell 里最不起眼、也最常用的命令之一。它可以只是打印一句话,也可以用来检查变量、拼接输出、辅助调试脚本。
Shell 程序设计:find 命令
文件一多,手动一层层翻目录就会变得很低效。find 的价值在于,它能按照名称、类型、大小、时间、权限等条件把文件找出来,还可以进一步接上批量操作。
Shell 程序设计:grep 命令
grep 解决的是“从一堆文本里把我关心的行捞出来”这件事。看日志、查配置、定位报错、筛命令输出,很多 Linux 排查动作都会反复用到它。
Shell 程序设计:循环
循环是 Shell 脚本从“一条命令”变成“自动化流程”的关键一步。批量处理文件、重复检查状态、按列表执行任务,背后通常都是循环结构。
Shell 程序设计:条件判断
脚本里只要出现“如果文件存在就做某事”“命令成功才继续”“参数为空就提醒用户”,就离不开条件判断。它让脚本不再只是顺序执行,而是能根据当前环境做选择。
Shell 程序设计:重定向
重定向是命令行里非常小但非常关键的能力。把输出写进文件、把错误单独保存、把一个命令的结果交给另一个命令,这些都是日常排查和自动化脚本的基础动作。
Shell 程序设计:正则表达式
正则表达式不是只属于编程语言的知识。在 Linux 命令行里,搜索日志、筛选文件、批量处理文本,经常都会用到它。