作为一名软件工程学生想要自学Linux,可以从哪方面开始学习?

邵兴旺


对于Linux应用的学习,主要有六部分:1. 环境搭建;2. 基本操作;3. 系统编程;4. 网络编程;5. 数据库编程,6. Shell编程。下面一一详细介绍。

1. 环境搭建

作为Linux工程师,毋庸置疑一定需要Linux环境。对于Linux环境的获取,我们通常有两种方式: 将电脑整体安装为Linux系统; 在电脑里安装一个虚拟机,跑Linux电脑; Window+Linux双系统。 得到Linux环境后还不够,还要知道如何配置、如何远程连接Linux电脑、如何与Linux电脑互传文件、如何在主机上阅读Linux电脑中的代码,等等。

2. 基本操作

众所周知,Linux很少或几乎没有界面,所有的操作几乎都可以通过命令行来完成。对于运维人员来说,需要掌握相当大量的Linux命令。而对于应用、驱动方向的人员来说,只需掌握一些基本的常用的命令即可。对于这部分很多人建议看 「鸟哥的私房菜」 ,但我觉得这个更适合运维人员,我们无需掌握那么多命令。

3. 系统编程

在学系统编程之前,一定要先学习Makefile,这会为后续的学习提高很大效率。之后的系统编程,主要有几大块:IO编程、进程、线程、进程间通讯(包括管道、信号、信号量、共享内存等)。这几部分学完了,基本也就差不多了。

4. 网络编程

网络编程主要就是socket,poll,epoll,以及对TCP/IP的理解,同时要学会高并发式服务器的编写。

5. 数据库编程

数据库的内容其实并不属于Linux,但在项目中经常要用到。这部分主要要学会数据库的基本操作,以及如何写一套接口去操作数据库。

6. Shell编程

Shell是Linux下的脚本语言,功能虽然不如高级语言强大,但它可能做很多事,在某些场合甚至比高级语言要方便得多。当然除了Shell脚本,还有Python脚本。

Linux应用编程书籍推荐:

UNIX环境高级编程。

简称APUE,号称程序员的圣经。它不是一本API字典,它还讲述了很多操作系统的细节,内存,文件系统等方面,是一本难得的好书。但是它起点有点高,不适合初学者。

Linux程序设计。

如果觉得APUE有点难入门的话,可以选择此书进行入门。

Unix/Linux系统编程手册。

这本书号称是一本超越APUE的书,它是一本比较新的书,里面新增了APUE所没有的Linux/Unix新特性。而且对于一些概念性的东西讲的确实比APUE好。但至于能否超载APUE,还有待历史的考验。

UNIX 网络编程。

也是一本非常经典的书,主要是网络编程方向的。 MySQL必知必会。本书在Amazon上长期排在数据库销售榜首,建议想快速了解数据库原理和MySQL的新手阅读。快餐性质,简洁明快,小开本,而且很薄,比较好阅读。

Linux Shell脚本攻略。

这本书很薄很精华,它追求的不是全,而是精,所以用它来入门再适合不过了。

学完以上六部分,基本就有能力完成Linux环境下的应用编程了。


良许Linux


自学Linux可以从三个步骤入手学习

1.选择一门合适学习书籍

鸟哥的私房菜

很多linux初学者的首选书籍,linux学习先从基础的命令行入手,常用的命令大约20个,然后慢慢切入学习

常见命令:

2.安装一个linux系统

目前开发主要用的是deb系,ubuntu现在作为桌面版选择用的比较多,这个就要看个人喜好了


3.书本和系统都安装好了之后就可以进入学习阶段,这涉及到在linux操作系统上玩什么编程语言

通常而言除了windows自带的编程系列语言,别的编程语言都可以玩,目前主流的编程语言C语言,C++,java,python,php等等都可以在这玩。

在这就不一一罗列,现在就如何在ubuntu下面编译第一个C语言程序的过程简单介绍下

(1)安装编译环境

apt-get install vim

apt-get install gcc

(2)用vim或者gedit编译第一个hello world 语言

(3)编译执行

gcc -o hello hello.c

