linux学习方法建议


对于刚接触linux的朋友来说,可能不知道从哪里开始学习linux。本文从实际情况出发,给出了学习linux比较实用的建议。 会玩linux不

一.linux学习建议

回到顶部

很多技术,包括linux运维c/c++编程linux高级编程linux内核架构等,没有所谓简单与复杂,只有知道与不知道,就像一层纸,捅透了就能看到后面的世界。 捅不透就永远看不到,永远觉得后面的世界是神秘复杂的。你知道了就简单,不知道就难。毕竟这些都是人的发明,都是可以被理解的。 任何看上去复杂的事物,拆解到最后就会发现都是由最简单的原理一层一层构成,每一层都会向上一层提供API,所有的事物都是这样的基本原理。 linux也同样遵循简单的哲学。但是不能因此而陷入眼高手低好高骛远的误区,觉得什么都简单,没什么好学的,linux不就那么回事儿吗? 技术都是死的东西,难的是创新,是发现和创造新事物,是利用死的技术创造活的事物。 就像现在所有人都知道万有引力,但发现万有引力可不是件容易的事儿,万有引力的本质是什么到现在人们也没搞清楚, 能利用好万有引力也不是件简单的事情,但知道万有引力这么个事儿确实是件简单的事情, 不管你知不知道,万有引力就在那儿,不管你学不学linux,linux就在那儿。祝愿大家都能学好linux,用好linux!

1.在主流linux发行版中选择适合自己的linux发行版

目前linux发行版实在太多了,很多刚接触linux的朋友总是在纠结该选择哪个linux发行版。 为了减少初学者的选择时间成本,基于目前国内linux的使用现状,我们给出的建议是linux mint或者centos。 关于发行版的选择问题,我们应该抱着开放的心态。不是说今天让你选择了centos或者linux mint。其他的发行版就不再接触了。 还有很多优秀的linux发行版,真的是非常的优秀。大家在业余时间不妨多多尝试体验,说不定就能找到更适合自己口味的linux发行版。 可以参考linux发行版排行网站distrowatch:https://distrowatch.com,查询目前比较主流的linux发行版。
更多参考:最受欢迎的linux发行版

2.在实体物理机和虚拟机里安装和学习linux

建议初学者先通过虚拟机安装学习linux。常见的虚拟机有vmware和virtualbox。 我们鼓励大家多尝试体验不同的linux发行版,最方便经济的做法就是通过虚拟机来安装体验了。 当然我们一定不能错过在实体物理机上面安装和使用linux的机会,只要条件允许,我们鼓励大家在自己的实体物理机器上面安装和使用linux。 通过反复安装linux,可以学习到很多方面的知识,包括虚拟机、计算机基本原理,磁盘分区和挂载点分配、linux启动过程等等。 所以要想学习linux,先从安装linux开始吧。生命不息,折腾不止。
关于linux安装请参考这里: linux安装

3.在图形界面模式下学习linux命令操作

