写给 Linux 初学者的一封信

你们好,我是肖邦html

这篇文章是写给 Linux 初学者的,我会分享一些做为初学者应该知道的一些东西,这些内容都是本人从事 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 环境,也不会影响宿主机的正常使用。对于虚拟机软件的选择,能够考虑使用 VMwareVirtualBox 。虚拟机的快照功能必定要用好,尤为是对新手来讲,它能够将你不当心搞坏的环境恢复到初始化状态,就像是从新安装了操做系统同样,今后妈妈不再用担忧我 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.对生产环境必定要有敬畏心

如何学习?

高效的学习方法每每可以帮助你事半功倍,下边是我分享的一些本身的学习心得和方法,但愿对你们有帮助。windows

  • 必定要多实践。Linux 是一门实操性很是强的学科,初学者须要多敲命令,多实践和练习。与学习其它东西是同样的,大多时候咱们不须要非得先将理论知识学的通透后才来实践动手,而是从实践中发现问题后再深度学习,这样效果可能会更好。
  • 有效的学习方式。说到学习方式,每一个人学习的方式可能不太同样。我推荐 视频 + 看书 的方式,视频教程可让你快速上手,快速了解相关的概念,而看书能够更加全面的学习具体的细节,会让你有更多的思考,看书能够做为视频的补充和扩展。
  • 思考,总结与概括。无论以什么形式来学习,咱们都须要对学习中的每一个问题和概念认真思考,须要从 whathowwhy 三个角度进行学习,做为学习的问题模板。学习任何新技术,咱们都须要知道这个技术知识点的应用场景,以及可以解决什么问题,是否有相似的解决方案,此技术点有什么优点
  • 输出是一种高效学习方法。在学习过程当中,必不可少的一个环节就是概括和总结,总结就要输出,能够是文档形式的笔记或者其它。我比较推荐写博客,有条件的话必定要写,由于写博客能够帮助你更有效地、更系统的总结和学习。写博客是一种 的形式,若是可以将本身学到的知识在博客上清晰的讲清楚,教会别人,那才说明你是真正的掌握了它。若是博客写的不错的话也能为本身够积累影响力,对本身未来的求职也会有帮助。另外若是别人从你博客学习到了东西并且觉着不错的话,会给你点赞、留言、赞扬,这都是对你写博客和学习的正反馈,同时也可以刺激你保持学习的兴奋和激情,呵呵。
  • 制定明确的学习目标。作任何事,有了目标才可以走的更远,少走弯路。咱们学习 Linux 也同样,须要根据本身的实际状况,制定适合本身的学习目标。我的建议目标不要太大,时间周期也不要太长,要切合实际,好比制定三个月的学习目标。有了目标后,就要肯定详细的学习计划,细化到每周须要完成的任务列表。注意,你须要为计划任务指定结果检验的方式,好比写一篇博客文章或是笔记,计划真实落地才是最困难的,由于执行力是一种稀缺资源。
  • 坚持与激情,得到正反馈。学习是一件逆人性的事情,大部分人在遇到诸多问题后就很容易会放弃。1.合理的学习计划和结果输出,可以让你继续保持学习的激情;2.写博客、讨论交流等方式也能够得到正向的反馈,从而激励着你继续向前;3.坚持学习也可以帮你养成良好的习惯,无形中提升本身的执行力,我的认为这些收获可能远比具体的技术知识更加剧要。
  • 如何解决问题。在学习 Linux 技术的时候,初学者确定会遇到各类 奇怪 的问题,面对这些问题时,咱们要学会分析错误信息,尝试以目前学习到的技术来思考找答案,若是解决不了,可使用搜索引擎,对于初学者遇到的问题,百度通常都可以解决。若是实在解决不了,能够请教身边的高手,不过提问问题时,必定要描述清楚问题,带着谦虚请教的态度。

应该学习的基础知识

Linux 系统涉及的技术知识点很是普遍,学习者能够根据本身的实际状况,选择相应的主题方向进行学习,不可盲目的跟随他人的学习路线,有可能拔苗助长,学习效果事倍功半,得不偿失,因此选择适合本身的学习路线很是重要。后端