./hello

Hello, Linux

现在只是针对C语言做了一个简单的范例,可以根据自己的爱好尝试别的编程语言。

找到自己想学的编程语言,然后全力以赴去学习。


大学生编程指南


作为一名linux曾经的学习以及现在的使用者,这个话题我觉得很有必要来回答。

想想第一次接触学习Linux是四年前的事情了,时间过得好快啊!下面结合我自己学习linux的经历分享一下如何从0到1。

1.安装一个linux系统。

你可以选择在自己的实体电脑中安装双系统,注意安装某些配置文件时一定要安装好,不然你的系统要GG了。当然我推荐在VMware workstation或者virtual box虚拟机中安装,比较方便,可以安装很多系统,不过电脑内存至少有8G。就系统来说一般是centos、Ubuntu、Redhat在服务器中使用较多。个人比较喜欢centos,Linux各个版本的系统中的命令差不多,学一个就好,在安装系统的过程中你可以了解一下分盘、挂载数据盘等的知识。当然你也可以学学Kali,做个黑客也不错。顺手打开虚拟机一看,发现我的里面还有KALI,前面做安全攻防用过。

2.Linux基本命令学习

Linux学习最重要的是命令的学习。你可以安装桌面版的系统,Linux系统可以直接从桌面版切换到黑窗模式,也可以在桌面版的终端进行命令操作。

2.1图书学习

