本文主要是介绍【Linux入门】Linux简史,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
Linux 是什么?Linux 是一款叫做操作系统的软件。
操作系统这款软件有什么样的意义呢?简单来说,比如有顾客买了一台笔记本电脑,这台笔记本电脑由电脑硬件组成,在这堆硬件上一定搭载了一款操作系统。正因为操作系统存在,才有一个行为——开机,如果就笔记本电脑仅仅只有硬件,就不存在所谓的开机行为。所以操作系统可以说是计算机世界的一个基础。当下,操作系统不仅在笔记本电脑中存在(例如windows),也在手机中存在的(例如安卓或者是 ios)。
要认识一件事物,尤其是一件陌生的事物,离不开对事物始末的了解,这样才能更清楚的认识它。本篇博客整理了Linux的相关历史,结合少量的Linux指令,旨在让读者进一步认识Linux,对计算机世界有更宽泛的了解。
目录
一、Linux发展史
1.硅谷模式
2.行业故事
3.Linux问世
二、Linux的特征
1.基本特征
2.什么是操作系统
3.开源
4.现行版本
5.企业应用现状
三、Linux环境安装
引、基本指令
1.用户相关
· 用户登录:ssh
· 显示当前用户名:whoami
· 添加用户:adduer
· 给用户设置新密码:passwd
· 删除用户:userdel
2.文件的创建
· 创建空目录:mkdir
· 创建文件:touch
3.文件的显示
· 显示用户当前所在的目录:pwd
· 显示目录结构:tree
· 补、Linux下的目录结构
· 显示非隐藏文件:ls
4.文件的访问
· 访问目录:cd
· 补、绝对路径和相对路径
5.文件的删除
· 删除空目录:rmdir
· 删除文件:rm
6.一些快捷键
一、Linux发展史
1.硅谷模式
在1946年2月14日的情人节,美国发布了世界第一台通用计算机(也是世界第二台电子计算机)——埃尼阿克(ENIAC)。这款计算机,主要用于军事,用于计算导弹轨迹等。但早期的硬件电路和集成电路的集成度较低,埃尼阿克的体积非常巨大,操作成本很高。
埃尼阿克发布的时间点——1946年2月14日在历史上十分特别。彼时,国际上的主要矛盾变成了美苏冷战。国家和国家之间的竞争,会促使技术的不断突破,例如航天领域的阿波罗登月计划、军械领域的核武器等等。作为军事设备,埃尼阿克也急迫地渴望迭代更新,于是,计算机小型化,也在紧锣密鼓地进行着。
摩尔定律为计算机小型化提供了理论依据。摩尔定律是指,一个集成电路的集成度每15个月或者18个月会增加一倍,性能也会增加一倍。而集成度每隔多长时间增加一倍,这件事本身不重要,重要的是集成度一旦增加一倍,变得越来越高,就可以在以往相同体积的情况下获得比以往更高的算力。
早期,政府单位在技术领域上并不擅长,但为了推动技术进步,政府选择了与研究机构和高校合作。战争往往不计成本,军事上的技术研究往往能获得政府的大量资源支持。政府投入源源不断的资源,不仅仅要推动一项技术的发展,还要推动全方位的各种各样的技术发展,所以政府方面往往要求这项技术是可持续发展的。比方说,当下需要更好的无线电技术支援情报工作,就得给负责无线电技术的团队提供资金;当下需要升级坦克的武装力量,就得给负责坦克的团队提供资金,当下要研究计算机,就计算机团队提供资金......现在资金都花掉了,技术团队都得到了充分的资助,可政府的钱越来越少了,接下来要怎么给新增的项目提供资金呢?
上个世纪,美国商人陆续发现了政府的这个需求。当研究机构和高校研究出了各种技术,有新的发明专利,有新的技术,就有商人就开始出售这些新专利和新技术,最著名的例如乔布斯、比尔盖茨等。而政府通过税收的方式,来进行资金的回流,继续支持技术的发展。
商人、技术人员和政府之间联合起来,孵化出一批一批新的产品。随着技术的不断发展和需求的不断扩大,这些产品不再像从前只提供给政府,也渐渐面向了平民。例如苹果公司,做出了它们的第一代桌面级计算机,彼时标价一万美金。上个世纪六七十年代的一万美金,相当于现在的上千万美金,尽管这个标价十分高昂,非普通人所能担负,但它标志着技术发展的又一个突破,也预示着普通人能够消费的计算机会在未来某一天问世。
像商人、技术人员和政府之间这样一种不断推动科学技术发展的循环模式,被称为硅谷模式。而小型计算机和操作系统,就在这个模式之下陆续问世了。
2.行业故事
随着芯片的集成度越来越高,计算机也越来越小型化。但彼时的计算机,即便再怎么小型化也难以使用。
为了将计算机硬件技术进行商业化,有一家IBM的公司,孵化出了给企业使用的计算机产品,上面搭载了一款名为unix的操作系统。研究机构和高校,也可以简单理解成企业,在从事相关业务和完成相关工作。计算机本来就可以计算数据,研究机构和高校的各种实验室需要做各种实验,正好为计算机提供了用武之地。早期的IBM看中了这个市场,打造了各种各样的硬件产品(其实九十年代的时候,IBM也有自己的个人电脑业务——thinkpad,但这个品牌后来被联想收购了)。
彼时还有一家公司既有硬件业务,也有软件业务。这家公司叫做苹果,它自研了一款名为macOS的操作系统。苹果与IBM的理念不同,IBM认为计算机将来只能是那些有足够财力的企业来使用,而苹果认为个人计算机是一个未来趋势。苹果的电脑刚开始出来的时候虽然价格很贵,但产品做得很好,也卖得很好,有不少人会买来尝鲜。
还有一家公司主要做软件,叫微软。说是主要做软件,其实微软主要做的是windows操作系统。但微软比较担心,既有硬件也有软件的苹果发展得太好,万一苹果的电脑在将来卖得特别特别好,而苹果的电脑上又不搭载它的操作系统(因为苹果自己也做软件,也做操作系统),那它的市场份额很可能会越来越少。
于是为了跟苹果对抗,微软就找了一个合伙人,而这个合伙人就是IBM。但IBM和微软还没过完蜜月期啊,两家公司就因为啊理念不符而分道扬镳了。IBM认为电脑的造价很高,将来只能是那些有足够财力的企业来使用,普通人根本别想用得起;但微软不那么认为,而且在微软公司内部一直流传着一个口号“一定会将来在每一个人的桌面上放着,上面搭载的是 windows 操作系统”。
后来,微软又找了一个合伙人,这个合伙人叫英特尔,是一家做芯片的公司。微软和英特尔,虽然把握着计算机最核心的两种技术,但它们的业务本身不涉及组成计算机的其他部件,于是它们又拉来了一大批电脑的制造商和组装商,例如联想、戴尔等。至此,提供操作系统的微软,提供芯片的英特尔,再加之电脑的制造商和组装商,终于使不带有苹果logo的电脑问世了。
尽管这样生产出来的一台电脑生产成本更低、标价比苹果电脑更亲民,性价比很高,但它的品控却很难做。这是因为这样一台“大杂烩”电脑得由不同的公司负责,尽管每一家公司都能专注做自己擅长的事情(这样很容易控制成本),但最后要把各自负责的业务模块合起来,品控就难办了。不过,也因为苹果电脑的质量高的同时价格昂贵,这种性价比电脑有了不错的市场空间。
这也促成了当今笔记本电脑和台式电脑的市场格局。现在的电脑只要装的是windows操作系统,那它搭载的一定是英特尔的cpu。IBM呢,逐渐没落,现在虽然算不上很差但也算不上很好。而苹果呢,因为产品做得很好,成为了全球市值最高的公司。
3.Linux问世
彼时,苹果电脑搭载了苹果自研的操作系统macOS,微软有自研的操作系统windows同时也找到了合作伙伴。而IBM的一体机搭载了一款收费的操作系统unix,并将自己的一体机提供给企业作服务器,或捐赠给研究机构和高校辅助其研究科学技术。
上个世纪九十年代,一名赫尔辛基大学的学生林纳斯·本纳第克特·托瓦兹(Linus Benedict Torvalds),在使用过搭载unix操作系统的电脑后突发奇想——开发一款免费操作系统可以免费让大家来用。他花了一段时间,独自一人写了一款代码量1.1万行左右的操作系统,取名为Linux(linux is not unix),并在1991年10月5日免费公开了Linux的源代码(这种行为叫做开源。但开源并不一定是免费的)。
Linux操作系统重要的特征就是开源。在Linux被林纳斯开源之后,越来越多的人参与到了Linux的完善工作中,很多顶级的黑客和出色的工程师,以及操作系统的编写者逐渐参与到这个项目中来,使Linux操作系统变得越来越大啊。截至目前,Linux的源代码的代码量有大概6000到8000万行左右了(Linux官网:The Linux Kernel Archives)。
二、Linux的特征
1.基本特征
Linux的基本特征:稳定、安全、快速、成本低。
2.什么是操作系统
操作系统是一款具有软硬件管理功能的软件,对下,它可以管理好软硬件资源,对上,它可以为用户提供良好的使用环境。一个操作系统是良好的,这一点的衡量指标应该是:稳定、快速、安全。
用户在计算机上的所有软件行为都会通过操作系统转化为硬件行为。所有软件,都自顶向下贯穿计算机的软硬件结构。换句话说,几乎所有的软件行为,都和操作系统有直接或间接的关系。
常见的操作系统有:
- Unix:一款闭源的操作系统
- Linux:一款开源的操作系统
- DOS:磁盘操作系统
- Windows:微软自研的操作系统
- MacOS:苹果自研的操作系统
3.开源
GNU通用公共许可协议(GNU General Public License,简称GNU GPL或GPL),是一个广泛被使用的自由软 件许可协议条款,最初由理查德斯托曼为GNU计划而撰写,GPL给予了计算机程序自由软件的定义, 任何基于GPL软件开发衍生的产品在发布时必须采用GPL许可证方式,且必须公开源代码。
Linux是自由软件和开放源代码软件发展中最著名的例子。只要遵循GNU通用公共许可证,任何个人和机构都可以自由地使用Linux的所有底层源代码,也可以自由地修改和再发布。随着Linux操作系统飞速发展,各种集成 在Linux上的开源软件和实用工具也得到了应用和普及,因此,Linux也成为了开源软件的代名词。
但注意,开源并不一定免费,开源的代码经过再次商业化即为付费版本。
4.现行版本
- 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来管理软件包。毫无疑问,Kali Linux是一款渗透测试工具,或者是文明黑客(我不想谈论恶意黑客)青睐的操作系统。
5.企业应用现状
- Linux在服务器领域的发展——随着开源软件在世界范围内影响力日益增强,Linux服务器操作系统在整个服务器操作系统市场格局中 占据了越来越多的市场份额,已经形成了大规模市场应用的局面。并且保持着快速的增长率。尤其在政 府、金融、农业、交通、电信等国家关键领域。此外,考虑到Linux的快速成长性以及国家相关政策的 扶持力度,Linux服务器产品一定能够冲击更大的服务器市场。据权威部门统计,目前Linux在服务器领域已经占据75%的市场份额,同时,Linux在服务器市场的迅速 崛起,已经引起全球IT产业的高度关注,并以强劲的势头成为服务器操作系统领域中的中坚力量。
- Linux在桌面领域的发展——近年来,特别在国内市场,Linux桌面操作系统的发展趋势非常迅猛。国内如中标麒麟Linux、红旗。Linux、深度Linux等系统软件厂商都推出的Linux桌面操作系统,目前已经在政府、企业、OEM等领域 得到了广泛应用。另外SUSE、Ubuntu也相继推出了基于Linux的桌面系统,特别是Ubuntu Linux,已 经积累了大量社区用户。但是,从系统的整体功能、性能来看,Linux桌面系统与Windows系列相比还 有一定的差距,主要表现在系统易用性、系统管理、软硬件兼容性、软件的丰富程度等方面。
- Linux在移动嵌入式领域的发展——Linux的低成本、强大的定制功能以及良好的移植性能,使得Linux在嵌入式系统方面也得到广泛应用, 目前Linux以广泛应用于手机、平板电脑、路由器、电视和电子游戏机等领域。在移动设备上广泛使用 的Android操作系统就是创建在Linux内核之上的。目前,Android已经成为全球最流行的智能手机操作 系统,据2015年权威部门最新统计,Android操作系统的全球市场份额已达84.6%。此外,思科在网络防火墙和路由器也使用了定制的Linux,阿里云也开发了一套基于Linux的操作系 统“YunOS”,可用于智能手机、平板电脑和网络电视;常见的数字视频录像机、舞台灯光控制系统等都 在逐渐采用定制版本的Linux来实现,而这一切均归功与Linux与开源的力量。
- Linux在云计算/大数据领域的发展——互联网产业的迅猛发展,促使云计算、大数据产业的形成并快速发展,云计算、大数据作为一个基于开 源软件的平台,Linux占据了核心优势;据Linux基金会的研究,86%的企业已经使用Linux操作系统进 行云计算、大数据平台的构建,目前,Linux已开始取代Unix成为最受青睐的云计算、大数据平台操作系统。
三、Linux环境安装
搭建Linux环境的常见方式有:虚拟机、云服务器、双系统。
这里推荐云服务器 + xshell(远程登录云服务器的软件)的方式。这种方式搭建Linux环境较为简单方便,同时,部署在云服务器上的项目可以直接被外网访问,这和公司实际的业务场景较为接近。
- xshell的下载链接:XSHELL - NetSarang Website
- 购买云服务器
市面上的服务器厂商有很多,如阿里云、腾讯云、华为云等。这里以腾讯云为例:
1. 进入官方网站学生云服务器_学生云主机_学生云数据库_云+校园特惠套餐 - 腾讯云
(有的优惠套餐学生党可以免费白嫖,可以试用几个月,也可以拼单凑伙使用,大家按自己的需要来~)
2.登录后点击购买,镜像一栏选择 CentOS 7.6(64位)
3.购买完成后, 可以在控制台中找到自己买的服务器,点进去能够看到服务器的 IP 地址
(蓝色方框为公网 ip 地址, 登陆服务器会用到它 )
4.设置 root 密码: 勾选服务器, 点击重置密码(这个环节可能需要手机短信验证). root 密码建议设置的稍微复杂一 些, 否则容易被黑客入侵.
- 使用 XShell 远程登陆到云服务器
1.启动xhell
2.新建会话窗口
3.登录
(首次连接会弹窗,提示用户接收密钥,点击接受即可。当第一次登陆时没有其他用户,只有超级用户root,它是有最高权限的管理员。可以直接用xshell的窗口选项来登录,也可以输入Linux指令来登录)
(输入Linux指令登录,详见下文)
引、基本指令
Linux操作系统又被称之为“核心(kernel)” 。但一般的用户,不能直接使用kernel,而要通过kernel的“外壳”程序——命令行解释器shell,来与 kernel 沟通。这是因为 kernel 对于一般的用户来说太过复杂,且不让用户直接使用 kernel 而提供 shell 给用户,也进一步保障了操作系统的安全性。从技术的角度,shell 能将用户的指令翻译给 kernel 处理。 同时,将kernel 的处理结果翻译给使用者。
对比windows GUI,我们操作windows 也不是直接操作windows内核,而是通过点击图形接口,从而达到操作的目的(例如要进入D盘,一般通过直接双击D盘盘符,或者通过一个应用程序)。shell 对于Linux,也是类似的作用,主要是对我们的指令进行解析,解析指令给 kernel。反馈结果在通过内核运 行出结果,通过shell解析给用户。
Linux操作系统都采用纯命令行的方式进行操作,虽然也有图形化界面,但是一般不用。这是因为无论图形还是指令,本质其实都是一样的,而指令操作更贴近操作系统。
所以说,Linux指令是 Linux操作系统中的基本操作,而它们是在命令行上运行的程序或实用程序。命令行是一个界面,它接受文本行并将其处理为计算机的指令。通俗来讲,我们所输入的指令就是一个可执行程序,当用户要运行一条指令时,系统会在相应文件下找相应的指令,然后再执行它。这个过程就相当于执行了一个可执行程序,同时也意味着,所有的指令操作都与文件相关,换句话说,Linux下,一切皆文件。
Linux中的文件基本分为两种:目录文件和普通文件,其中,目录文件相当于Windows中的文件夹,普通文件就相当于Windows中的普通文件。一个文件包含了文件内容和文件属性,其中,文件属性跟文件内容一样,也是数据,也需要存储。这就决定了,指令本质就是对文件内容的操作或对文件属性的操作。
1.用户相关
· 用户登录:ssh
语法:ssh + 用户名 + @ + 域名
上图的演示登录的是超级用户root(拥有最高的管理员权限),不同用户可以通过超级用户root来创建,域名用的是小编的云服务器。 ssh指令后别忘了要加空格。
· 显示当前用户名:whoami
语法:whoami
· 添加用户:adduer
adduser可以创建一个普通用户的账号,这个账号会以目录文件的形式存放在家目录“home”中。
语法:addsuer + 用户名
· 给用户设置新密码:passwd
语法:passwd + 用户名
· 删除用户:userdel
语法:userdel + (选项) + 用户名
但“userdel + 用户名”只删除了用户。
【补】选项:
- -r:连同用户主目录一起删除。如果创建时主目录已经存在(即主目录不属于当前要删除的用户),则无法删除主目录
2.文件的创建
· 创建空目录:mkdir
mkdir(make director)可以在当前目录下创建一个新的目录。
语法:mkdir + (选项) + 新目录名
【补】选项 :
- -p / -parents 可以是一个路径名称。此时若路径中的某些目录尚不存在 , 加上此选项后 , 系统将自动建立好那些尚不存在的目录, 即一次可以建立多个目录。例如mkdir –p test/test1 : 递归建立多个目录(test1在test里面)。
· 创建文件:touch
touch 可更改文件或目录的日期时间,包括存取时间和更改时间,也可以新建一个原本不存在的文件。
语法:touch + (选项) + 新文件名(具体到格式)
【补】选项 :
- -a:或 --time=atime / --time=access / --time=use,只更改存取时间
- -c:或 --no-create 不建立任何文档
- -d :使用指定的日期时间,而非现在的时间
- -f :此参数将忽略不予处理,仅负责解决 BSD 版本 touch 指令的兼容性问题
- -m:或 --time=mtime / --time=modify ,只更改变动时间
- -r:把指定文档或目录的日期时间,统统设成和参考文档或目录的日期时间相同
- -t :使用指定的日期时间,而非现在的时间
3.文件的显示
· 显示用户当前所在的目录:pwd
pwd(print working director)可以显示用户当前所在的目录。
语法:pwd
· 显示目录结构:tree
tree可以显示目录结构,也可以显示目录(文件夹)和文件的数量。
(注:tree这条指令需要先用“yum install -y tree”下载)
语法:tree
(ps:上图的演示是接上文的指令操作后的。上文的演示已经创建了两个空目录dir1、dir2和两个文件test.txt、test.c)
· 补、Linux下的目录结构
Linux系统中,磁盘上的目录文件和普通文件被组成一棵目录树,树中的每个节点都是目录文件或普通文件。
由于一个目录里可以再放别的目录和文件,因此整个目录结构一定是一棵多叉树。这棵多叉树的每个叶子节点一定是空目录或普通文件,每条路径上的节点一定是一个非空目录;特别的,树的根节点是根目录“/”,根目录下的家目录“home”里存放了普通用户账号(也是目录文件)。而用户对目录文件和普通文件的增删查改,本质都是对这颗多叉树的增删查改。
· 显示非隐藏文件:ls
对于目录,ls(list)会列出当前目录下的所有子目录与文件;而对于文件,将列出文件名以及其他信息。
语法:ls +(选项)
【补】选项:
- -a:列出目录下的所有文件,包括以 . 开头的隐藏文件
- -d:将目录像文件一样显示,而不是显示其下的文件
- -i:输出文件的 i 节点的索引信息。 如 ls –ai 指定文件
- -k:以 k 字节的形式表示文件的大小。 ls –alk 指定文件
- -l:列出文件的详细信息
- -n:用数字的 UID,GID 代替名称
- -F:在每个文件名后附上一个字符以说明该文件的类型, “*” 表示可执行的普通文件; “/” 表示目录; “@” 表示符号链接;“|” 表示 FIFOs ; “=” 表示套接字 (sockets) 。(目录类型识别)
- -r:对目录反向排序
- -t:以时间排序
- -s:在 l 文件名后输出该文件的大小(大小排序,如何找到目录下最大的文件)
- -R:列出所有子目录下的文件 ( 递归 )
- -1:一行只输出一个文件
4.文件的访问
· 访问目录:cd
cd(change directory)可以改变工作目录,将当前工作目录改变到指定的目录下(即访问某个目录)。
语法:cd + (选项)
【补】选项:
- 目录名:访问指定目录
- 路径:访问指定目录(可以通过绝对路径或相对路径)
- .. :访问上一级目录
- . :访问当前目录
- ~ :返回到登入时的目录下
- - :访问到上一次所在的目录
Linux的任何一个目录下都有两个隐藏文件:. 和 .. ;. 表示当前路径,.. 表示当前路径的上一级路径,它们存在的意义是,帮助用户定位当前目录下的一个文件。
· 补、绝对路径和相对路径
要定位一个文件,通常以路径的方式。这是因为路径定位具有唯一性,任何一个节点可能有多个子节点,但是一个节点至多只有一个父节点,尽管从根节点到某一叶子节点的路径可能有多种,但是从这个叶子节点往根节点回推,路径是唯一的。
路径分为绝对路径和相对路径。
- 绝对路径:从根目录开始到目标文件的路径,一般较长(例如上文演示图的/root/dir1),具有唯一性,不会改变。
- 相对路径:以当前工作目录为起点到目标文件的路径,一般较短(例如../dir1);注意!在当前工作目录发生变化时,相对路径可能会失效。
在固定场景中(例如配置文件)推荐使用绝对路径;一般命令行的输入,推荐使用相对路径
5.文件的删除
· 删除空目录:rmdir
rmdir(remove director)只能删除空目录。
语法:rmdir + 空目录名
· 删除文件:rm
rm(remove)可以删除非空的目录,也可以删除普通文件。
语法:rm + (选项)
【补】选项:
- 普通文件名:删除指定的普通文件。删除时需确认(输入“y”)
- - i:删除前进行询问。我们在普通用户下进行删除不加-i选项会直接删除,而在root用户下即使不加-i选项也会进行询问,原因是在root下删除文件在系统看来是比较危险的
- -r + 目录名:可以删除目录和目录下的文件(递归删除),删除时系统会逐个文件逐个目录地询问是否确认删除
- -rf + 目录名:强制删除目录和目录下的文件,不许询问
6.一些快捷键
- ctrl + c:取消本行输入
- ctrl + d:当前用户离线
- ctrl + insert:复制
- shift + insert:粘贴
这篇关于【Linux入门】Linux简史的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!