学习linux一般会都会经历从入门到深入再到精通的几个阶段,这里分别说下各阶段需要学习的内容,大家可以对照看自己在哪个阶段,然后决定接下来该学习什么。
第一阶段:没有任何经验
Linux是基础层或者说操作系统的内核,就像Ubuntu或Debian经常被称为GNU/Linux操作系统。就这一点而言,即使是Android也是运行在Linux之上的。正是GNU的覆盖给了Linux一个华丽的GUI。
刚入门阶段的你需要坚持使用linux,即使是非编程任务。尝试学习基本的bash编程并学习如何有效地使用终端。
终端是你访问数据库的地方,你可以使用命令来执行此操作。你需要学习各种命令,你可以从学习如何处理文件开始——在目录中进出,创建、复制和删除。你可以转而编写更复杂的命令。以及如何将这些命令放在一起,我们称之为shell脚本,然后通过它来执行一些任务。
- 实用程序命令,如,重新启动,关闭,终止,ps,日期等
- 模式匹配命令,如sed、grep、find、awk
这些命令将非常有用。
这里有一个快速参考:
除此之外,还有终端中运行的实用程序或应用程序 - 但你需要下载大部分应用程序或应用程序,一些应用程序已预先安装。接下来,你可以学习的是从终端安装应用程序 - 也可以使用命令。
第二阶段:有一点经验
在这个阶段,你已经了解了的各种组件的完整linux发行版的基本内容,如:
1)XServer
2)音响系统
3)桌面管理器
4)桌面环境
等等。
在了解 Linux的基本用法后,你需要学习Linux上的软件开发。这也将取决于你想要在哪个领域进行软件开发,比如web开发、网络编程、基于GUI的桌面应用程序等。一般的方法是:
-
了解大多数用于Linux的构建系统,以及不同的开源包是如何配置、构建和安装的。你需要在系统上构建并安装几个开源包。
-
对于web开发或任何使用平台独立环境的应用程序开发来说,底层平台是什么并不重要(至少对初学者来说是如此),因此这只适用于编程语言,特别是C、c++等。你需要知道你的应用程序可用的工具链。然后是Linux中可用的api来执行不同的操作。了解文件系统api(文件操作打开、读取、写入、关闭、ioctl)、网络api(套接字)、线程(pthreads)、日期/时间管理api、信号、队列、消息、管道(所有这些都是IPC) api,这些几乎是所有应用程序中都需要的基础。
-
你还需要了解用于执行不同任务的不同开放源码库(例如,HTTP客户端的libcurl),库的选择可能会受到许可证和开发状态等的影响。
第三阶段 :进阶
一般来说,完整的Linux发行版包含3个主要部分:
1)引导加载程序(Bootloader)
2)Linux内核
3)文件系统。大多数文件系统定义了发行版。为了做Linux系统开发,你需要确定你想要进入哪个部分。
- 启动加载程序。
在固件之后运行的第一个软件是启动加载程序。 对于Linux来说,使用的大多数启动加载程序是x86的GRUB和ARM的U-boot。 固件加载启动加载程序,启动加载程序加载内核。 如果你的目标是构建Linux系统,可以忽略这一点。除了要制作多引导系统,大多数情况下在x86平台上不需要此配置。但是在ARM或其他平台(如MIPS)中还需要进行一些更改。
- Linux内核
它适用于内核版本2.6,你可能正在使用内核版本> 4.0,所以有些东西可能不会像你在阅读后所期待的那样,但前几章会给你足够的知识让你自己开始。
- Root文件系统。
难度低一点的发行版有:
deepinKorora
中等难度的发行版包括:
更具挑战性的发行版(建议先将它们安装到虚拟机(VM),然后再将它们安装到你的实际机器上,以确保你可以处理它们):
第四阶段:动手操作
一般来说,你需要有一个可以练习的简单用例。
这里提供一个家庭网络实验室的例子。
扫一扫课程咨询,欢迎添加班主任微信:
扫一扫