新手学习Linux之快速上手分析
一.起步
首先,应该为自己创造一个学习linux的环境--在电脑上装一个linux或unix
问题1:版本的选择
北美用redhat,欧洲用SuSE,桌面mandrake较多,而debian是技术最先进的,linux开发人员中用debian的最多,其次是redhat,从全球linux各应用领域市场份额来看无疑redhat是最多的,此外还有很多出名的发行版本,不再列举。原则是:我们没有必要把时间浪费在"装系统"上而应集中精力学习最有用的东西。
//注:现在觉得RH很死板,AS,ES等用在服务器上或许不错,Personal desktop用mandrake,debian,suse都不错。
如果你并不打算深入学习linux,而是有诸如适应北京市政府办公平台迁移到linux上这种需要,那么中软,红旗等中文linux是不错的选择
我强烈建议:自己亲自动手把linux装到你的硬盘上,你必须学会独立安装linux系统的技能,对于现在的版本来说,其实跟装WinXP一样简单从此现在开始,请不要以windows的工作方式来考虑问题,应该尝试挖掘linux身上的"天才unix"的气质。
二.进阶
掌握至少50个以上的常用命令;
理解shell管道"|",文件流重定向">"及追加">>"等;
熟悉Gnome/KDE等X-window桌面环境操作;
掌握.tgz.rpm.biz等软件包的常用安装方法;
学习添加外设,安装设备驱动程序(比如modem);
熟悉Grub/Lilo引导器及简单的修复操作;
熟悉系统固有目录的名称及学会用mount命令访问其他文件系统;了解vi,gcc,gdb等常用编辑器,编译器,调试器学习linux环境下的简单组网;
建议:买一本不需要太厚的linux教材,大致可以满足要求。(现在的书越来越多了,还带很多图,我当时可没这么多书:)
三.高级应用
澄清一些概念:
linux的普通操作与真正的系统管理不能相提并论,后者需要很多知识
我个人认为比较重要几种linux语言
1.英语
即使你不学linux,我也强烈建议你学好英文[U.S.english]。因为实质上计算机语言就是英文和字符,所谓的多国语言只是外部包装。你必须能无障碍的阅读大量的英文技术文档,在搜索引擎找到的英文网站和网页中熟练的检索。最好能有用英文直接交流的能力,摆脱了这个障碍,你的学习和理解速度就能快很多,你就有机会拉开和别人的差距
2.shell[sed/awk]
shell是命令解释器,是内核与用户界面交流通道,shell写的小脚本有点类似于win下的.bat但shell比.bat强大的多,shell不只是解释命令,更是一种编程语言,有时候几百行的c用shell几十行就能代替完成工作,因为shell的工作方式建立在系统已有的众多应用程序之上这也是CS中的一个重要思想。
此外,shell可以实现工作自动化,这个概念也比较重要sed,awk用来处理文本,历来很常用
3.Perl/PHP
漂亮的脚本, CGI的首选,比ASP好,应用面很广
4.C\C++
C、C++是linux/unix的核心语言,系统代码都是C写的
5.ASM
系统底层及内核,硬件,设备驱动程序,嵌入式开发都需要。要是走核心路线的话,才c\c++,asm最重要
6.Java,Python,Tcl,XML
*系统管理篇
在熟悉linux的基础上还需要掌握至少一种unix。我首推Solaris,其次是FreeBSD。比如运营级系统一般是Solaris+Oracle/DB2之类的学习apache,ssh,sendmail/Qmail,proftp/vsftp,Samba,Squid,MySQL/PostgreSQL/Oracle,Bind等各种应用服务器的构架及电子商务的应用熟悉TCP/IP协议族,学习诸如apache+php+proftp+mysql+quota的实现以及大型局域网,分布式集群等各种企业级应用解决方案熟悉多用户管理,数据库管理,文件系统,逻辑存储管理,日志分析,备份与灾难数据修复系统补丁,内核升级,以及在此基础上的防火墙构架等以保障系统安全在内的各种系统管理技能我觉得,如果在此基础上再掌握路由/交换设备便是一个不错的系统管理员
各种基于linux的解决方案可参考相关书籍和文献,必要时用google或各大linux站点站内搜索引擎寻找最新文档,以避免错误和漏洞有几本技术大全和技术内幕我认为都是这方面不错的书
四、深入学习linux
我个人理解的读linux内核需要的基础:在此之前,希望先把应用层的东西学一下,那样会比较好理解
1.C
如果学过潭浩强的大学教科书(除了编几个数学模型好像什么也做不了的那种), 建议再看一下《The C Programming Language》Second Edition这本圣经/*如果想学缓冲区溢出,这点C的功力可能是不够的*/还有,《C陷阱与缺陷》,《C专家编程》,《C\C++深层探索》。反正经典书看多了是没有坏处的
2.asm (AT&T语法,保护模式)
保护模式下的比较复杂,基本上每本讲内核的书都会有介绍有80x86 Intel语法的基础就行,有兴趣可以看看Intel的官方白皮书
3.数据结构(离散数学)
计算机专业的核心课程,重要性我就不说了
4.操作系统原理
看懂这个再去读linux吧
5.微机原理/组成原理(数字电路)
底层直接和硬件打交道,所以这个也要
6.了解linux/unix
我想至少你要会操作吧,了解unix的API
7.软件工程/编译原理
这方面的经典书去www.china-pub.com可以搜到很多我觉得APUE这种书不适合初学者,还是先看看UPE之类的吧
APUE:
《advanced programming in the unix environment》
《unix环境高级编程》
作者:W.Richard.Stevens共有6本经典书,尊为"圣经"他的书为全世界黑客所拜读!
UPE:《unix programming environment》
《unix编程环境》比较适合初学者的,深入浅出,其中有一些比较重要的思想
另外,介绍linux下应用层编程的书也有很多,比如
《GNU\Linux编程指南》,redhat,redflag出的书........... 经典书还有很多很多......《 操作系统:设计与实现》//上海交大的考研参考书目,讲
Minix的unix操作系统设计
《4.4BSD操作系统设计与实现》
《昂莱氏unix源代码分析》
《ulk:understanding the linux kernel 》(2nd)深入理解linux内核
《linux设备驱动程序 (2nd)》
《linux内核源代码情景分析》
《保护方式下的80386及其编程》
五、上升到工程化Linux下环境开发:
一、 科学哲学和管理哲学
【1】 “程序开发心理学”(The Psychology of Computer Programming : Silver Anniversary Edition)
【2】 “系统化思维导论”(An Introduction to Systems Thinking, Silver Anniversary Edition)
【3】 “系统设计的一般原理”( General Principles of Systems Design)
【4】 “质量·软件·管理(第1卷)—— 系统思维”(Quality Software Management:Systems Thinking)
【5】 “成为技术领导者——解决问题的有机方法”(Becoming A Technical Leader:An Organic Problem-Solving Approach)
【6】 “你的灯亮着吗?-发现问题的真正所在”( Are Your Lights On? How to Figure Out What the Problem Really Is)
【7】 “程序员修炼之道”(The Pragmatic Programmer)
【8】 “与熊共舞:软件项目风险管理” (Waltzing With Bears: Managing Risk on Software Projects)
【9】 “第五项修炼: 学习型组织的艺术与实务”( The Fifth Discipline)
二、 计算机科学基础
【10】 “计算机程序设计艺术”(The Art of Computer Programming)
【11】 “深入理解计算机系统”(Computer Systems A Programmer's Perspective )
【12】 “算法导论”(Introduction to Algorithms, Second Edition)
【13】 “数据结构与算法分析 —— C语言描述(原书第2版) ”(Data Structure & Algorithm Analysis in C, Second Edition) 31
【14】 “自动机理论、语言和计算导论(第2版)”(Introduction to Automata Theory, Languages, and Computation(Second Edition))
【15】 “离散数学及其应用(原书第四版)”(Discrete Mathematics and Its Applications,Fourth Edition)
【16】 “编译原理”(Compilers: Principles, Techniques and Tools)
【17】 “现代操作系统”(Modern Operating System)
【18】 “计算机网络(第4版)”(Computer Networks)
【19】 “数据库系统导论(第7版)”(An Introduction to Database Systems(Seventh Edition))
三、 软件工程思想
【20】 “人件”(Peopleware : Productive Projects and Teams, 2nd Ed.)
【21】 “人件集 —— 人性化的软件开发”( The Peopleware Papers: Notes on the Human Side of Software)
【22】 “人月神话”(The Mythical Man-Month)
【23】 “软件工程 — 实践者的研究方法(原书第5版)”(Software Engineering: A Practitioner's Approach, Fifth Edition)
【24】 “敏捷软件开发-原则、模式与实践”(Agile Software Development: Principles, Patterns, and Practices)
【25】 “规划极限编程”( Planning Extreme Programming)
【26】 “RUP导论(原书第3版)”(The Rational Unified Process:An Introduction,Third Edition )
【27】 “统一软件开发过程”(The Unified Software Development Process)
四、 软件需求
【28】 “探索需求-设计前的质量”( Exploring Requirements: Quality Before Design)
【29】 “编写有效用例”(Writing Effective Use Cases )
五、 软件设计和建模
【30】 “面向对象方法原理与实践”
【31】 “面向对象软件构造(英文版.第2版)”(Object-Oriented Software Construction,Second Edition )
【32】 “面向对象分析与设计(原书第2版)”(Object-Oriented Analysis and Design with Applications,2E )
【33】 “UML面向对象设计基础”(Fundamentals of Object-Oriented Design in UML)
【34】 “UML精粹 —— 标准对象建模语言简明指南(第2版)”( UML Distilled: A Brief Guide to the Standard Object Modeling Language (2nd Edition))
【35】 “UML和模式应用(原书第2版)”(Applying UML and Patterns: An Introduction to Object-Oriented Analysis and Design and the Unified Process, Second Edition )
【36】 “设计模式精解”(Design Patterns Explained)
【37】 “设计模式:可复用面向对象软件的基础”( Design Patterns:Elements of Reusable Object-Oriented software)
【38】 “面向模式的软件体系结构 卷1:模式系统”( Pattern-Oriented Software Architecture, Volume 1: A System of Patterns)
【39】 “软件设计的艺术”(Bringing Design to Software)
六、 程序设计(这个因人而异,术业有专攻,学学C#、JAVA也不错啊)
【40】 “编程珠矶”(Programming Pearls Second Edition )
【41】 “C程序设计语言(第2版·新版)”(The C Programming Language )
【42】 “C++ 程序设计语言(特别版)”(The C++ Programming Language, Special Edition)
【43】 “C++ Primer (3RD)”
【44】 “C++语言的设计和演化”( The Design and Evolution of C++)
【45】 “C++ 编程思想(2ND)”(Thinking in C++ Second Edition)
【46】 “Effective C++” & “More Effective C++”
【47】 “C++编程艺术 ”(The Art of C++ )
【48】 “Java 编程思想:第3版”( Thinking in Java, Third Edition)
【49】 “Effective Java”
七、 软件测试
【50】 “测试驱动开发(中文版)”(Test-driven development:by example )
【51】 “面向对象系统的测试”(Testing Object-Oriented System: Models, Patterns, and Tools)
【52】 “单元测试之道Java版 —— 使用Junit”/ “单元测试之道C#版——使用NUnit” (Pragmatic Unit Testing:In Java with JUnit / Pragmatic Unit Testing:In C# with NUnit )
八、 软件维护和重构
【53】 “重构-改善既有代码的设计”(Refactoring: Improving the Design of Existing Code)
九、 配置管理和版本控制
【54】 “版本控制之道 —— 使用CVS”(程序员修炼三部曲第一部:Pragmatic Version Control Using CVS)
十、 领域专题(网络、平台、数据库相关) 99
【55】 “TCP/IP详解”( TCP/IP Illustracted)
【56】 “Unix网络编程”(UNIX Network Programming)
【57】 “UNIX环境高级编程”(Advanced Programming in the UNIX Environment) 102
【58】 “UNIX 编程艺术”(The Art of Unix Programming)
【59】 “数据访问模式 —— 面向对象应用中的数据库交互”
Linux学习交流群:754207286
快速上手Linux视频资料
http://www.makeru.com.cn/live/1392_197.html?s=45051
新手学习Linux之快速上手分析的更多相关文章
- 如何比较Keras, TensorLayer, TFLearn ?——如果只是想玩玩深度学习,想快速上手 -- Keras 如果工作中需要解决内部问题,想快速见效果 -- TFLearn 或者 Tensorlayer 如果正式发布的产品和业务,自己设计网络模型,需要持续开发和维护 -- Tensorlayer
转自:https://www.zhihu.com/question/50030898/answer/235137938 如何比较Keras, TensorLayer, TFLearn ? 这三个库主要 ...
- 【学习总结】快速上手Linux玩转典型应用-第7章-WebServer安装和配置讲解
课程目录链接 快速上手Linux玩转典型应用-目录 目录 1. Apache的安装 2. Apache的虚拟主机配置及伪静态操作 3. Nginx的基本操作 4. Nginx伪静态的实现 5. 实例演 ...
- 【学习总结】快速上手Linux玩转典型应用-第6章-linux常用命令讲解
课程目录链接 快速上手Linux玩转典型应用-目录 目录 1. 软件操作命令 2. 服务器硬件资源信息 3. 文件操作命令 4. Linux文本编辑神器vim与其他常用命令 5. 系统用户操作命令 6 ...
- 【学习总结】快速上手Linux玩转典型应用-第5章-远程连接SSH专题
课程目录链接 快速上手Linux玩转典型应用-目录 目录 1. 认识SSH 2. 服务器安装SSH服务 3. 客户端安装SSH工具 4. 客户端链接SSH服务 5. SSH config 6. SSH ...
- 【学习总结】快速上手Linux玩转典型应用-第4章-准备工作
课程目录链接 快速上手Linux玩转典型应用-目录 目录 1. 准备工作一 2. 准备工作二 ===================================================== ...
- 【学习总结】快速上手Linux玩转典型应用-第3章-CentOS的安装
课程目录链接 快速上手Linux玩转典型应用-目录 目录 1. 虚拟机是什么 2. 在虚拟机中安装CentOS 3. 云服务器介绍 ================================== ...
- 【学习总结】快速上手Linux玩转典型应用-第2章-linux简介
课程目录链接 快速上手Linux玩转典型应用-目录 目录 1. 什么是Linux 2. Linux能够做什么事情 3. Linux的学习方法 4. 忘掉Windows的所有东西 1. 什么是Linux ...
- 【学习总结】快速上手Linux玩转典型应用-第1章-课程介绍
课程目录链接 快速上手Linux玩转典型应用-目录 1. Linux有什么用 2. 课程安排 3. 课程收获 基本运维能力,等等 END
- 【学习总结】快速上手Linux玩转典型应用-目录
内容链接 慕课网:快速上手Linux玩转典型应用 目录 第1章-课程介绍 第2章-linux简介 第3章-CentOS的安装 第4章-准备工作 第5章-远程连接SSH专题 第6章-linux常用命令讲 ...
随机推荐
- centos7 安装curl-7.51.0
curl简介curl是一个广泛使用的用来上传和下载的命令行工具,当然严格来讲,它还可以有别的用途.对于测试来讲,它是Web相关测试非常实用的工具,包括debugging,使用起来非常方便.而且另一方面 ...
- Python 能做什么?
Python 能做什么? Python具有简单.易学.免费.开源.可移植.可扩展.可嵌入.面向对象等优点,我所关注的是网络爬虫方面,2018即将到来,我准备步入python的世界. Hello,wor ...
- IPv6地址分类及表示方法
对于IPv4地址,我们知道分为A类.B类.C类.组播地址和留用地址,几大类,ABC类地址中还会有不同功能的如广播地址.私有地址等类型.那么IPv6的地址是怎么分类的呢?本文就带大家初步了解一下. 先说 ...
- Django Http请求生命周期
day54 请求响应Http 1.发送Http请求 2.服务器接收,根据请求头中的的url在路由关系表中进行匹配(从上到下) 3.匹配成功后,执行指定的views函数 4.业务处理 URL----&g ...
- MySQL和Mongodb的区别与应用场景对比
MySQL是关系型数据库 优势: 在不同的引擎上有不同 的存储方式. 查询语句是使用传统的sql语句,拥有较为成熟的体系,成熟度很高. 开源数据库的份额在不断增加,mysql的份额页在持续增长. 缺点 ...
- Android 架构:Android Jetpack 架构组件的学习和分析
参考:https://mp.weixin.qq.com/s/n-AzV7Ke8wxVhmC6ruUIUA 参考:https://jekton.github.io/2018/06/30/android- ...
- Analyzing the Go runtime scheduler from source code perspective
http://www.cs.columbia.edu/~aho/cs6998/reports/12-12-11_DeshpandeSponslerWeiss_GO.pdf http://www.cs. ...
- [HDFS Manual] CH1 HDFS体系结构
v\:* {behavior:url(#default#VML);} o\:* {behavior:url(#default#VML);} w\:* {behavior:url(#default#VM ...
- [C++]Qt 如何处理密集型耗时的事情(频繁调用QApplication::processEvents)
https://www.cnblogs.com/senior-engineer/p/5598133.html https://www.cnblogs.com/findumars/p/5607683.h ...
- 搭建hbase1.2.5完全分布式集群
简介 有一段时间,没写博客了,因为公司开发分布式调用链追踪系统,用到hbase,在这里记录一下搭建过程 1.集群如下: ip 主机名 角色 192.168.6.130 node1.jacky.com ...