linux主要有两种运行模式,一种是图形用户界面模式,另一种是命令行模式。
我们学习linux,最开始主要是学习linux命令操作,所以首先要选择linux命令的操作环境,也就是linux运行模式。 虽然现在linux的图形界面已经非常美观和人性化,但是我们的学习重点并不是图形界面的操作,而是linux的命令操作! x window作为linux内核之上运行的应用软件,并不是linux内核的组成部分,也不是linux运行的必备软件。 很多操作都可以通过图形界面简单快速的完成, 但是相对于命令行模式,图形界面还是有很多的局限性,而且还会占用相当大的系统资源! 特别是在企业运维环境下,通常是远程连接linux主机, 图形界面会占用网络带宽,消耗网络资源,命令行模式因为传输的都是文本数据,所以有着无与伦比的优势! 在服务器的应用上,文件的安全性、用户账号的管理、软件的安装修改与设置、登录文件的分析以及自动化工作例程与程序的编写等,都是我们需要学习的重点内容。 而这些管理操作往往比在图形界面模式下更有效率! 说到这里,很多朋友可能就已经开始跃跃欲试了!在自己的电脑上面安装了命令行模式的linux操作系统,但是开机后面对黑不溜秋的屏幕,只能干瞪眼,不知道要干什么。 很多朋友认为学习linux命令操作,又不让学习图形界面,那就是要在命令行模式下学习了,其实不是这样的。 我们的建议是在图形用户界面模式下学习linux命令操作。
因为在图形用户模式下,遇到任何问题都可以方便直观的查找各种学习资料。注意这里说的并不是在图形界面模式学习图形界面的操作, 本站的重点并不是介绍图形界面下的图形操作,因为现代linux发行版的图形界面都已经非常人性化了,都是开箱即用的傻瓜式操作, 只需要花上一两天时间就可以熟悉图形界面的操作了,即使是第一次接触也很容易上手操作。
那linux命令不是要在命令行模式才能运行吗?怎么要在图形用户模式下学习呢? 这是因为在图形用户模式下也可以学习和运行linux命令,只需要随时打开图形界面下自带的terminal工具就可以了。
如果你非要用命令行模式运行命令,那么在图形模式下也可以很方便的切换到命令行模式,linux默认的情况下会提供7个终端让用户登录, 可通过"Ctrl+Alt+F1~F7"组合键来切换不同的终端,分别对应tty1-tty7终端界面。一般tty1运行图形界面,其他的都运行在命令行模式下。 在图形模式下,只需要通过"Ctrl+Alt+F1~F7"组合键即可方便的切换到命令行模式。
虽然企业生产环境下的服务器大部分运行在命令模式下,但是我们在实际工作中也是在图形模式下,因为我们可以方便的通过ssh远程连接到远程服务器进行远程操作。 所以大部分工作其实通过图形界面下的terminal就可以了。而本站所有的命令操作都是在图形界面下的terminal完成的。
大部分发行版的terminal工具都很容易找到,打开terminal最常用的的方式就是在桌面上右击鼠标,在弹出的右击菜单中, 一般会有"open in terminal"选项,点击该选项即可打开terminal。

我们学习linux主要是学习linux的命令操作,那么我们平时学习linux在哪种环境下比较好呢?
initroot给出的建议是在图形用户界面模式下学习linux命令操作。
对于研发人员,在图形界面模式下也是非常方便的。 那么企业生产环境下的服务器都是运行在命令行模式下,那么是不是工作中就要在命令行模式下工作呢?答案是否定的。 因为服务器大部分情况下不在你的办公地点,而是存放在机房或者某个角落里,大部分时间我们不需要在服务器跟前直接操作服务器, 而是利用自己的电脑通过ssh远程连接到远程服务器进行远程操作。 所以大部分工作其实通过图形界面下的terminal就可以了。而本站所有的命令操作都是在图形界面下的terminal完成的。
那么如何打开terminal呢?
大部分发行版的terminal都很容易找到,打开terminal最常用的的方式就是在桌面上右击鼠标,在弹出的右击菜单中, 一般会有"open in terminal"选项,点击该选项即可打开terminal。

4.熟悉shell命令行环境

我们所运行的每一条命令,都是在linux命令行环境下运行的。而linux命令行环境其实是由shell提供的。目前大部分linux发行版默认启动的shell就是bash shell。 linux下的很多概念,比如变量、环境变量、shell脚本、shell启动配置文件、命令执行都和shell有关。很多命令其实是shell本身提供的功能,我们称为shell内置命令。 所以如果要学好linux,先扒了shell这层皮(外壳),你才能看到裸奔的linux。

5.了解linux命令执行背后的原理

