第一步,了解 linux 的发展历史、设计思想、与其他操作系统相比其特点和优势,了解国内外发展现状。
什么是开源软件?什么是闭源软件?什么是自由软件?什么是 GPL 协议?什么是一切皆文件的设计?什么是内核?什么是发行版?各个发行版的区别特色?什么是 POSIX 标准?什么是 GNU 计划?哪些你喜欢的软件可以运行在 linux 吗?为什么国内很多厂商不愿意为 linux 开发软件?为什么玩 linux 需要各种改配置文件?什么是软件包?什么是包管理器?什么是 github ?为什么会有这么多种桌面环境?
如果你有一定的C语言编程基础,那么更好了,你还可以以 C语言为基础去进一步了解:
什么是编译?什么是动态库?什么是静态库?什么是可执行文件?什么是依赖?为什么会依赖?什么是配置文件?为什么配置文件总是文本代码要这么麻烦得自己改?
上述只是举了一些我暂时能想到的,需要提前做好功课的问题,应该还有很多我没想到的甚至我不知道的。
如果你不善于百度和谷歌,那我劝你放弃 linux ,千万别折磨自己,也别指望一两本书能让你玩转 linux 。互联网在发展知识越来越海量,习惯用百度和谷歌来解决疑惑才是学习这些的唯一出路。
很多人可能会认为了解这些没用,还不如多去学一些命令。而我建议,在你还没能适应日常使用 linux 之前,最好把学习 linux 中的 80% 以上的时间精力全都用来研究了解这些。因为:
当你还不知道 linux 适合做什么的时候,盲目使用它会导致遇到各种不方便时,你会容易抱怨它不好用,实际上你抱怨的东西很可能正好是它的一个特性,人家就是这么设计的,换一种方式使用才能发现新大陆。
当你真正了解它的优势的时候,你才容易把它的优势发挥到极致,从而尝到很多甜头,越来越感兴趣,越玩越起劲。反观那些不怎么了解就盲目使用,遇到的全是 linux 的各种坑,充分发挥其劣势导致痛苦,人生苦短啊放过自己吧,早知道是这样的结果,Windows 它不香吗?
总之,获取这些信息不但不是浪费时间,反而能帮助你节省很多时间,它总能指引你走向正确的方向。前期这些功课做得越多,后续踩的坑浪费的时间越少困惑也越少,达到事半功倍的效果。
第二步,上手一个适合自己的发行版,先掌握其包管理器
在这一步,你就必须开始实践了,不管用虚拟机也好,还是装成实体机也好,或者远程的服务器也好,都得想办法实践起来。千万别想着看看书就行了,想得美不实际干那就是浪费时间。
因为你有了第一步的功课作为基础,你一定知道了什么是包管理器。真正实践的过程中,你第一个要学习的就是如何使用这个发行版的包管理器,包管理器是一个发行版的核心,只有掌握了包管理器,你才能:
当然以上只是最基础的,还有能让你更方便的:
连一个桌面环境都是一系列软件包来组成,你说重不重要?充分掌握了包管理器,相当于你能够任意 diy 你的系统,就像搭积木一样,想让它成什么样就成什么样。
你一般只需要通过百度或者谷歌途径,了解到你想要安装的软件对应的包名,你就能用包管理器安装它(提醒一下别忘了换成国内源不然慢死你)。
需要注意的一点是,千万不要用图形化界面的“软件商店”,一定要用命令行的诸如 apt 命令 rpm 命令 pacman 命令等管理软件,也别问为什么,你有了第一步的功课你应该懂。
第三步:掌握 linux 的基本组成结构,深入理解设计思想
这是一切皆文件的环节,你需要知道什么是根目录,根目录下每个子目录是干嘛的?什么是挂载点?什么是设备块文件?什么是虚拟文件系统?什么是家目录,家目录有什么用?什么是 xdg 规范?什么权限机制?为什么这个文件是这样的权限?什么是用户?什么是组?为什么要设计用户和组?
经历了这个环节,你才能知道你的音乐视频应该放哪,你的代码应该放哪,你才知道如何解决找不到D盘的困惑。也就是,能让你真正日常融入 linux ,而不会被 Windows 的习惯干扰学习。
第四步:根据自己的具体需求发展更深层次的学习方向
你为什么要来 linux ,做日常使用吗?做开发吗?做服务器吗?为了装逼吗?
不同的需求不同的学习方向,不过基本命令是通用的,诸如文件管理的很多命令。建议是需要什么命令就查什么命令,要是不考试的话,切莫死记硬背,学会用 man 和 --help 还有百度和谷歌查询自己需要的,因为海量的命令你不可能背得完,而常用的命令你多查几次自然会。也别和我说 command not found ,回到第二步去。
这一环节方向比较多,所以我就不展开了。当你到这一步的时候,你其实已经不需要人为指导你了,百度谷歌就足够。
学习的过程就如同一个公司的发展:一切由需求驱动,先调研再计划再实现。盲目做事情的公司都倒闭了因为没市场,盲目学习一些命令的都已经想逃离 linux 了因为迷茫学不动。
作为近年来运用越来越广泛,被互联网企业越来越认可的技术,内核底层原理技术该如何学习呢?
这里给大家推荐零声教育 全网独家的【Linux内核源码 】课程体系,通过 20项目案例,2W+行手写代码,全面解析6个内核技术方向。
学习方法:
面试跳槽
内核参考书籍资料