由于每一个人未来从事的工做和方向不一样,须要重点学习的内容也不同,并且本文目标也只是分享给 Linux 初学者一些实用的经验心得,因此后边内容中只简单罗列了最通用和实用的一些技术,这些是学习 Linux 技术的全部同窗都应该知道的技术知识点。centos

  • 学习 vim。在 Linux 系统下,基本没有什么能够与之竞争的编辑器(不接受反驳),你只须要花费 1-2 天的时间来熟悉 vim 的基本使用操做便可,无需研究那些高大上的各类插件使用技巧。要知道 vim 的学习是有难度的,不过一旦熟练使用后,就会驾轻就熟,能极大提升编辑效率。这里推荐陈皓的《简明 vim 练级攻略》。
  • 简单的文件管理。这些都是一些很是基础的操做与文件的管理命令,如:lslessheadtaildudfln 等,固然 find 是查找文件的很是有用的命令,功能很是强大。
  • 基础的网络管理。经常使用的网络管理命令,必定要学会使用,这对平时工做或学习时的网络诊断和网络配置很是有用。好比 ipifconfig 等网络命令,还有网络诊断工具 netstatpingtraceroute 等。
  • 学些 shell 脚本编程。咱们知道 Linux 特色之一就是命令行,上边咱们说过,命令行就意味着能够自动化,自动化后就可以规模化。shell 脚本就是咱们实现自动化的最有效的方式,由于 shell 程序是最擅长与 Linux 内核打交道的。咱们能够利用 shell 脚本帮咱们作不少重复性的工做,来释放咱们工程师的双手去创造更大的价值。
  • 熟悉做业管理。咱们须要常常在命令行终端上管理应用程序,启动或关闭程序。你须要知道这些概念,如:进程、进程组、会话、终端,学会使用 jobsfgbgkillCtrl-CCtrl-Z,以及信号的相关操做,须要知道 kill -9 究竟是在干什么。
  • 学习使用软件包的管理。国内最经常使用的 Linux 发行版是 ubuntucentos,须要学会使用 apt-getyum 命令来查找和安装相关的软件包,固然也要学会试着从源码编译方式安装软件。
  • 学习简单的数据处理。咱们在工做和学习中也会常常须要处理文本信息,Linux 在这方面提供了不少的工具,组合起来可以很是方便的实现强大的功能。常见的命令 sortuniqcutsplit,还有 Linux 经典的三剑客 sedawkgrep,这三个工具都是上古神器,功能很是强大,awk 还有专门的书籍来说解它,可见功能之强大与复杂,咱们初学者只须要熟练掌握一些经常使用的功能便可。
  • 学会看文档。虽然不是具体的技术知识,但它却很是重要,初学者在学习命令时老是但愿能记住全部的参数和选项,其实这些参数咱们不须要记忆(大脑是用来思考的而不是存储的),咱们能够经过 Linux 手册来查看,一般使用 man ifconfig 就可以查看该命令的官方文档说明,既准确又清晰。固然在遇到问题时,也能够查看手册来确认命令的使用方法是否正确。

Linux 系统涉及的技术知识点很是复杂,上述所分享的仅是一些必学基础知识,若是可以认真学习并够掌握好,基本上算是入门 Linux(存活的级别)。若是你是运维方向,至少须要更深刻的学习:用户管理、磁盘管理、系统平常管理、常见服务的搭建、高可用集群、系统监控等运维知识;若是你是后台开发方向,至少须要更深刻学些 Linux 操做系统、进程与线程、进程间通讯、信号、网络编程、系统调用、Linux 内核等知识;若是你是嵌入式方向,你至少须要深刻研究 Linux 内核源码、设备驱动程序了。

本篇文章到此结束,后边还会更新 Linux 系列文章,文章内容风格会尽可能保持通俗易懂、重实践和实用性,尽量地帮助到有须要的同窗,若是感兴趣的话,能够继续关注后续 Linux 系列文章。

谢谢你们,我是肖邦,欢迎关注后续的精彩分享。

相关文章
相关标签/搜索