这篇文章是写给 Linux 初学者的,我会分享一些做为初学者应该知道的一些东西,这些内容都是本人从事 Linux 开发工做多年的心得体会,相信会对初学者有所帮助。若是你是 Linux 老鸟,那可能就不须要再往下看了前端
linux
为啥要学Linux
做为从事 IT 工做的同窗,对 Linux 系统必定不陌生。现在咱们在各类领域都能看获得它的身影,好比,手机、服务器、嵌入式、电信设备、大型计算机,以及各类电子类产品都离不开 Linux,它已经渗透到互联网世界的方方面面了。linux
包括那些火热的技术,好比云计算、虚拟化、容器、大数据、人工智能,几乎都是基于 Linux 技术的,那些平台系统,电商、团购、社交、新闻、快递,都是部署在服务器端,也几乎都是基于 Linux 技术的。shell
在编程的世界中,Linux 就是主流,不会 Linux 你就可能会格格不入。若是你想进大公司,想学新技术,Linux 必定是一道绕不过去的砍,只有进入了 Linux 系统这扇大门,你才可能成为合格的软件工程师。编程
企业服务器环境绝大部分都是 Linux 系统,因此无论你是从事前端、后端、运维、测试中的哪一类工做,Linux 都是你必须掌握的基础知识,只是不一样类型工做须要学习 Linux 的方向不一样而已。ubuntu
经验与建议
下边分享的内容是本人从事 Linux 开发多年的一些经验总结,相信对 Linux 初学者会有所帮助,固然若是有不许确的地方,还请指正。vim
必定要本身搭建Linux环境。Linux 系统学习是很重实践的,仅学习理论知识是不能真正掌握 Linux 的。我推荐在我的电脑上安装虚拟机,虚拟机的方式很是灵活,既能够提供 Linux 环境,也不会影响宿主机的正常使用。对于虚拟机软件的选择,能够考虑使用 VMware 或 VirtualBox 。虚拟机的快照功能必定要用好,尤为是对新手来讲,它能够将你不当心搞坏的环境恢复到初始化状态,就像是从新安装了操做系统同样,今后妈妈不再用担忧我 rm -rf /* 了。
Linux发行版的选择。因为 Linux 的强大,目前存在太多的发行版本了,有些同窗在选择上可能会有些纠结。这里我推荐选择使用 CentOS 就行,因为免费且稳定,国内企业服务器使用最多的就是 CentOS 了,使用上和 RedHat 几乎没有什么区别。固然你能够选择 Ubuntu 系统,国内服务器使用份额仅次于 CentOS。其实全部发行版都是基于 Linux 内核的,只是扩展了相关的系统组件和软件库,本质上都是 Linux 系统,学会了 CentOS 后就很容易上手其它版本的系统了,因此无需太关注和纠结这个问题。
必定要使用命令行。大部分初学者常常喜欢安装图形桌面,由于咱们以前都习惯了 win 或 mac 的图形操做。但我强烈建议,安装系统时不要安装桌面,平时的操做和学习都坚持使用命令行。学习前期可能会比较痛苦,但熬过了阵痛期,熟练使用以后,就能享受到命令行带来的强大功能。命令行不只功能强大,并且能够极大的提升效率,由于命令行就意味着可以自动化,自动化能为你释放不少重复性的工做,让你有充足的时间去学习更有价值的知识。另外,图形界面在 linux 系统上做为一个独立软件存在,会额外消耗服务器的资源,企业的服务器必定是不会安装图形的,因此须要你必定要在 Linux 世界中忘掉 windows 的思惟方式。
Linux 是开源的。开源意味着你可以查看 Linux 源码,能够从代码层面理解系统实现的原理,这些可让你达到一通百通、醍醐灌顶的效果,而不是简单的使用它。
养成安全严谨的良好习惯。对于初学者来讲,虽然大部分时间是在虚拟机上操做,有快照的加持,能够毫无顾忌的进行各类实验性的操做。但我仍是强烈建议初学者必定要养成良好的操做习惯:1.常常备份重要的数据;2.少用 root 用户进行各类操做;3.敲命令不是越快越好;4.服务器密码尽量的复杂些,不要使用 123456 这类弱密码,服务器极可能被侵入当肉鸡;5.服务器密码不要简单记录在文档上或 U 盘之类的移动设备上;6.对生产环境必定要有敬畏心。
制定明确的学习目标。作任何事,有了目标才可以走的更远,少走弯路。咱们学习 Linux 也同样,须要根据本身的实际状况,制定适合本身的学习目标。我的建议目标不要太大,时间周期也不要太长,要切合实际,好比制定三个月的学习目标。有了目标后,就要肯定详细的学习计划,细化到每周须要完成的任务列表。注意,你须要为计划任务指定结果检验的方式,好比写一篇博客文章或是笔记,计划真实落地才是最困难的,由于执行力是一种稀缺资源。
如何解决问题。在学习 Linux 技术的时候,初学者确定会遇到各类 奇怪 的问题,面对这些问题时,咱们要学会分析错误信息,尝试以目前学习到的技术来思考找答案,若是解决不了,可使用搜索引擎,对于初学者遇到的问题,百度通常都可以解决。若是实在解决不了,能够请教身边的高手,不过提问问题时,必定要描述清楚问题,带着谦虚请教的态度。
应该学习的基础知识
Linux 系统涉及的技术知识点很是普遍,学习者能够根据本身的实际状况,选择相应的主题方向进行学习,不可盲目的跟随他人的学习路线,有可能拔苗助长,学习效果事倍功半,得不偿失,因此选择适合本身的学习路线很是重要。后端
由于每一个人未来从事的工做和方向不一样,须要重点学习的内容也不同,并且本文目标也只是分享给 Linux 初学者一些实用的经验心得,因此后边内容中只简单罗列了最通用和实用的一些技术,这些是学习 Linux 技术的全部同窗都应该知道的技术知识点。centos
学习 vim。在 Linux 系统下,基本没有什么能够与之竞争的编辑器(不接受反驳),你只须要花费 1-2 天的时间来熟悉 vim 的基本使用操做便可,无需研究那些高大上的各类插件使用技巧。要知道 vim 的学习是有难度的,不过一旦熟练使用后,就会驾轻就熟,能极大提升编辑效率。这里推荐陈皓的《简明 vim 练级攻略》。
学习使用软件包的管理。国内最经常使用的 Linux 发行版是 ubuntu、centos,须要学会使用 apt-get、yum 命令来查找和安装相关的软件包,固然也要学会试着从源码编译方式安装软件。
学习简单的数据处理。咱们在工做和学习中也会常常须要处理文本信息,Linux 在这方面提供了不少的工具,组合起来可以很是方便的实现强大的功能。常见的命令 sort、uniq、cut、split,还有 Linux 经典的三剑客 sed、awk、grep,这三个工具都是上古神器,功能很是强大,awk 还有专门的书籍来说解它,可见功能之强大与复杂,咱们初学者只须要熟练掌握一些经常使用的功能便可。
学会看文档。虽然不是具体的技术知识,但它却很是重要,初学者在学习命令时老是但愿能记住全部的参数和选项,其实这些参数咱们不须要记忆(大脑是用来思考的而不是存储的),咱们能够经过 Linux 手册来查看,一般使用 man ifconfig 就可以查看该命令的官方文档说明,既准确又清晰。固然在遇到问题时,也能够查看手册来确认命令的使用方法是否正确。
Linux 系统涉及的技术知识点很是复杂,上述所分享的仅是一些必学基础知识,若是可以认真学习并够掌握好,基本上算是入门 Linux(存活的级别)。若是你是运维方向,至少须要更深刻的学习:用户管理、磁盘管理、系统平常管理、常见服务的搭建、高可用集群、系统监控等运维知识;若是你是后台开发方向,至少须要更深刻学些 Linux 操做系统、进程与线程、进程间通讯、信号、网络编程、系统调用、Linux 内核等知识;若是你是嵌入式方向,你至少须要深刻研究 Linux 内核源码、设备驱动程序了。
本篇文章到此结束,后边还会更新 Linux 系列文章,文章内容风格会尽可能保持通俗易懂、重实践和实用性,尽量地帮助到有须要的同窗,若是感兴趣的话,能够继续关注后续 Linux 系列文章。