在学习一样东西的时候,最好能先了解一下基础原理。这样在学习的时候心里才有底儿。 虽然会在一定程度上降低学习效率,但是从长远角度来看,实际上是加快了学习效率。我们在命令行下敲命令的时候,其实是在跟一个叫shell的程序打交道, shell会根据用户敲的命令名字,判断是内置命令还是外置命令,如果是内置命令,直接执行该命令的功能即可。 如果是外置命令,shell会在环境变量PATH指定的路径下寻找和命令名字对应的二进制可执行文件,找到后shell会创建一个子进程,在子进程中加载并执行该可执行文件。
所以我们平时敲的大部分命令都是一个已经存在的可执行文件,那么这个可执行文件放在哪里呢,通过whereis就可以看到命令所对应的可执行文件的路径了, 例如要看看ls这个命令在哪里,就执行whereis ls就可以看到ls的路径了。如果你把这个文件删掉,那么shell就会告诉你找不到这条命令。大部分命令都是一个可执行文件, 但是我们在用whereis查看cd命令的可执行文件路径的时候,shell的输出是这个样子的:“cd:”,竟然没有路径名,这是什么鬼? 这是因为cd是shell的一个内置命令,不以可执行文件的形式存在。所以咱们平时敲的命令主要分为两种,一种是以可执行文件存在的外部命令, 一种是没有可执行文件的内置命令。
这里的外部和内置是从shell的角度说的。那么怎么判断一条命令是shell内置命令还是外部命令呢,用type查看就可以了,比如查看cd,在命令行下敲type cd, shell的输出是cd is a shell builtin。那么cd就是一条shell内置命令。
为什么鼓励大家去了解linux命令执行背后的原理了吧?通过上面简单的分析我们就可以发现,一个问题就引出了好几个非常重要的概念, 包括shell、环境变量、进程、内置命令和外置命令、inux内核原理等。所有这些看似零散的知识点,其实就可以通过一条主线串联起来。

6.实际动手操作linux命令并查看运行效果

linux是一门操作性很强的学科,如果只是范范的看看命令的介绍而不去实际操作运行一遍,很多命令是很难体会到其真正含义的。 所以在接触新命令的时候,我们可以随时打开termial工具,实际执行一下看一下命令的执行效果。 可能光看书看不懂的地方,实际操作一遍,瞬间就明白了。 比如我们一直建议用户在敲命令的时候养成经常敲tab的习惯,也唾沫横飞地讲解了tab的用处和好处,可是如果你只是看看,从来不动手实践一下, 就很难理解tab命令补全的功能和好处了。

7.通过linux自带的帮助系统和网络搜索引擎百度解决问题

linux自带很多帮助工具,包括man、info、help命令,以及大部分命令自带的--help选项。 另外在/usr/share/doc目录下有大量的说明文档。 另外还有一些网络文档: CLDP中文文件计划 http://www.linux.org.tw/CLDP/
The Linux Documentation Project:http://www.tldp.org/
那个 TLDP(The Linux Documentation Project), 他几乎列出了所有 Linux 上面可以看到的文献数据, 各种 How-To 的作法等等,虽然是英文的,不过,很有参考价值!
这些都是我们学习linux的好帮手。 正所谓师傅领进门,修行在个人。经常阅读man、info、--help等linux自助系统是一个非常好的习惯。
我们在学习linux的过程难免会遇到各种问题,或者是在阅读上面提到的说明文档会经常遇到陌生的概念术语。 很多命令在出错的时候都会给出错误提示,例如:

              [root@centos ~]# ls -l /initroot
              ls: /initroot: No such file or directory
              
由于系统并没有/initroot目录,系统就会给出上面的错误提示,通过这个错误提示我们已经很容易的找到问题了, 那就是命令中提供的路径不对,但是可能有很多提示信息我们还是看不懂。
这时候最好的老师就是百度和谷歌了,因为你遇到的问题,很有可能别人也遇到过了。那么通过百度就可以很容易找到答案! 常用的网络搜索引擎工具有百度和谷歌google
这时候就可以将错误的关键信息复制粘贴到百度或者google进行查询就可以了!
另外如果是网络服务的问题,也可以查看/var/log/目录中的日志文件,这样可以几乎解决大部分的问题了!
经过各种搜索,却找不到相关的信息,还可以到linux学习论坛进行发问: linux学习论坛 不过,在发问之前建议您最好先看一下提问的智慧!相信会有很多大牛会热心帮助你解决问题的!

8.尝试了解linux操作系统内核原理,探究更深层次的东西

理解linux内核的运作原理,可以帮助我们对linux有更深入的理解,使用的时候也会更加得心应手。

9.学会放手,不懂的东西先放一放

