写给 Linux 初学者的一封信

肖邦linux 2021-01-23 01:28:35
linux 初学者 初学 写给 学者


大家好,我是肖邦

这篇文章是写给 Linux 初学者的,我会分享一些作为初学者应该知道的一些东西,这些内容都是本人从事 Linux 开发工作多年的心得体会,相信会对初学者有所帮助。如果你是 Linux 老鸟,那可能就不需要再往下看了

linux
linux

为啥要学Linux

作为从事 IT 工作的同学,对 Linux 系统一定不陌生。如今我们在各种领域都能看得到它的身影,比如,手机、服务器、嵌入式、电信设备、大型计算机,以及各种电子类产品都离不开 Linux,它已经渗透到互联网世界的方方面面了。

包括那些火热的技术,比如云计算、虚拟化、容器、大数据、人工智能,几乎都是基于 Linux 技术的,那些平台系统,电商、团购、社交、新闻、快递,都是部署在服务器端,也几乎都是基于 Linux 技术的。

在编程的世界中,Linux 就是主流,不会 Linux 你就可能会格格不入。如果你想进大公司,想学新技术,Linux 一定是一道绕不过去的砍,只有进入了 Linux 系统这扇大门,你才可能成为合格的软件工程师。

企业服务器环境绝大部分都是 Linux 系统,所以不管你是从事前端、后端、运维、测试中的哪一类工作,Linux 都是你必须掌握的基础知识,只是不同类型工作需要学习 Linux 的方向不同而已。

经验与建议

下边分享的内容是本人从事 Linux 开发多年的一些经验总结,相信对 Linux 初学者会有所帮助,当然如果有不准确的地方,还请指正。

  • 一定要自己搭建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.对生产环境一定要有敬畏心

如何学习?

高效的学习方法往往能够帮助你事半功倍,下边是我分享的一些自己的学习心得和方法,希望对大家有帮助。

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

应该学习的基础知识

Linux 系统涉及的技术知识点非常广泛,学习者可以根据自己的实际情况,选择相应的主题方向进行学习,不可盲目的跟随他人的学习路线,有可能适得其反,学习效果事倍功半,得不偿失,所以选择适合自己的学习路线非常重要。

因为每个人将来从事的工作和方向不同,需要重点学习的内容也不一样,而且本文目标也只是分享给 Linux 初学者一些实用的经验心得,所以后边内容中只简单罗列了最通用和实用的一些技术,这些是学习 Linux 技术的所有同学都应该知道的技术知识点。

  • 学习 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 系列文章。

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

版权声明
本文为[肖邦linux]所创,转载请带上原文链接,感谢
https://www.cnblogs.com/liwei0526vip/p/14315856.html

  1. 【计算机网络 12(1),尚学堂马士兵Java视频教程
  2. 【程序猿历程,史上最全的Java面试题集锦在这里
  3. 【程序猿历程(1),Javaweb视频教程百度云
  4. Notes on MySQL 45 lectures (1-7)
  5. [computer network 12 (1), Shang Xuetang Ma soldier java video tutorial
  6. The most complete collection of Java interview questions in history is here
  7. [process of program ape (1), JavaWeb video tutorial, baidu cloud
  8. Notes on MySQL 45 lectures (1-7)
  9. 精进 Spring Boot 03:Spring Boot 的配置文件和配置管理,以及用三种方式读取配置文件
  10. Refined spring boot 03: spring boot configuration files and configuration management, and reading configuration files in three ways
  11. 精进 Spring Boot 03:Spring Boot 的配置文件和配置管理,以及用三种方式读取配置文件
  12. Refined spring boot 03: spring boot configuration files and configuration management, and reading configuration files in three ways
  13. 【递归,Java传智播客笔记
  14. [recursion, Java intelligence podcast notes
  15. [adhere to painting for 386 days] the beginning of spring of 24 solar terms
  16. K8S系列第八篇(Service、EndPoints以及高可用kubeadm部署)
  17. K8s Series Part 8 (service, endpoints and high availability kubeadm deployment)
  18. 【重识 HTML (3),350道Java面试真题分享
  19. 【重识 HTML (2),Java并发编程必会的多线程你竟然还不会
  20. 【重识 HTML (1),二本Java小菜鸟4面字节跳动被秒成渣渣
  21. [re recognize HTML (3) and share 350 real Java interview questions
  22. [re recognize HTML (2). Multithreading is a must for Java Concurrent Programming. How dare you not
  23. [re recognize HTML (1), two Java rookies' 4-sided bytes beat and become slag in seconds
  24. 造轮子系列之RPC 1:如何从零开始开发RPC框架
  25. RPC 1: how to develop RPC framework from scratch
  26. 造轮子系列之RPC 1:如何从零开始开发RPC框架
  27. RPC 1: how to develop RPC framework from scratch
  28. 一次性捋清楚吧,对乱糟糟的,Spring事务扩展机制
  29. 一文彻底弄懂如何选择抽象类还是接口,连续四年百度Java岗必问面试题
  30. Redis常用命令
  31. 一双拖鞋引发的血案,狂神说Java系列笔记
  32. 一、mysql基础安装
  33. 一位程序员的独白:尽管我一生坎坷,Java框架面试基础
  34. Clear it all at once. For the messy, spring transaction extension mechanism
  35. A thorough understanding of how to choose abstract classes or interfaces, baidu Java post must ask interview questions for four consecutive years
  36. Redis common commands
  37. A pair of slippers triggered the murder, crazy God said java series notes
  38. 1、 MySQL basic installation
  39. Monologue of a programmer: despite my ups and downs in my life, Java framework is the foundation of interview
  40. 【大厂面试】三面三问Spring循环依赖,请一定要把这篇看完(建议收藏)
  41. 一线互联网企业中,springboot入门项目
  42. 一篇文带你入门SSM框架Spring开发,帮你快速拿Offer
  43. 【面试资料】Java全集、微服务、大数据、数据结构与算法、机器学习知识最全总结,283页pdf
  44. 【leetcode刷题】24.数组中重复的数字——Java版
  45. 【leetcode刷题】23.对称二叉树——Java版
  46. 【leetcode刷题】22.二叉树的中序遍历——Java版
  47. 【leetcode刷题】21.三数之和——Java版
  48. 【leetcode刷题】20.最长回文子串——Java版
  49. 【leetcode刷题】19.回文链表——Java版
  50. 【leetcode刷题】18.反转链表——Java版
  51. 【leetcode刷题】17.相交链表——Java&python版
  52. 【leetcode刷题】16.环形链表——Java版
  53. 【leetcode刷题】15.汉明距离——Java版
  54. 【leetcode刷题】14.找到所有数组中消失的数字——Java版
  55. 【leetcode刷题】13.比特位计数——Java版
  56. oracle控制用户权限命令
  57. 三年Java开发,继阿里,鲁班二期Java架构师
  58. Oracle必须要启动的服务
  59. 万字长文!深入剖析HashMap,Java基础笔试题大全带答案
  60. 一问Kafka就心慌?我却凭着这份,图灵学院vip课程百度云