去年开始,抱着学习的态度开始了我的Linux学习,到现在,差不多一年了,收获很多,不敢说精通Linux,但是,还是对得起“略懂”这两个字的。这一年里我看了很多书,细细数下,大概15本左右,其中包含了两个方面,一个是Android,另一个就是Linux。当然,在学习之初,遇到了不少瓶颈,在这里,还要感谢师兄师姐的指导。写这篇文章的目的有两个:

1.分享自己的学习经验

2.记录下我的学习历程

既然谈到了学习,那一定需要从看书说起,下面我就罗列下我看过的关于Linux学习的书

1.《鸟哥的Linux私房菜-基础学习篇》

      首先声明,我用的Linux系统是Ubuntu11.10;大学时没接触过Linux系统,所以不知道怎么开始学习是好,请教吧,师兄告诉我看这本书,现在回想起来,他的建议不错,这本书很适合初学Linux系统的人。

      我们大概都知道,或许是听说过,Linux系统经典的地方是它的命令行操作方式,这本书的主要内容就是介绍Linux系统下的命令,教你怎么使用这个系统,并简单的管理这个系统,这本书我记得后面几章的内容是关于系统运维的,由于对这方面的管理,我还暂时不需要,所以最后几章的内容并没有涉猎。

 

2.《Linux Shell 脚本攻略》



 

      这本书虽然放在第二的位置,但是确实是最近才看完的,读这本书的缘由是项目的需要,不过,现在,对这本书我又有了新的想法。

      Linux的思想是“一切皆文件”,所以,对于文件的处理是Linux最基本的功能,那么使用什么处理文件呢?使用什么效率高呢? 答案是:Shell脚本。所谓Shell脚本其实就是Linux命令的集合。这本书正是讲解这种语言的,但是内容不是很简单,需要知道一些简单的命令和参数是做什么的,所以,读这本书之前最好还是看看第一本书吧。

      我们大概都已经知道,Linux对网络的支持也是非常好的,它在内核中接入网络,所以我们需要知道和运用一些Linux系统提供给我们的命令实现网络的测试,运行状况查看等操作,这本书又派上用场了,我记得这本书有一章的内容叫做“无网不利”,听,这是对Linux系统多么贴切的描述。

 

3.《Unix环境高级编程》



 

      相信知道这本书的人很多,这是讲解Unix编程的经典书籍,由于Linux属于类Unix系统,所以,学习Linux编程,这本书不可以少。

      这本书的开篇首先讲的是对文本文件的操作,对了,就是那几个我们常常看见的函数--open,read,write,seek,close,这里,是不是又对应了“一切皆文件”这个说法。当然,这本书介绍的内容很多,其中有很多非常好的章节,比如:Linux进程间通信,Socket编程,Linux管道等等,这里,我就不详细说了,想学习的朋友自己去看看这本书吧。

 

4.《Linux系统编程》



 

      首先说,这本书不是很好找,是一本比较老的书,但是内容却是非常好,也是学习Linux编程不可多得的一本好书。

      从这本书的名字就能看出来,这本书所讲的内容是“系统编程”,所以,这里涉及的内容是系统调用,是我们的用户进程需要内核的帮助完成我们想要实现的功能,这本书我也是从头看到尾,由于书并不是很厚,所以没有花太久的时间,不过,需要理解的地方很多,有些地方比较难,所以,多看几遍这本书肯定没错。

 

5.《Linux内核设计的艺术》



 

      这里,我首先引用这本书封面上的一句话--“本书对操作系统内核的驾驭能力和深刻理解程度达到世界顶尖级水平,是一本能真正引导你深入理解Linux内核设计思想的经典著作。”

      在学习Linux之初,我们可能会“百度一下”--怎么学习Linux?网上好多人会回答你--看源代码。如果这时你真的照着做了,那么,你可能走上了一条学习Linux的不归路。为什么呢?因为,Linux有好多个版本,我们看哪个版本?源代码都在几百万行左右,怎么去看?所以,这是不切实际的。那么,为什么会有那么多的网友这样说呢?下面我来分析下。

      这本书到现在我看完了两遍,当然,还是有很多地方理解的不够透彻,不过,还是有一些自己的想法的。这本书选择的版本是Linux0.11,书中配合插图和文字去分析源代码,起初,我只是看书上的“内容”,并没有分析源代码,不过,渐渐地,我发现一个问题,合上书之后,马上就忘了我看了些什么。开始,我觉得这是对系统的不理解,对系统不熟。就这样,带着这些疑问,看完了第一遍。大概两个星期之后我开始了第二遍的阅读,这一次,我配合源代码去阅读这本书,再合上书之后,我非常欣慰,我记得那些东西是什么,现在,我才明白为什么。你想理解这个东西,想记得牢,就去分析源代码吧。

      现在,可以回答那个问题了。其实,大家所说的阅读源代码并不是让你从头看源代码,我们应该做的是,想知道哪一部分是做什么的,是怎么实现的,为什么会是这样,我们需要做的就是把这一部分的源代码找出来,阅读,分析。

 

6.《Linux内核设计与实现》



 

这本书所讲的内容也是分析Linux内核的,内容比较深,博主现在对这本书的理解也是比较浅显,so,还需努力。

    这本书中前面几章的内容很像我们的《操作系统》教科书,不过,内容要深入的多,我记得这本书对进程调度算法的讲解非常好,非常深入,以至于第一遍阅读时我没有看懂,映像比较深的还有就是进程间的协调工作,就是IPC机制的实现,这里 ,我们知道通信的媒介是管道,可是,管道是什么?它是一种文件,没错,但是它是用什么实现的?这本书中也有非常细致的讲解。所以,要想更深入的理解Linux系统,这本书还是阅读下吧。

 

    这篇文章写了好长时间了,不过,并没有完全写下我的学习历程,因为,还有很长的路要走。。。



