Linux学习路线与方法

                     Linx学习路线

 

Linux 只要是计算机相关专业都有所听闻的一个操作系统。它在计算机领域的作用也越来越大。不管是服务器,还是嵌入式等各种领域都发挥着巨大的作用。很多同学也想学习,但是却无从下手,所以根据我的经验和了解,再加上百度的力量,来粗略地写一下学习路线。本文我只说这个什么,为什么要学,但是具体的学习内容请大家自行去借书或者百度。图书馆就是一个大宝库,大家应该多多利用。

 

首先大家一定要知道什么是Linux吧。

Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIXUNIX的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的UNIX工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。

看完这段大概知道了Linux是类unix操作系统,所以一旦你精通了linux 其他的类unix的操作系统例如OpenSolarisFreeBSD都能触类旁通。

 

大家可以按照我说的顺序自行借书学习。

1.安装操作系统Linux

     总之你要学习Linux就一定要安装Linux,我个人推荐装虚拟机,原因是第一方便,第二对于初学者来说不会打消积极性。当然最好的肯定是装双系统,让自己无路可退完全投入到linux的世界,但是各种配置会很头疼,所以初学还是用虚拟机,毕竟学习的结果取决于你自己的态度。

     

2.基本的命令

     我觉得Linux系统的系统交互的灵魂,就在于命令行的存在。命令比图形界面更加高效,命令可以完成图形界面不能完成的任务,命令比图形界面更加灵活,具体的我就不多阐述了,必须学习命令行,并且他也是学习shell脚本编程的基础。

 

3.基本的编辑工具

     在Window下有常用的word之类的编辑器,但是Linux下却不经常用,毕竟Linux是程序员的操作系统,所以诞生了为了适应编程的需求的编辑器viemacs。它们各有千秋,但是他们都提高了程序员的办公速度(当然是你完全掌握了这两个编辑器的情况下,才能效率变高,一开始肯定是很慢的,毕竟他们也有很多的命令,但是一旦你熟练了,就会有一种想敲代码欲罢不能的感觉)接下来我就来简单介绍一下他们。

     Vim的作用 程序员写代码的时候手需要时刻保持在键盘上,随机定位代码、随机删除代码、移动代码、插入代码的操作大大多于阅读、翻页操作,中间卡顿一下效率就大大降低了。

 Emacs被称为“神之编辑器”,可以做几乎你想得到的任何事,是一个“伪装成编辑器的操作系统”。用过的人都知道ctrl键要按得多频繁。他还有各种模式,我就不一一赘述了。

4.Shell脚本编程

     Shell脚本可将多条命令编写到一个文件中,通过运行脚本文件即可完成指定的工作。它常用于系统启动,程序编译等需要重复执行大量命令的命令的场合。能提高用户操作和管理员进行系统管理的效率。尤其是Linux网络服务器的管理员,非常需要命令行的熟练,管理各种信息。

  

5.Linuxc编程的工具学习

   在Linux编译运行c语言程序可以真真切切的感受到各种工具的组合。比起widows下各种集成环境的开发平台,更加原始的感觉到程序编译运行的过程。编辑器已经说了,接下来就是编译器了。Gcc一个特别著名的编译器,它可以根据不同的参数生成各种的中间的产物。

   说完编译器接下来就是调试器dbg他的调试也是完全是敲入各种命令,功能强大。

但到现在大家有没有疑问,那如果写了很多类,要在一个工程里运行,该怎么办?

所以Linux有一个makefile工具。

   Makefile   一个工程中的源文件不计其数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,因为 makefile就像一个Shell脚本一样,其中也可以执行操作系统的命令。

总而言之大家要学这三个工具

     1.编译器gcc 

     2.调试器dbg

     3.Makefile

 

6.Linux环境下c编程

学完第5点的工具,就可以开始Linux环境下的c编程。这里我要推荐一本书《Unix高级环境编程》(简称apue),可以拿来当字典用。

具体的学习方法是用apue当字典查阅函数,再用man命令,具体看函数的参数,与返回值,达到不用死记,有需要时查阅。

在这里所关注的只是linux应用层方面的内容,属于最基础的内容,当然也是最重要的内容。学习它,可以更深入理解操作系统原理课的进程那一块知识和实际的运用。我具体讲一下是哪几块。

1. 文件编程 

打开文件 创建文件 关闭文件 读文件 写文件 文件定位 复制文件描述符

 2.时间编程

    获取日历时间 获取格林威治时间 获取本地时间 字符串显示时间 获取高精度时间

 3.多进程程序设计

    创建进程 进程退出 进程等待 执行程序

 4.进程通信

    无名管道通讯,有名管道通信。

 5.信号通讯

    信号量互斥 信号量同步

 6.网络编程

    Tcpudp 基于各种协议的通信的客户端和服务器

     7.大家想深入就深入吧,还有很多不一一赘述。

 

   7.服务器管理配置

服务器这一块我没怎么看,但是这个也是很重要的。Linux服务器很流行,稳定,功能强大,可定制性高。尤其是以后想从事Linux服务器工作的可以好好深入,对于想搞嵌入式Linux开发的,必须学习配置TFTP服务 配置NFS服务 下载Bootloader和内核。

截下来,我就简单让大家认识一下每个服务是干什么的吧,具体的问百度百科。

web 服务器 例如最典型的就是网站服务器,放置网站文件,让只要可以和你ping通的主机都可以浏览,可以放文件,全世界下载。

ftp 服务器 ftp是文件传输协议,现在一般都指FTP服务器或者装了ftp程序的主机,可以上传下载文件,做自己的文件仓库。

samba 服务器 windows文件和打印机共享等等

nfs 服务器  开发板linux系统和PC机交换数据(文件),在开发板上直接运行PC上的应用程序(调试用),使用nfs根文件系统启动开发板的linux系统

 

  8.深入理解Linux内核

        这一块主要是想深入理解Linux这个系统的人还有想学习操作系统的人,可以去研究,因为他可以和操作系统原理课互相穿插学习,换句话说就是一一对应,从实际存在的东西上实践原理,能更好的学习操作系统。像想要深入arm+Linux开发的以后也要学会内核的裁剪,驱动程序的开发,也少不了与Linux内核的打交道。

       这个我主要推荐大家可以看适合过渡学习的《Linux Kernel Development》 这本书讲的不深也不浅,很适合在你系统地学习了OS理论之后,直接看代码详解又觉得暂且还不够功力的学习者,它可以带你由理论学习阶段逐渐过渡到实践阶段。

      接下里可以看《Understanding Linux Kernel》 这本书我看了以后第一感觉高度浓缩,概念性很强,代码也很深入,每个章节之间 联系很深,没有一定的功底,会读起来很难。

另外还想深入搞驱动的话不妨可以看《Linux Device Driver》,我当然还没到这个程度。

 

 

        总而言之,每一个阶段有每个阶段所需要学的,你不需要把每个阶段都学的很深入,但是基本的都要会,然后在深入某个方向努力学习,驱动啊,内核啊,搭建服务器啊等等,即广泛地学习,然后精一处。不管怎么样,学习是没有错的。学习一样东西主要是掌握他的思想,尤其是我说的第8点,看一遍我 推荐的书是没用的。重复去看,每一遍都会有不同的感受的,学习是循序渐进的过程。不能浮躁,不能贪图速度。

        再推荐点书,入门Linux系统命令行,可以看《鸟叔私房菜》,对linux有个大体的框架,关于shell编程可以看《Linuxunix shell编程指南》,网上一百度就有pdfLinux编程,可以看apue,服务器可以根据自己用的linux发行版找书学习,其他内核就像我上面说的。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值