图书学习的话我推荐鸟哥的私房菜,鸟哥的私房菜应该将很多同仁引领到了Linux学习的道路中。里面对Linux的命令讲的比较详细,你是做软开的话,只需要了解基础的linux操作命令即可,例如cd、ls、netstat、chmod、pwd、vi、find、cp、mv、防火墙、rm -rf /*(非常重要以及好用的命令)。刚好我这有两本差点被我扔掉的9成新私房菜,见下图:

2.2视频学习

如果是要看视频学习的话,如果我没记错,你可以找找马哥的linux视频,我一朋友给我推荐的,他现在在思科,膜大佬。

下面是阿铭讲的linux视频,不过是我15年跟他要的,可以看一下。

https://pan.baidu.com/s/1os0WMhf91nRwB3ixDors1Q

3.手动配置开发环境

学习好基础的Linux命令后,需要检验学习成果,那么你需要配置开发环境。一定要亲自手动配置好一个一个模块。比如PHP开发需要配置lnmpa——Linux+nginx+mysql+php+apache。记住一定要手动利用源码进行编译安装,虽然这个配置过程会非常的艰辛,你可能会遇到很多问题,但是你可以学到很多知识,切记第一次不要用一键安装包进行安装。java开发环境的话需要你配置jdk、Tomcat等等,可能你开发过程中会用到redis,值得一学(切记配置redis不要选择默认配置,容易被黑,伤心的过去)


4.学习shell或者python脚本

因为你在以后的工作中很可能需要写一些脚本用于定时执行,前期学好后期不愁,别问我为什么。如果你以后选择做运维工程师,那么你肯定需要写脚本简化运维工作。

5.撸代码搞开发

前面四条你学好了,那么你可以在此基础上搞开发,比如未来测验PHP环境是否搭好,可以写个简单的留言板,即使默认页面已经能够正常运行。或者用Java写个项目放到服务器或者虚拟机中,都是不错的选择。

总而言之言而总之,Linux学习需要多实践,多敲命令,一不敲命令很容易忘记。

我是萌新程序猿,科技圈的事情欢迎邀请我来回答!

码了这么多字,点个赞关注下再走吧!!!

关注萌新程序猿(本人咯),跟小编一起从菜鸟成为大佬,了解更多IT以及程序猿的知识!!


萌新程序猿


Linux职业的方向大概有两个:

Linux的网络、系统,服务应用方向如:Linux鸟哥私房菜

Linux下软件开发方向


下面我们来详细的说:


Linux的系统、网络、服务、网站,集群,Oracle数据库应用方向:

1.数据库服务器如Oracle Sybase

2.Mail应用服务器如163或者外企mail系统等

3.web应用服务器如 sina baidu 大型网站

4.中间件或者J2EE服务器,如JBOSS Weblogic等等

5.网络应用等


嵌入式开发、UNIX/Linux应用系统开发,Linux内核驱动开发方向,主要有一下几类:

1.Linux下面的C/C++程序开发。建议看:《Linux程序开发》

2.Linux平台java体系开发。 建议看:《java编程思想》

3.Linux下的图形界面开发。 建议看:《Gtk+程序设计:C语言版/Syd Logan》

4.Linux底层内核/驱动开发 建议看:《Linux设备驱动程序(第三版)》

5.嵌入式Linux开发等 建议看:《arm嵌入式系统开发-软件设计与优化》

《嵌入式linux应用开发完全手册》

楼主问的是要从哪方面学习,你可以参考以上几点,看看你希望从哪方面学习,再决定买相关书籍。以上介绍了学科和相关书籍。下面给大家具体介绍一下有关Linux的基本步骤,我们先说初级阶段。

初级阶段:

1.Linux常用的命令大概是80个左右,这些常用的一定要掌握,而且要熟练。

2.下面就要掌握linux软件包的常用安装方法,例如源码安装,rpm安装方式等等。

3.学习安装设备驱动程序,就比如是网卡、显卡驱动等

4.熟悉Grub/lilo引导程序以及简单的修复操作。

5.熟悉Linux文件系统和目录结构,以及linux的运行的基本原理。

6.vi,gcc,gdb等常用编辑器,编译器,调试器。

7.理解shell的别名、管道、l/O重定向、输入和输出以及shell简单脚本编程。

8.学习Linux环境下的网络基本组建


其实还应该有高级阶段的,但不知道各位需要吗。在这里说一下

1:尝试阅读linux内核源码:

因为C/C++是linux/unix的核心语言,系统代码都是C写的(回答结束后附送C语言学习路径)

2.尝试编译安装和调试自己的linux内核:

可以阅读源码了解一下linux的底层运行原理,然后编译出一个适合自己的linux系统;

3.深入学习shell,perl,cgi等脚本语言:

这些脚本的语言在linux下面是很强的,熟练掌握这些语言可以完成很多你想要做的事。

4.构建企业级linux高可用集群系统:

linux下有很多开源免费的集群软件的,利用这些免费的集群可以构建出与商业unix的系统可以去比较的集群系统。

下面附送大家C语言的学习线路图,希望大家多多关注本账号,会给大家提供更丰富更有效的问答和文章。


传智播客


Linux如何自学,我这里整理了6大模块。分别是:

Linux的介绍和安装Linux的常用命令Linux环境的基本配置Linux上常用的软件安装Linux高级命令shell编程
准确的说这只是,我们在学习Linux中最基础的一些知识点,也是最关键的东西。

我这里有些笔记可以分享给你,这里是四天的笔记,我们从右往左看,由浅入深,如果这些东西够你学习一段时间,看完之后,我相信你也知道你的下一步目标是什么了。

除了文档的资源,我这里还有我们学习的视频,基础学习。

还有一些整理的文档,也可以分享给你想学习的你。下面这些主要是教我们如何搭建服务器,还有一个简单的实例。这些就是我自己在学习中看到的和整理的文章资源,你也可以看我的头条文章,里面也有对Linux的详细介绍。希望能帮助到您。

获取方式

1.首先右上角点击【关注】,关注我的头条号~

2、个人主页关注上面私信我:Linux

如果觉得资源不错,请给个好评,谢谢各位了,来个转发、收藏哦!

感谢坚持关注的朋友~

世界很大,幸好有你~

欢迎在评论区留下你的问题或困惑,我将每天与你分享我的观点和心得。

聚焦最新科技咨讯,探寻未来智能领域,我是女陶Mario


码里行间


题主想自学的话,可以在网上搜索一些相关的教程,或者找前辈带着学。自学会比较枯燥和痛苦,有问题的话没有人沟通。所以条件允许的话,可以报班学习,或者有了一点基础以后,进入相关的公司实习。有实际的项目工作经验会成长很快。