原文链接

为学Linux,我看了这些书的更多相关文章

  1. 为学Linux 我看了这些书

    去年开始,抱着学习的态度开始了我的Linux学习,到现在,差不多一年了,收获很多,不敢说精通Linux,但是,还是对得起“略懂”这两个字的.这一年里我看了很多书,细细数下,大概15本左右,其中包含了两 ...

  2. linux 学习之路(学linux必看)

    很多同学接触Linux不多,对Linux平台的开发更是一无所知. 而现在的趋势越来越表明,作为一个优秀的软件开发人员,或计算机IT行业从业人员, 掌握Linux是一种很重要的谋生资源与手段. 下来我将 ...

  3. 为学Android,我看了这些书

    刚刚开始新的学习生活时,很容易走错方向,然后,这意味着不知道该学习什么,不知道该怎样学习,很显然,我写下这句话意味着我走过这样的路,为此,就付出了不小的代价,浪费了很多时间.       这篇文章当然 ...

  4. 十天学Linux内核之第五天---有关Linux文件系统实现的问题

    原文:十天学Linux内核之第五天---有关Linux文件系统实现的问题 有时间睡懒觉了,却还是五点多醒了,不过一直躺倒九点多才算起来,昨晚一直在弄飞凌的嵌入式开发板,有些问题没解决,自己电脑系统的问 ...

  5. Linux中许多常用命令是必须掌握的,这里将我学linux入门时学的一些常用的基本命令分享给大家一下,希望可以帮助你们。

    Linux中许多常用命令是必须掌握的,这里将我学linux入门时学的一些常用的基本命令分享给大家一下,希望可以帮助你们. 这个是我将鸟哥书上的进行了一下整理的,希望不要涉及到版权问题. 1.显示日期的 ...

  6. 教老婆学Linux运维(二)Linux常用命令指南【上】

    目录 教老婆学Linux(二)Linux常用命令指南[上] 一.概述 二.常用命令 教老婆学Linux(二)Linux常用命令指南[上] 作者:姚毛毛的博客 tips:文章太长,分两篇发出,本篇发前三 ...

  7. 【aliyun】学java,看这里,不迷茫!1460道Java热门问题

    阿里极客公益活动: 或许你挑灯夜战只为一道难题 或许你百思不解只求一个答案 或许你绞尽脑汁只因一种未知 那么他们来了,阿里系技术专家来云栖问答为你解答技术难题了 他们用户自己手中的技术来帮助用户成长 ...

  8. 尚学linux课程---10、linux环境下安装python

    尚学linux课程---10.linux环境下安装python 一.总结 一句话总结: 直接在官网下载python的源码包即可,然后在linux下安装 linux下安装软件优先想到的的确是yum,但是 ...

  9. 说说我当初是如何学Linux的

    今天我就说说我当初是如何从一名普通桌面维护工程师,通过学习和努力转成Linux运维工程师的,以及作为Linux运维工程师需要一些什么技能和知识,希望可以帮到一些对Linux有兴趣或者想往Linux这个 ...

随机推荐

  1. express文件上传

    安装express,创建项目,添加sqlite3模块 express --sessions --css stylus --ejs myhotel npm install sqlite3node app ...

  2. 将文件从数据库(MySQL)中进行读取

    package com.play; import java.io.FileOutputStream; import java.io.OutputStream; import java.sql.Blob ...

  3. Java基础--finalize()方法

    原理: 一旦垃圾回收器准备好释放对象占用的存储空间,将首先调用其finalize()方法,并在下一次垃圾回收动作发生时,才会真正回收对象占用的内存. 用途: 1)释放通过某种创建对象方式以外的方式为对 ...

  4. HDU 1003(A - 最大子段和)

    HDU   1003(A - 最大子段和) 题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=87125#problem/A 题目: ...

  5. vim: 字符串替换

    :s/str1/str2/ 替换当前行第一个 str1 为 str2:s/str1/str2/g 替换当前行所有 str1 为 str2 ( 注意,  s/xx/xxx/g 语句从s开始,中间的空格视 ...

  6. MD5校验及其c实现

    那么MD5校验是什么? 一般软件或者说文件都有自己的固定文件格式或者架构信息,说简单一点就是.”世界上没有完全相同的2片叶子” ,因为MD5是一种不可逆的加密算法. 那么对于某些网上公开下载的软件,视 ...

  7. Quiz 6a Question 7————An Introduction to Interactive Programming in Python

     First, complete the following class definition: class BankAccount: def __init__(self, initial_bal ...

  8. python2.7_2.2_在套接字服务器上使用ForkingMixIn

    Linux系统下才能用本程序.因为有Frok新的进程.... 代码如下: # -*- coding: utf-8 -*- import os import socket import threadin ...

  9. Code 16K 码

    Code 16K 码是一种多层.连续型.可变长度的条码符号,可以表示全ASCII字符集的128个字符及扩展ASCII字符.它采用UPC及Code128字符.一个16层的Code 16K符号,可以表示7 ...

  10. 一个ShellExecute的超全说明(www.phidels.com这个网站很多内容)

    I. Introduction / Déclaration ShellExecute fait partie des innombrables fonctions de l'API Windows ; ...