linux的学习不能一蹴而就,需要从最基础的内容慢慢学起,而且要经历几个前后交叉的学习阶段。 linux的学习涉及到大量的概念,很多知识点总是前后交织,很难在讲解一个概念的时候不涉及另外的概念, 所以有时候会遇到怎么看书都看不懂的情况,不知所云,云里雾里的感觉。看第一遍很有可能会看不懂,无法真正理解,这个时候千万不要被不懂的知识点绊住, 可以抱着囫囵吞枣的心态,不懂的地方先放一放,了解个大概即可,不需要深究死磕非得弄明白。 接着往后学习,随着学习的深入,等过段时间再回来看之前不懂的知识,可能就会有恍然大悟醍醐灌顶的感觉了,然后捶胸顿足拍大腿,他妈的原来linux如此简单!

10.温故而知新

年纪大了,总是忘东西丢三落四怎么办?先别急的吃药。 很多东西你以为理解了,可过段时间再回来看以前理解的知识点,可能又会有一些新发现。所以要经常温习学过的linux知识,每次都由不一样的小顿悟。 在人类的记忆曲线中, 必须不断的重复记忆才可以永久的记住一件事情! 学习Linux也一样, 除了要实际操作之外,也需要要经常复习!
linux的经验都是在反复练习中获得的,很多时候计算机/网络都会有一些莫名其妙的突发状况,如果没有实际碰触过,是不可能体会到的。
学会将文件分门别类,设计好存放目录,不要随意保存文件到不相关的目录。
养成做记录的习惯,发现问题后,把错误信息和引发状况以及解决方法记录清楚,整理归类成文档。
网络上看到的好文章,可以留一份copy,归类存档。
学写script的确没设定server那么好玩,不过以我自己的感觉是:关键是会得偷, 偷了会得改,改了会得变,变则通矣。

11.保持兴趣

想要学好linux这么一套优秀的操作系统, 除了前面提到的一些建议之外,得要培养出兴趣与成就感才行!
学习Linux如果玩不出兴趣, 学起来也会比较痛苦。 Linux上面可以玩的东西真的太多了,可以选择一个有趣的主题深入下去!不论是Shell还是图形接口, 只要自己感兴趣,都可以深入研究!
可以经常写学习心得分享,学会一样东西与教会一样东西是不太一样的!学会一样东西可能学会了就算了! 但是要教会别人,得要思考相当多的理论与实践方面的东西,这样所能学到的东西就更深入了!
经常回答新手的问题,回答别人问题的时候,就如同上面说的一样, 会更深入的去了解每个项目!
参与技术讨论是一件提升自己能力的快速方法!每一次的技术思想的碰撞,都是一次次的知识成长! 一般来说,公司在遇到问题的时候,不是解决一部主机的问题,而是需要给出整体环境总体解决方案Total Solution。 而目前学习的Linux其实仅是在一部主机上面进行各种设置, 还没有到达解决整体公司所有问题的状态。 得要先学会Linux基础技巧后, 才有办法将这些技巧用于整体解决方案!
谨记不同的环境下,解决问题的方法有很多种,只要行的通,就是好方法!
另外在学习linux的时候,不要排斥微软windows,抱着开放的学习心态!

二.linux学习路线图

回到顶部

