为什么有Linux
计算机背景
为什么人能成为万物之长是因为人会制造和利用工具。那么人为什么会制造工具?在远古时期时时为了对抗自然,为了在恶劣的环境下生存下来,而现在,人制造工具是为了在人和人的对抗中取得胜利。
在1946年2月14日,二战结束不久后的美苏冷战时因为存在国家和国家之间的对抗,美国为了在军备竞赛中取得胜利,开始广招人才成立研究机构发展新技术,此时计算机作为一种计算导弹弹道轨迹的工具被发明。我们知道,研究技术是需要金钱的,那么军方如何赚钱呢?一方面是通过税收获取的,另一方面就是将新技术商业化。因为计算机的商业化,就产生了我们熟知的企业如IBM,微软,苹果等。最初的计算机价格昂贵因此个体是无法承担使用费用的,所以大部分公司都将客户团体瞄准企业,IBM很快就推出了企业级计算机。这个时期的计算机是没有操作系统的,更别提图形化界面了(后来为了方便数据的输入,才给电脑加装了键盘)。施乐公司为了提高使用者的体验就决定开发图形化界面,好巧不巧,乔布斯拜访过施乐的图形化界面实验室以后表面若无其事,内心(你小子有点东西)。随后苹果就开始开发图形化界面,随后就推出了第一款mac电脑,因为图形化界面的原因引起了空前的反响。
附图(施乐图形化界面和第一台mac电脑)
在苹果推出第一台mac以后,比尔盖茨也发现了图形化的商机,于是也开始组建自己的图形化团队。但微软是一家搞软件的公司,就需要找一个搞硬件的合作,最初找到了IBM但他们两家公司理念 不合(比尔盖茨认为随着时代的发展以后每个人都有机会使用计算机,而IBM认为只有企业才能用的起计算机),最后只能分道扬镳。随后微软就找到英特尔(Intel)合作,他们两家公司捣鼓出来的电脑相对其他公司更加的便宜而且东西并不差,随后就开始掀起了电脑热潮,产生了今天我们熟知的华硕,宏碁,联想,戴尔等,而Windows操作系统和英特尔的硬件也开始风靡电脑界。
Linux的产生
最初的计算机是没有操作系统的,后来为了提高计算资源的使用效率减少空闲时间提出了单道批处理系统,到了20世纪60年代,随着小规模集成电路的发展,出现了多道批操作系统。1970年肯.汤姆森使用汇编语言创造了UNIX操作系统,这个操作系统得到了广泛的使用。后来C语言之父丹尼斯.里奇又和肯.汤姆森合作使用C语言改编了UNIX操作系统并将其捐赠给了各大高校,当然也有用户购买UNIX进行学术研究。
附图(肯.汤姆森和丹尼斯.里奇)
芬兰的赫尔辛基大学也是受捐赠的一所高校,随后此学校迎来了一个非常有能力的学生,叫林纳斯·本纳第克特·托瓦兹也就是Linux的创造者。这个大佬在使用了搭载UNIX操作系统的电脑后,觉得这个东西好是好但是要收费。因为大家都喜欢免费的,因此这个大佬就决定搞一个免费的操作系统,于是仿照UNIX的交互模式创造了一个叫Linux的操作系统。为了装逼(狗头),于是将这个操作系统的源码公诸于世,也就是所谓的开源。
附图(林纳斯·本纳第克特·托瓦兹)
Linux是一种自由和开放源代码的类UNIX操作系统,该操作系统是在1991年首次发布,之后再加上用户空间的应用程序就成了Linux操作系统。严格来说,Linux只是表达操作系统内核本身,但这个概念通常用“Linux内核”来表示。而Linux通常用于表示基于Linux内核的完整操作系统,包括GUI组件和其他试用工具。
开源
GNU通用公共许可协议,是一个广泛被使用的自由软件许可协议条款,最初由理查德斯托曼为GNU计划撰写的,其给予了计算机程序自由软件的定义。Linux是自由软件和开放源代码软件中最著名的例子。只要遵循GNU通用公共许可证,任何个人和企业都可以使用Linux的所有底层源代码,也可以自由地修改和再发布。
开源的好处:开源的所有底层代码都可以被所有人看到,因此会有大量的大佬来指正代码中出现的问题,bug也会被更好的改正。而企业清楚了底层的代码也就不用担心该系统在内部偷偷窃取信息。
总结:开源的代码更安全,更稳定,更有效率。
为什么要学习Linux
1.随着开源软件在世界范围内影响力与日俱增,Linux服务器操作系统在整个服务器操作系统中占据了越来越多的市场份额。
2.近年来尤其是在国内市场,Linux桌面操作发展的非常迅猛。国内如中标麒麟Linux,红旗Linux,深度Linux等系统软件厂商都推出了Linux桌面操作系统,目前已经在政府,企业,OEM领域得到了广泛的使用。
3.Linux具有低成本,强大的定制功能以及移植性能良好的特点。Linux在嵌入式系统方面得到广泛的应用。在移动设备上广泛使用的Android就是创建在Linux内核之上的。
4.在云计算,大数据快速发展的时代,Linux已经逐渐取代UNIX成为最受青睐的云计算,大数据平台操作系统。
ps:大家学习的目标主要是为了薪资,前面提到Linux作为开源的操作系统,其安全性强,因此许多企业的操作系统也是选用的Linux,Linux成为了越来越多企业的必考项目。
Linux的发行版本
Debian
Debian运行起来极其稳定,这使得它非常适合用于服务器。 debian这款操作系统无疑并不适合新手用户,而是适合系统管理员和高级用户。
Ubuntu
Ubuntu是Debian的一款衍生版,也是当今最受欢迎的免费操作系统。Ubuntu侧重于它在这个市场的应用,在服务器、云计算、甚至一些运行Ubuntu Linux的移动设备上很常见。Ubuntu是新手用户肯定爱不释手的一款操作系统。
红帽企业级Linux
这是第一款面向商业市场的Linux发行版。它有服务器版本,支持众多处理器架构,包括x86和x86_64。红帽公司通过课程红帽认证系统管理员/红帽认证工程师(RHCSA/RHCE),对系统管理员进行培训和认证。
CentOS
CentOS是一款企业级Linux发行版,它使用红帽企业级Linux中的免费源代码重新构建而成。这款重构版完全去掉了注册商标以及Binary程序包方面一个非常细微的变化。有些人不想支付一大笔钱,又能领略红帽企业级Linux;对他们来说,CentOS值得一试。此外,CentOS的外观和行为似乎与母发行版红帽企业级Linux如出一辙。 CentOS使用YUM来管理软件包。
Fedora
小巧的Fedora适合那些人:想尝试最先进的技术,等不及程序的稳定版出来。其实,Fedora就是红帽公司的一个测试平台;产品在成为企业级发行版之前,在该平台上进行开发和测试。Fedora是一款非常好的发行版,有庞大的用户论坛,软件库中还有为数不少的软件包。
Kali Linux
Kali Linux是Debian的一款衍生版。Kali旨在用于渗透测试。Kali的前身是Backtrack。用于Debian的所有Binary软件包都可以安装到Kali Linux上,而Kali的魅力或威力就来自于此。此外,支持Debian的用户论坛为Kali加分不少。Kali随带许多的渗透测试工具,无论是Wifi、数据库还是其他任何工具,都设计成立马可以使用。Kali使用APT来管理软件包。毫无疑问Kail Linux是一款渗透测试工具,或者是文明黑客青睐的操作系统。
Linux环境安装
- 直接安装在物理机上. 但是由于 Linux 桌面使用起来非常不友好, 不推荐.
- 使用虚拟机软件, 将 Linux 搭建在虚拟机上. 但是由于当前的虚拟机软件(如 VMWare 之类的)存在一些 bug , 会
导致环境上出现各种莫名其妙的问题, 比较折腾.- 使用云服务器, 可以直接在 腾讯云, 阿里云或华为云 等服务器厂商处直接购买一个云服务器.
对于环境的安装,我使用的云服务器,链接工具是Xshell的组合。云服务器虽然需要钱购买,但是对于学生,各大厂商都是有学生优惠的。并且云服务器的使用不像前几个那样比较复杂,更容易上手。
Linux的基本指令
了解了Linux的历史和环境选择后,我们就可以开始学习Linux了。前面提到云服务器的购买是需要钱的,如果觉得云服务器的价格昂贵,没必要一个人购买,可以几个人合伙购买,因为Linux是多用户操作系统,可以同时多人使用。(其实Windows也是多用户操作系统,所以也是可以有多个桌面的,毕竟本质上桌面也就是一个文件夹)。
添加删除用户
添加新用户
Linux是多用户操作系统,但只有root用户是最高权限者,也就是说只有root用户才能添加和删除用户。
这里有个bad password只是因为我设置的密码太过简单,但这并不影响我回车确定,到这里这个新用户就新建成功了,然后我们可以用新用户star登录
输入用户名star
再输入star的密码,随后就可以看到登录进来的用户就变成star了
然后你就可以拿着新建的用户去叫卖了,窝窝头一块钱四个(bushi)。但是假如你们说好了,后来小伙伴耍赖不给钱,你不想给他完了,那怎么办?当然是删除该用户了。
删除用户
总结:添加用户:adduser+用户名,然后为用户设置密码:passwd+用户名,到这里一个新用户就新建成功了。
删除用户:userdel+用户名
提示:只有root用户可以新建和删除用户,因为root用户是最高权限用户。
这是我们在Linux操作系统上完成的第一个指令。前面已经说了那么多,不知是否有人疑问文中一直提到的操作系统是什么,所谓的写指令又是在干什么?
什么是操作系统
相对于Linux,我们了解更多的操作系统应该是Windows,日常我们使用的电脑安装的也都是Windows。操作系统当让不止Linux和Windows,包括安卓和iOS其实也都是操作系统。首先看一张分层图:
硬件
当我们谈论计算机时,我们更多的谈论的其实是计算机的硬件,我们能摸得着的其实都叫做硬件,比如显示器,键盘等。当然硬件也包括我们一般情况摸不着的CPU,内存,硬盘等。这些硬件的运行,是需要有驱动的。
驱动
驱动程序全称设备驱动程序,在电脑的设备管理器中可以查看到。这是一种添加到操作系统中的特殊程序,其中包含有关硬件设备的信息,此信息能够使计算机与相应的设备进行通信。如果没有设备驱动程序,硬件就无法正常工作。倘若你要更换你电脑的网卡,就必须要提前准备好该网卡的设备驱动程序,否则装上之后无法进行WIFI链接。每个硬件都有自己的驱动程序,既然说了是程序,那么驱动其实也是一种软件,这款软件专门用于与底层硬件交互。
应用软件
现在已经过了手扣二极管的时代,我们平常使用电脑时,更多的是使用应用软件,比如qq,微信,网易云等。这些应用软件满足了用户 的不同需求。但是不论是什么应用软件,全都是操作系统之上安装的。
操作系统
我们已经知道操作系统在驱动之上,应用软件之下,那么操作系统到底是干什么的?其实操作系统是一款管理软件,用于控制软硬件。对下管理好硬件资源(手段),对上提供良好的(稳定的,安全的,高效的)运行环境(目的)。操作系统控制硬件并不是直接访问硬件,而是通过访问驱动程序来控制硬件。一款优秀的操作系统,是设备运行的根本,你也不想一把游戏电脑重启两三次再黑屏好几次把。
如果你对于软件可以管理软硬件有不理解的,这里有一个例子。比如你在家时,你的爸妈不但可以把家里收拾的井井有条,控制冰箱,电视等工作,还可以把你收拾的井井有条,督促你写作业(狗头)。
指令是在做什么
我们在Linux下敲指令是在干什么呢?其实等同于在Windows下学习基本操作,如双击单击,新建文件夹等。只不过Windows是图形化界面,而Linux是命令行。但两者之间其实没有任何区别,图形化界面只是包括了一层交互软件层,二者底层实现是一样的(一模一样哦)。对于没有图形化界面的Linux,命令行就是我们学习Linux的手段。我们知道,计算机最初是用于计算弹道轨迹的也没有图形化界面,所以键盘先产生。那么同样的当然是命令行先产生,后来才有了图形化。
介绍完操作系统的概念,接下来也是要正式开始学习Linux的指令了。
ls指令
语法: ls [ 选项 ] [ 目录或文件 ]
**功能:**对于目录,该命令列出该目录下的所有子目录与文件。对于文件,将列出文件名以及其他信息
输入ls指令后,显示了我当前路径下的所有文件。
常用选项
-a 列出目录下的所有文件,包括以 . 开头的隐含文件。
-d 将目录象文件一样显示,而不是显示其下的文件。 如: ls –d 指定目录
-i 输出文件的 i 节点的索引信息。 如 ls –ai 指定文件
-k 以 k 字节的形式表示文件的大小。 ls –alk 指定文件
-l 列出文件的详细信息。
-n 用数字的 UID,GID 代替名称。 (介绍 UID, GID)
-F 在每个文件名后附上一个字符以说明该文件的类型, “*”表示可执行的普通文件; “/”表示目录; “@”表示符号链接; “|”表示FIFOs; “=”表示套接字(sockets)。(目录类型识别)
-r 对目录反向排序。
-t 以时间排序。
-s 在l文件名后输出该文件的大小。(大小排序,如何找到目录下最大的文件)
-R 列出所有子目录下的文件。 (递归)
-1 一行只输出一个文件。
这里说明一下ls-a中提到的隐藏文件,其实不只是Linux有隐藏文件,Windows同样有隐藏文件。
那么如何创建隐藏文件呢?在Linux下,只要开头带"."的就会默认为隐藏文件,比如:
再输入ls-a指令,发现可以看到“.1.9.txt”文件。这就是说的-a选项可以显示包括隐藏文件在内的所有文件。