如何学习 Linux?(从零到大师)

2025-06-07

如何学习 Linux?(从零到大师)

原始帖子:https://www.coderscat.com/how-to-learn-linux

前言

还记得2004年刚开始使用Linux系统Ubuntu 4.04的时候,同学们到Ubuntu官网申请安装光盘,过几天就能收到包含光盘的安装包。

Ubuntu CD

太棒了!从那时起,我大部分的编程时间都花在了 Linux 平台上,并从 Linux 和社区中学到了很多东西。不得不说,学习 Linux 让我成为了一名更优秀的程序员。

我总是建议初学者从 Linux 开始学习编程。但是,如何学习 Linux?我们到底想学什么?这是一份帮助初学者从零开始学习 Linux 的指南。

为什么要学习Linux?

也许你听说过,Linux 是黑客更酷的工具,或者 Linux 对开发者更友好。在我看来,学习 Linux 有三个关键原因。

  1. 第一个事实是:Linux 已经主导了服务器市场,大多数计算服务器都运行 Linux。作为一名开发者,尤其是 Web 开发者,你需要编写在 Linux 上运行的代码,在 Linux 上部署代码,甚至可能需要维护一台 Linux 服务器。
  2. 学习系统编程API和底层编程。随着物联网的发展,越来越多的软件涉及底层编程,使用标准C/C++编写代码是这类任务的必要条件。这类开发通常需要熟练掌握Linux技能。
  3. 学习系统基础知识和内部原理。Linux 是一个开源项目,由全球数千名开发者维护。有很多关于 Linux 内部原理的优秀书籍和资源,它们对你学习操作系统有很大帮助。

Linux学习指南

不同的目标应该遵循不同的学习路径,我们大致可以把目标分为几个层次:

  • 日常使用
  • Linux系统应用开发、运维
  • 系统开发
  • 内核开发

你应该按照这条路径学习,前面的每一步都是下一步的前提。如果你不知道如何将 Linux 用作日常操作系统,你就无法将它用作开发操作系统,当然,深入研究其内部原理也会更加困难。

学习 Linux CD

找到 Linus 的书:Just for Fun:一个意外革命者的故事,让我们开始有趣的旅程。

日常使用

日常使用包括:

How to login and logout
How to connect to the Internet
How to open the command line
How to install uninstall software using the command line
How to edit text
How to create, move, delete files
How to view the contents of a file and extract the file
......
Enter fullscreen mode Exit fullscreen mode

这个阶段最难的是从图形界面到命令行的过渡。我的建议就像学游泳一样,试着把自己扔进水里,如果你不下水,你永远也学不会游泳

学习 Linux CD

因此,请尝试在您的电脑上安装 Linux 发行版。

您可以在一台电脑上安装多个操作系统。不要尝试在虚拟机上使用 Linux,这样可以减少您日常使用 Linux 的时间。

初学者应该使用哪个 Linux 发行版?

嗯,常用的 Linux 发行版大概有 10 个左右,选择前 5 个就可以了。选择主流的发行版,比如 Ubuntu、Centos 等,遇到问题更容易解决。

它们之间主要的区别在于图形界面和包管理。

Linux 上的应用程序开发

应用程序开发种类繁多,包括 Web 应用程序、桌面 GUI 应用程序、命令行或用于各种任务和计算的应用程序。

您可能需要学习 Web 开发、C/C++/Python 或任何其他编程语言。

在 Linux 上开发与在 Windows 上开发是不同的体验。与 Windows 不同,开发人员通常使用 IDE 进行开发。

学习 Linux CD

大多数时候,您的工具链是一组各种小工具,您需要在 shell 中运行它们并将它们组合起来。

你需要学习:

  • 如何在编辑器中编写代码,常见的编辑器应该是Vim/Emacs和VScode。
  • 如何编译或构建你的程序
  • 如何从命令行启动程序
  • 如何定位错误,使用调试器运行程序