根据以后要从事的工作方向,可以制定不同的linux学习路线图。 学习Linux后主要从事哪些方面工作的问题,主要还是要看目前linux的应用领域。
目前国内学习Linux主要从事如下几个方面的工作:
1.嵌入式linux应用开发;
2.linux后台服务开发;
3.linux内核驱动开发;
4.linux服务器运维;
嵌入式linux应用开发和linux后台服务开发需要linux应用程序设计方面的知识,涉及到c/c++编程和linux/unix环境高级编程,本站为此提供了两个板块方便开发者学习。
点这里查看c/c++编程;
点这里查看linux/unix环境高级程序设计;
更多关于嵌入式linux方面的知识可查看嵌入式linux ;
如果您打算从事服务器运维方面的工作,那么需要学习linux各种服务器的架设和配置,linux服务器(集群)架构设计。本部分内容可查看 linux运维
更多linux内核驱动方面的知识可查看 linux内核
不管的哪个方向,需要学习的linux基础知识都是一样的。总之在你成为linux大牛之前,一定要好好学习linux基础知识!这些基础知识如下几个方面:
一.linux基础入门
1.学习计算机基础知识;
linux毕竟和计算机硬件密不可分, 理解计算机原理和硬件相关的基础知识,对于linux的学习是很有帮助的,例如理解硬盘的组成原理,可以在学习linux硬盘分区管理和文件系统的时候有所帮助;
2.学习linux系统的安装;
通过学下Linux系统的安装,可以学到非常多的Linux系统知识,例如linux的启动过程,磁盘的分区等;
3.认识和学习linux基础命令;
Linux操作系统的基础技能:
这些包含了使用者、群组的概念、权限的观念,程序的定义等等,尤其是权限的概念, 由于不同 的权限设定会妨碍你的使用者的便利性,但是太过于便利又会导致入侵的可能! 4.学习文件和目录管理相关的命令;
5.学习磁盘管理相关的命令;
6.学习一些基础工具例如vi编辑器的使用;
务必学会vi文书编辑器的使用,Linux的文书编辑器多到会让你数到生气! 不过,vi却是强烈建议要先学习的! 这是因为vi会被很多软件所调用,加上所有的Unix like系统上面都有vi,所以一定要学会!
7.学习shell脚本编程;
Shell与 Shell Script的学习,我们提到linux文本命令行模式其实就是由shell提供的! 我们在命令行模式下做的任何操作,都是在和shell打交道,所以一定要深入的了解shell,包括shell作业管理、正则表达式、管道命令以及数据流重导向等, 另外shell scripts可以让你更加牛逼哄哄!
8.学习linux账号管理相关的命令;
9.学习linux进程管理方面的知识;
10.学习linux系统服务相关的知识;
12.学习linux启动流程等方面的知识;
13.学习linux软件安装和卸载方面的知识。
一定要学会软件安装包管理,经常需要自己安装驱动程序或者是安装软件,尤其是嵌入式设备或者是学术研究单位等。 这个时候Tarball/RPM/DPKG/YUM/APT等软件包安装管理工具就非常重要了!
14.网络基础的建立:
网络基础与安全非常重要,例如TCP/IP的基础知识,网络路由的相关概念等。 如果上面你都通过了,那么网络的基础就是下一阶段要接触的咚咚,这部份包含了IP概念路由概念等; 如果连网络基础都通过了,那么网站的架设对你来说,简直就是太简单啦!
以上都是比较基础的内容,也是linux学习最重要的内容。如果要继续深入学习的话,就要学习各种服务器运维方面的知识, 这方面的内容更偏向于企业实战,如下所示:
二.linux服务器运维
1.linux网络管理方面的知识;
2.linux路由与防火墙的设置;
3.常见服务的安装与配置,比如ftp服务,http服务,ssh服务,nfs服务等。
4.linux集群架构设计;
三.c/c++编程
四.linux/unix环境高级程序设计
五.linux内核
学习linux内核并不是要去做linux内核开发方面的工作,了解Linux内核原理可以对linux有更深入的了解,对命令背后的运作原理有更深入的理解。 这方面的学习也可以贯穿在linux学习的整个过程中。

三.linux书籍推荐

回到顶部

在linux的学习中,书籍是必不可少的。本站为方便linux爱好者提供了大量linux免费电子书籍下载,以及linux正版书籍的正规购买渠道新华书店网上文轩书店
1.linux免费电子书下载
2.linux正版图书
3.新华书店网上文轩书店
除了亲自操作之外,也可以参考网络上一些实战经验分享,例如本站www.initroot.com。 学习 Linux 最好从头由基础开始学习,找到一本适合自己的书籍,加强实作才能学会
除了大家推荐的书籍之外, 您必须要亲眼看过该本书籍,确定您可以吸收的了书上的内容,再下去购买喔!
其实买科技类书籍比较喜欢买基础书耶,因为基础学好了,其他的部份大概找个keyword ,再 google 一下,一大堆数据就可以让你去分析判断了! 你会说,既然如此,那基础书籍内的项目不是google 也是一大堆?不要忘记了,最开始你是要用什么关键词去 google 啊?! 所以,阅读基础书籍的重点, 就是让自己能够掌握住那些 keyword!

initroot编辑整理,转载请注明www.initroot.com技术交流群:59909790

100次点赞 100次阅读