你应该学习一些 Shell 脚本编程,至少达到能够理解大多数常见 Shell 脚本的水平。目前,大多数开发者倾向于使用 Python/Ruby 来替代 Shell 脚本,但仍然有很多现成的 Shell 脚本。

尝试在 Linux 上搭建你最喜欢的开发环境,以下是一些可以使用的工具。记得持续跟踪你的配置,我使用 Git 进行配置版本控制。

当然,这个阶段涉及许多其他特定领域的知识,这取决于您选择的技术和框架,对于最现代的编程语言,例如 Ruby/Python/Rust,设置环境会更容易。

Ubuntu CD

如果您正确设置环境,您的编码效率将比以前提高 5 倍。

Linux BibleLinux 命令行:完整介绍将为您提供有关命令行和其他准备工作的良好介绍。

这个阶段是一个长期的学习过程,保持耐心。

系统开发

如果你的任务是开发一些底层软件,比如存储或者网络应用程序,那么你需要学习Linux系统开发。

系统编程与大多数应用程序开发不同,系统编程涉及更多操作系统或网络方面的内容。您需要了解最常用的Linux 内核接口 (Kernel Interface) 的细节。由于历史和性能原因,系统开发通常需要了解 C/C++ 以及 C 语言提供的系统 API。

gdb 调试的技能是需要的,你可以参考使用 GDB 进行调试Valgrind是另一个有用的内存检查工具。

Ubuntu CD

Linux 系统编程:直接与内核和 C 库对话

Linux 编程接口:Linux 和 UNIX 系统编程手册

都是 Linux 编程接口的良好资源。

网络是系统编程的另一个重要领域,Unix网络编程将是您的最佳选择。

这也不是容易的阶段,越来越少的程序员有能力用 C/C++ 编写代码,新一代更喜欢现代高级编程语言,例如 Rust、Python,这是一个趋势。

记住,基本原理是一样的,系统编程的核心知识将提高你的技能,扩展你的设计能力

内核开发

Kernel 的开发要求比较高,学完之后你就是英雄了。这时候你应该已经学习过操作系统相关的课程了。

内核包含了内存管理、进程调度、虚拟内存、文件系统、设备驱动等子模块,当然更多相关的命令也是开发所必需的,比如readelf、nm、ipcs、iostat、objdump、free、chrt、pmap、uptime、top、pidstat等。

Linux内核映射

Robot Love 的《Linux 内核开发》是内核开发的最佳入门书籍,它将为您提供内核的良好全景图。

另一个适合内核开发的优秀书籍清单:

现代操作系统

了解 Linux 内核

专业的Linux内核架构

请记住,由于内核开发领域太多,初学者几乎不可能接触所有领域。你的学习策略应该:

  1. 了解 Linux 内核的全貌,一个好方法是阅读 Robot Love 的书,另一个策略是学习版本的 Linux,因为代码库要小得多,你可以花大约 2 周的时间来完成它。xv6是另一个不错的选择,有很好的阅读材料
  2. 专注于一个特定的子模块,选择一个你最感兴趣的子模块,并尝试理解它的细节和设计。尝试参与内核开发社区,阅读文档,加入Linux 邮件列表,查看其他人的补丁,并尝试将你的补丁提交给内核。Linux 内核社区有其自身的协作风格,你需要学习其中的规则。提交第一个补丁后,这将是一个里程碑。如果你对一个子领域有足够的知识和技能,那么转移到另一个子领域就会容易得多。

要成为内核编程大师需要花费很多年的时间,快乐的黑客并获得乐趣。

文章来源:https://dev.to/snj/how-to-learn-linux-from-zero-to-hero-2im5
PREV
15 个学习前端开发的优秀网站
NEXT
前端漫游指南:Web API 简介 Web Sockets Web Workers Service Workers 语音识别设备传感器文件系统访问总结更多关于 Web API 的内容