【Linux】糟糕,是心动的感觉——与Linux的初次相遇

初识Linux

  • 导言
  • 一、计算机的发展
    • 1.1 历史背景
    • 1.2 计算机的发明
  • 二、操作系统
    • 2.1 什么是操作系统?
    • 2.2 操作系统的诞生
    • 2.3 操作系统的发展
      • 2.3.1 批处理系统的发展
      • 2.3.2 分时系统
      • 2.3.3 实时系统
      • 2.3.4 通用操作系统
    • 2.4 UNIX操作系统
      • 2.4.1 UNIX的诞生
      • 2.4.2 UNIX的发展
    • 2.5 Linux的发展
      • 2.5.1 开源
      • 2.5.2 Linux的发行版本
  • 三、Linux初体验
    • 3.1 进入Linux系统
    • 3.2 操作指令
  • 结语

封面

导言

大家好,很高兴又和大家见面啦!!!
今天的文章不是一篇技术文,只是一篇简单的学习感受分享。今天的内容会简单的介绍一下Linux的背景、发展史。在今天的内容中,我将会分享一下第一次接触Linux的学习感受与体会,以及自己尝试的一些基本指令。下面让我们一起走进Linux的世界吧!

一、计算机的发展

1.1 历史背景

首先我们要清楚一个概念,那就是科技的发展是以国家之间的对抗为背景的,一个国家要想强大,只能通过不断的提升自己的技术。在现在的核武器时代,如果我们还像原始人一样去拿着石头、木棍去和其他国家进行对抗的话,只会有一个结果,惨败。

时间回到二战时期,当时的战斗十分激烈,但是各国的武器装备却没有特别的先进,在战斗中栈主导地位的战略武器就是飞机和大炮,因此研制和开发新型的大炮和导弹就是当时的重中之重。为此美国陆军军械部在马里兰州的阿拉伯丁设立了“弹道研究实验室”。1

1.2 计算机的发明

于1937年~1941年间,美国爱荷华州立大学的约翰·文森特·阿塔纳索夫(John Vincent Atanasoff)教授和他的研究生克利福特·贝瑞(Clifford Berry)先生研发了“阿塔纳索夫-贝瑞计算机”(Atanasoff-Berry Computer,简称ABC)。
阿塔纳索夫和贝瑞

ABC计算机是第一台电子化的计算机,非图灵完备和不可编程是其最大限制。
ABC计算机
1941年,莫克利(JohnW.Mauchly)在阿坦纳索夫家中借助了5天,在此期间“盗取”了阿塔纳索夫教授的研究成果及想法,之后于1942年提出了试制第一台能够计算导弹弹道轨迹的电子计算机的初始设想——“高速电子管计算装置的使用”,期望用电子管代替继电器以提高机器的计算速度。

美国军方得知这一设想后,马上拨款大力支持,成立了以莫克利、埃克特(John Eckert)为首的研制小猪开始研制工作,预算经费为15万美元。于是世界上第二台电子计算机,世界上第一台通用计算机 ENIAC (Electronic Numerical Integrator And Computer)开始进入研发状态。

于1944年,也就是 ENIAC 的研发中期,当时弹道研究所的顾问——正在参与美国第一颗原子弹研制工作的数学家冯·诺依曼(von Neumann,1903-1957,美籍匈牙利人)带着原子弹研制过程中遇到的大量计算问题,在研制过程中期加入了研制小组。

当时的 ENIAC 设计中存在两个问题:

  1. 没有存储器
  2. 它是使用布线接板进行控制的

为了进行搭接,可能需要耗费数天的时间,这就导致计算机的速度被这一工作抵消了。

1945年,为了解决 ENIAC 存在的这两个问题,冯·诺依曼和他的研制小组在共同讨论的基础上,发表了一个全新的“存储程序通用电子计算机方案”—— EDVAC (Electronic Discrete Variable Automatic Computer)。方案中提出的计算机体系结构一直延续至今,也就是现代计算机的冯·诺依曼结构。
冯·诺依曼

EDVAC 的初步预算为10万美元,但最终的成本大约超过估计的4倍,约50万美元。2

1946年,第一台通用计算机 ENIAC 问世,并开始投入运行。

1949年8月,第一台离散变量自动电子计算机 EDVAC 问世,于1951年正式开始投入运行。

二、操作系统

2.1 什么是操作系统?

操作系统本质上就是一款软件,只不过这款软件是用来进行软硬件管理的
现代计算机是由软件和硬件组成的,在计算机中其软硬件的体系结构我们可以简单的分为4层结构:
计算机软硬件体系结构

所谓的硬件就是按照冯·诺依曼的体系结构而组成计算机的五大部件:

  • 运算器、存储器、控制器、输入设备和输出设备;

计算机中控制这些硬件使用的是硬件对应的驱动,而对驱动下达指令的是管理软硬件资源的软件,这个软件就是我们所说的操作系统,使用计算机的用户了。

对于这个分层结构的工作流程,我们可以简单的理解为:

  • 用户通过对计算机进行一些操作,这些操作会传递给操作系统;
  • 操作系统在对这一系列的操作进行相应的处理后,再将对应的指令传达给驱动;
  • 驱动在接收到指令后会要求硬件执行对应的操作;

如果我们将一台计算机想象成一个软硬件公司的话,那么我们就是公司的董事长,公司大大小小的事物都需要经过我们的同意,而操作系统就是公司的总经理,总经理会将董事长的指令进行解析并传递给下属,而这些驱动就是接收总经理指令的组长,组长在接到指令后就会将工作任务分配给对应的员工,也就是计算机硬件。

这么一看,咱在使用计算机时好歹也是个董事长,我的天我真牛,哈哈哈哈。
我真牛
下面我们继续言归正传,下面来看一下操作系统的诞生与发展;

2.2 操作系统的诞生

自从 ENIAC 问世以来,当时对计算机的工作还是采用的手工操作的方式。3

程序猿将对应用程序和数据的已穿空的纸袋(或者卡片)装入输入机,然后启动输入机把程序和数据输入计算机内存,接着通过控制台开关启动程序针对数据运行;计算完毕,打印机输出计算结果;用户取走结果并卸下纸袋(或卡片)后,才让下一个用户上机。

手工操作方式有两个特点:

  1. 用户独占全机。不会出现因资源被其他用户占用而等待的现象,但资源利用率低。
  2. CPU等待手工操作。CPU利用不够充分。

根据这种操作特性,如果程序猿在使用计算机时,纸袋上面有一只小飞虫啥的,这就会造成程序的运行出现问题,于是便有了BUG一词。

EDVAC 问世之后,随着时代的更替,计算机也开始逐步发展,随着计算量的不断增加,于20世纪50年代后期开始出现了人机矛盾:

  • 手工操作的慢速度与计算机的高度之间产生了尖锐的矛盾,手工操作方式已经严重损害了系统资源的利用率,通过手工操作方式对系统资源的利用只能做到百分之几甚至更低。

为了解决这个矛盾,摆脱人的手工操作,实现作业的自动过渡,于是第一个操作系统——联机批处理系统诞生了。

2.3 操作系统的发展

2.3.1 批处理系统的发展

批处理系统是加载在计算机上的一个系统软件,在它的控制下,计算机能够自动地、成批地处理一个或多个用户的作业(这些作业包括程序、数据和命令)

首先出现的是联机批处理系统,即作业的输入和输出有CPU来处理。

虽然联机批处理系统客服了人机矛盾,提高了计算机的利用率,但是在作业输入和结果输出是,主机的告诉CPU仍处于空闲状态,等待慢速的输入和输出设备完成工作:主机处于“忙等”状态。

为了克服与缓解高速主机与慢速外设之间的矛盾,提高CPU的利用率,于是引入了脱机批处理系统,即输入与输出脱离主机的控制。

虽然脱机批处理系统极大缓解了人机矛盾以及主机与外设的矛盾,但是每次主机内存中仅存放一道作业,每当它运行期间发出输入和输出的请求后,高速的CPU便处于等待低速的输入和输出完成的状态,致使CPU空闲。

为了改善CPU的利用率,又引入了多道程序设计技术,即允许多个程序同时进入内存并运行。

多道程序系统的出现,标志着操作系统渐趋成熟,先后出现了作业调度管理、处理机管理、存储器管理、外设管理以及文件系统管理等功能。

20世纪60年代中期,在前述的批处理系统中,引入多道程序设计技术后形成多道批处理系统,简称批处理系统。
它有两个特点:

  1. 多道:系统内可同时容纳多个作业。这些作业放在外存中,组成一个后备队列,系统按一定的调度原则每次从后备作业队列中选取一个或多个作业进入内存运行,运行作业结束、退出运行和后备作业进入运行均由系统自动实现,从而在系统中形成一个自动转接的、连续的作业流。
  2. 成批:在系统运行过程中,不允许用户与其作业发生交互作用,即:作业一旦进入系统,用户就不能直接干预其作业的运行。

批处理系统的追求目标——提高系统资源利用率和系统吞吐量,以及作业流程的自动化。

批处理系统的一个重要缺点——不提供人机交互能力,给用户使用计算机带来不便

虽然用户独占全机资源,并且直接控制程序的运行,可以随时了解程序运行情况。但这种工作方式因独占全机造成资源效率极低。

一种新的追求目标:既能保证计算机效率,又能方便用户使用计算机。 20世纪60年代中期,计算机技术和软件技术的发展使这种追求成为可能。

2.3.2 分时系统

由于CPU速度不断提高和采用分时技术,一台计算机可同时连接多个用户终端,而每个用户可在自己的终端上联机使用计算机,好象自己独占机器一样。

所谓的分时技术指的是把处理机的运行时间分成很短的时间片,按时间片轮流把处理机分配给各联机作业使用

若某个作业在分配给它的时间片内不能完成其计算,则该作业暂时中断,把处理机让给另一作业使用,等待下一轮时再继续其运行。由于计算机速度很快,作业运行轮转得很快,给每个用户的印象是,好象他独占了一台计算机。而每个用户可以通过自己的终端向系统发出各种操作控制命令,在充分的人机交互情况下,完成作业的运行。

具有上述特征的计算机系统称为分时系统,它允许多个用户同时联机使用计算机。

特点:

  1. 多路性。若干个用户同时使用一台计算机。微观上看是各用户轮流使用计算机;宏观上看是各用户并行工作。
  2. 交互性。用户可根据系统对请求的响应结果,进一步向系统提出新的请求。这种能使用户与系统进行人机对话的工作方式,明显地有别于批处理系统,因而,分时系统又被称为交互式系统。
  3. 独立性。用户之间可以相互独立操作,互不干扰。系统保证各用户程序运行的完整性,不会发生相互混淆或破坏现象。
  4. 及时性。系统可对用户的输入及时作出响应。分时系统性能的主要指标之一是响应时间,它是指:从终端发出命令到系统予以应答所需的时间。

分时系统的主要目标:对用户响应的及时性,即不至于用户等待每一个命令的处理时间过长。

分时系统可以同时接纳数十个甚至上百个用户,由于内存空间有限,往往采用对换(又称交换)方式的存储方法。即将未“轮到”的作业放入磁盘,一旦“轮到”,再将其调入内存;而时间片用完后,又将作业存回磁盘(俗称“滚进”、“滚出“法),使同一存储区域轮流为多个用户服务。

多用户分时系统是当今计算机操作系统中最普遍使用的一类操作系统。

2.3.3 实时系统

虽然多道批处理系统和分时系统能获得较令人满意的资源利用率和系统响应时间,但却不能满足实时控制与实时信息处理两个应用领域的需求。

于是就产生了实时系统,即系统能够及时响应随机发生的外部事件,并在严格的时间范围内完成对该事件的处理

实时系统在一个特定的应用中常作为一种控制设备来使用。
实时系统可分成两类:

  1. 实时控制系统。当用于飞机飞行、导弹发射等的自动控制时,要求计算机能尽快处理测量系统测得的数据,及时地对飞机或导弹进行控制,或将有关信息通过显示终端提供给决策人员。当用于轧钢、石化等工业生产过程控制时,也要求计算机能及时处理由各类传感器送来的数据,然后控制相应的执行机构。
  2. 实时信息处理系统。当用于预定飞机票、查询有关航班、航线、票价等事宜时,或当用于银行系统、情报检索系统时,都要求计算机能对终端设备发来的服务请求及时予以正确的回答。此类对响应及时性的要求稍弱于第一类。

实时操作系统的主要特点:

  1. 及时响应。每一个信息接收、分析处理和发送的过程必须在严格的时间限制内完成。
  2. 高可靠性。需采取冗余措施,双机系统前后台工作,也包括必要的保密措施等。

2.3.4 通用操作系统

操作系统的三种基本类型——多道批处理系统分时系统实时系统

通用操作系统:具有多种类型操作特征的操作系统。可以同时兼有多道批处理、分时、实时处理的功能,或其中两种以上的功能

例如:实时处理+批处理=实时批处理系统。首先保证优先处理实时任务,插空进行批处理作业。常把实时任务称为前台作业,批作业称为后台作业。
再如:分时处理+批处理=分时批处理系统。即:时间要求不强的作业放入“后台”(批处理)处理,需频繁交互的作业在“前台”(分时)处理,处理机优先运行“前台”作业。

从上世纪60年代中期,国际上开始研制一些大型的通用操作系统。这些系统试图达到功能齐全、可适应各种应用范围和操作方式变化多端的环境的目标。但是,这些系统过于复杂和庞大,不仅付出了巨大的代价,且在解决其可靠性、可维护性和可理解性方面都遇到很大的困难。

相比之下,UNIX操作系统却是一个例外。这是一个通用的多用户分时交互型的操作系统。它首先建立的是一个精干的核心,而其功能却足以与许多大型的操作系统相媲美,在核心层以外,可以支持庞大的软件系统。它很快得到应用和推广,并不断完善,对现代操作系统有着重大的影响。

至此,操作系统的基本概念、功能、基本结构和组成都已形成并渐趋完善。

2.4 UNIX操作系统

Unix是20世纪70年代初出现的一个操作系统,除了作为网络操作系统之外,还可以作为单机操作系统使用。Unix作为一种开发平台和台式操作系统获得了广泛使用,主要用于工程应用和科学计算等领域。4

2.4.1 UNIX的诞生

UNIX系统是一个分时系统

最早的UNIX系统于1970年问世。此前,只有面向批处理作业的操作系统,这样的系统对于需要立即得到响应的用户来说是太慢了。在60年代末,肯尼斯·蓝·汤普森(Kenneth Lane Thompson)和 丹尼斯·麦卡利斯泰尔·里奇(Dennis MacAlistair Ritchie) 都曾参加过交互方式分时系统Multics的设计,而开发该系统所使用的工具是CTSS。这两个系统在操作系统的发展过程中都产生过重大影响。在此基础上,在对当时现有的技术进行精选提炼和发展的过程中,K.Thompson于1969年在小型计算机上开发UNIX系统,后于1970年投入运行。

肯尼斯·蓝·汤普森也就是我们的B语言之父与UNIX之父,本人帅照如下:
B语言之父
丹尼斯·麦卡利斯泰尔·里奇也就是我们的C语言之父,本人帅照如下:
C语言之父
膜拜两位大佬
见过大佬

2.4.2 UNIX的发展

  • 1968年,一些来自通用电器公司、贝尔实验室和麻省理工学院的研究人员开发了一个名叫Multics的特殊操作系统。Multics在多任务文件管理和用户连接中综合了许多新概念。

  • 1969-1970年,AT&T的贝尔实验室研究人员Ken Tompson和Dennis Ritchie,在采用很多Multics特点的基础上开发了UINX系统。它运行在小型机上,满足了系统对科研环境的要求。从产生开始,UNIX就是一个有价值的、高效的、多用户和多任务的操作系统。

UNIX从满足个人的设计需求开始,逐步成长为由许多不同开发商所支持的标准软件产品。
第一个UNIX版本是免费给许多知名大学的计算机系使用的。

  • 1972年,丹尼斯·麦卡利斯泰尔·里奇(Dennis MacAlistair Ritchie) 开发出C语言,用来改写原来用汇编语言编写的UNIX,由此产生了UNIX VersionV。贝尔实验室开始发放商业版本,并且给不同的用户授权使用这个系统,使用者之一是加州大学伯克莱分校的计算机系。伯克莱给系统增加了许多新的特点,后来成为了标准。

  • 1974年,Kenneth Thompson和Dennis Ritchie合写的“The UNIX Time-Sharing System”在Communication of ACM上发表,正式向外界披露了UNIX系统。
    当时,PDP-11系列小型计算机在世界各地已经得到广泛应用,UNIX系统一开发后便广泛配备于美国各大学的PDP-11系列计算机上,由此为UNIX的广泛应用创造了物质条件。

  • 1975年伯克莱由下属部门BSD发行了自己的UNIX版本。UNIX的BSD版本成为AT&T贝尔实验室版本的主要竞争者,而其它的独立开发出的UNIX版本也开始萌生。

  • 1978年,UNIX Version VI发表,随后又于1979年用于VAX-11超级小型机。以后,不断地出现各种新的版本。

  • 1980年微软公司开发了叫做Xenix的UNIX PC版本。AT&T发行了第一个商业版本。名叫System Ⅲ,后来被成为对商用软件产品良好支持的System Ⅴ所替代。

  • 美国电话电报公司分别于1981年和1983年发表AT&T UNIX SystemII和UNIX SystemV。美国加州大学伯克莱分校也先后发表了UNIX的版本BSD4.1,BSD4.2和BSD4.3。

随着UNIX的BSD版本不断发展,在70年代末期,BSD UNIX成为了国防部的高科技研究机构科研项目的基础。其结果,伯克莱发行了一个叫做BSD Release 4.2的有效版本。
它包括了高级的文件管理器和基于TCP/IP网络协议的网络特点。现在TCP/IP被Internet所使用。BSD Release4.2被许多厂商所采用,例如SUN Microsystem。

UNIX不同版本的出现导致了UNIX标准的需要,软件开发商不知道他们的程序运行在哪些版本上比较合适。

到80年代中期,两个竞争的标准出现了,一个是基于AT&T的UNIX版本,另一个是BSD版本。在今天的书店里你能发现分别适用于这两个版本的不同的UNIX的书,一些是System V,另一些集中在BSD UNIX。

AT&T建立了一个叫UNIX系统实验室的新组织,它的作用就是综合UNIX的不同版本,集中开发一个标准系统。

  • 1991年,UNIX综合实验室综合了System V Release3,SUN OS和Xenix的所有特点,发行了System V Release4。

为了与System V Release 4 竞争,一些其它公司,如IBM和惠普Open Software Foundation(OSF)去产生自己的UNIX标准版本,继而出现了两个标准商业版本OSF版本和System Release 4。

  • 1993年,AT&T把它的UNIX转卖给Novell公司。UNIX系统实验室成为了Novell的UNIX系统小组的一部分。Novell发行了基于System V Release 4的自己的UNIX版本UNIXWare,它可以和Novell公司的Netware系统相联。SUN公司已经把System V Release 4 融进了它的SUN OS,发行了Solaris。两个相互竞争的UNIX使用的图形用户界面(一个叫Motif,另一个叫Openlook),已经合并为一个新的工作平台标准,叫做通用平台环境(CDE)。

UNIX系统的用户日益增多,应用范围也日益扩大。无论在各种类型的微型机、小型机,还是在中、大型计算机,以及在计算机工作站甚至个人计算机上,很多都已配有UNIX系统。不仅新推出的机型配有UNIX系统,而且一些历史较久的生产厂商,也竞相将原有机型配上UNIX系统以便打开销路、争取市场。

  • 2020年,苹果发布操作系统升级版本,将UNIX操作系统的强大功能和苹果电脑的易用性相结合,提高了电脑的运行速度和电池寿命。

2.5 Linux的发展

1991年10月5日,赫尔辛基大学的一名研究生林纳斯·本纳第克特·托瓦兹(Linus Benedict Torvalds)在一个Usenet新闻组(comp.os.minix)中宣布他编制出了一种类似UNIX的小操作系统,叫Linux。
下面就是我们这位大佬的帅照:
Linux之父
新的操作系统是受到另一个UNIX的小操作系统——Minix的启发,该系统是由一名叫安德鲁·斯图尔特·塔能鲍姆(Andrew Stuart “Andy” Tanenbaum)的教师开发的。
大佬帅照如下:
Minix之父
读者也许猜想所发布的这个系统应该是Linux的0.01版本,实际上不是这样。真正的Linux 0.01版本并没有被发布,原因是0.01版本不实用。

Linus仅仅在第一个Linux的FTP站点(ftp://nic.funet.fi)上提供过这个版本的的源代码。

托瓦兹于10月5日发布的这个Linux版本被称为0.02版,它能够运行GNU Bourne Again Shell(bash)和GNU的C编译程序(gcc)以及为数不多的其它语言。托瓦兹绝对没有想到他设想的一种能够针对高级业余爱好者和黑客们的操作系统已经产生,这就是人们所称的Linux。

Linux发布时的版本是0.02,后来又有0.03版,然后又跳到0.10版。因为世界各地越来越多的程序员都开始开发Linux,它已经达到0.95版。这就意味着正是公布1.0版本的时间已经为期不远了。正式的1.0版本是在1994年公布的

Linux是一种自由和开放源代码的类UNIX操作系统,该操作系统的内核由林纳斯托瓦兹在1991年首次发布,之后,在加上用户空间的应用程序之后,就成为了Linux操作系统。严格来讲,Linux只是操作系统内核本身,但通常采用“Linux内核”来表达该意思。而Linux则常用来指基于Linux内核的完整操作系统,它包括GUI组件和许多其他实用工具。

2.5.1 开源

开源就是将代码进行公开

GNU通用公共许可协议(GNU General Public License,简称GNU GPL或GPL),是一个广泛被使用的自由软件许可协议条款,最初由理查德斯托曼为GNU计划而撰写,GPL给予了计算机程序自由软件的定义, 任何基于GPL软件开发衍生的产品在发布时必须采用GPL许可证方式,且必须公开源代码。
Linux是自由软件和开放源代码软件发展中最著名的例子。只要遵循GNU通用公共许可证,任何个人和机构都可以自由地使用Linux的所有底层源代码,也可以自由地修改和再发布。
随着Linux操作系统飞速发展,各种集成在Linux上的开源软件和实用工具也得到了应用和普及,因此,Linux也成为了开源软件的代名词。

Linux作为一款开源的操作系统,它被全球顶尖的行业大佬紧紧的盯着,因此,代码中存在的问题可以尽快的被这些大佬们发现并且进行优化,因此,Linux是一款更稳定、更高效、更安全且有免费发行版本的操作系统

Linux在很多地方都有相应的使用:

  1. 作为企业的服务后台
  2. 嵌入式设备中
  3. 新兴的入网家用设备(智能电视)
  4. 车载系统(特斯拉)
  5. 手机操作系统(安卓)

因为托瓦兹大佬的壮举,导致乔布斯能够通过操作系统赚到的money大幅度缩水,所以托瓦兹大佬也是乔布斯最痛恨的人之一。

2.5.2 Linux的发行版本

Linux的发型版本分为技术角度和商业角度两个方面:

技术角度:Linux内核(kernel)版本

从技术角度出发,Linux发行的版本又称之为Linux内核版本,我们可以通过Linux网址:https://www.kernel.org/来找到我们所需要的对应版本并进行下载
Linux发行版本1这里的版本都是可以使用的,就比如v2.6版本,我们在进入这个版本的界面之后会看到基于这个版本下的不同版本:
Linux发行版本2
就比如对于linux-2.6.11这个版本,这里的2.6.11这个版本号的命名是遵循主版本.从版本.修正次数的命名规则;

  • 从版本:
    • 偶数:稳定的可以直接使用的版本
    • 奇数:测试版
  • 修正次数:
    • 被修正了多少次

像这个2.6.11就表示的是在主版本v2下的第6版从版本,总共被修改了11次,并且v2.6这个从版本是可以进行稳定使用的版本。

商业化角度

商业化版本是基于内核版本进行二次开发的能够被我们使用并满足我们正常开发需求的商业化的产品。比如:centos 7,8、Ubuntu 12.04、kail、红旗、redhat(收费)……

我自己目前使用的是在VMware虚拟机上装载的centos7。下面我们就来看一下Linux的操作环境是怎么样的吧;

三、Linux初体验

3.1 进入Linux系统

首先我们先打开VMware:
Linux初体验1
之后打开centos7:
Linux初体验2
之后选择登录的用户:
Linux初体验3
最后输入账户密码完成登录:
Linux初体验4
完成账户登录后我们就能看到对应的图形化界面:
Linux初体验5
之后选择应用程序(Applications)->终端(Terminal):
Linux初体验6
之后就可以在界面内进行操作了:
Linux初体验7
在进行操作前我们先认识几个指令:

3.2 操作指令

//Linux基本操作指令
// ls——list——显示当前目录下的所有的文件名
// ll——展示当前目录下的所有文件名更详细的信息
// pwd——展示当前目录
// cd——进入指定文件
// mkdir——创建新的目录
// touch——创建新文件
// vim——编译新文件
// i——插入模式
// esc——切换正常模式
// :wq——保存并退出
// gcc——通过gcc打开指定文件
// ./a.out——运行指定文件
// cat——展示文件中的内容

下面我们尝试着通过这些指令来完成以下任务:

  1. 创建一个文件夹;
  2. 创建一个test.c文件;
  3. 在文件中进行C语言编码,编码内容为打印Hello Linux!
  4. 通过gcc来运行文件

下面我们先来看一下再文本文件中的操作步骤:
Linux初体验8
当我们创建好test.c文件后,我们就可以按照这个图中所示步骤来进行文本编辑。当我们保存好并退出文本后就可以开始运行文件了:
Linux初体验9
图中备注的指令功能不一定正确,但是目前我是这么理解并进行使用的,在后面的内容中我会再给大家好好的分享一下在Linux中的各种指令及其对应的基本操作。

刚才的操作代码我就放在下面了,大家可以看一下不同的指令及其使用:

[lq@localhost ~]$ pwd
/home/lq
[lq@localhost ~]$ ls
Desktop  Documents  Downloads  Music  Pictures  Public  Templates  Videos
[lq@localhost ~]$ ll
total 0
drwxr-xr-x. 2 lq lq 6 Jan 18 10:49 Desktop
drwxr-xr-x. 2 lq lq 6 Jan 18 10:49 Documents
drwxr-xr-x. 2 lq lq 6 Jan 18 10:49 Downloads
drwxr-xr-x. 2 lq lq 6 Jan 18 10:49 Music
drwxr-xr-x. 2 lq lq 6 Jan 18 10:49 Pictures
drwxr-xr-x. 2 lq lq 6 Jan 18 10:49 Public
drwxr-xr-x. 2 lq lq 6 Jan 18 10:49 Templates
drwxr-xr-x. 2 lq lq 6 Jan 18 10:49 Videos
[lq@localhost ~]$ mkdir Linux
[lq@localhost ~]$ ls
Desktop  Documents  Downloads  Linux  Music  Pictures  Public  Templates  Videos
[lq@localhost ~]$ cd Linux
[lq@localhost Linux]$ ls
[lq@localhost Linux]$ touch test.c
[lq@localhost Linux]$ ls
test.c
[lq@localhost Linux]$ vim test.c
[lq@localhost Linux]$ cat test.c
#include <stdio.h>
int main()
{printf("Hello Linux!\n");return 0;
}
[lq@localhost Linux]$ gcc test.c
[lq@localhost Linux]$ ls
a.out  test.c
[lq@localhost Linux]$ ./a.out test.c
Hello Linux!
[lq@localhost Linux]$ ll
total 16
-rwxrwxr-x. 1 lq lq 8512 Jan 24 03:23 a.out
-rw-rw-r--. 1 lq lq   78 Jan 24 03:22 test.c

结语

在今天的内容中,我们花费了大量的篇幅来介绍操作系统的发展历史,这里我觉得大家在学习Linux之前学习一下对应的历史是很有必要的,虽然文字内容偏多,篇幅过长,大家可以闲来无事时看一看,让自己对这个知识有一点印象。在文章最后,我也带领大家进行了Linux操作系统下的初次体验,虽然内容看着复杂,但是实质上我们就是通过各种指令来完成我们在Windows上进行的各种图形化操作。

今天的内容到这里就全部结束了,对于指令与图形化的内容以及Linux中的常见指令在下一个篇章中咱们将会介绍到,大家记得关注哦!希望本篇内容能帮助大家走进Linux的世界,最后感谢大家的翻阅,咱们下一篇再见!!!


  1. ENIAC ↩︎

  2. EDVAC ↩︎

  3. 操作系统发展史 ↩︎

  4. UNIX操作系统 ↩︎

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/645781.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

开源 C/C++(DuckX)操作docx文旦

目录 1.详情 2.项目示例 1.详情 创建、读取和写入 Microsoft Office Word docx 文件&#xff0c;可以不使用Microsoft Office组件。目前看操作docx文件绕不开Microsoft Office组件&#xff0c;虽然本项目可以读取docx文档&#xff0c;但是里面排版都消失了&#xff0c;除此之…

BP神经网络需要像深度学习一次次的迭代训练吗?

BP神经网络 答案&#xff1a;是的&#xff0c;BP神经网络需要像深度学习一次次的迭代训练。总结&#xff08;BP神经网络和深度学习在本质上有以下区别&#xff09; 答案&#xff1a;是的&#xff0c;BP神经网络需要像深度学习一次次的迭代训练。 BP神经网络&#xff08;误差反…

2024.1.24 GNSS 学习笔记

1.伪距观测值公式 2.载波相位观测值公式 3.单点定位技术(Single Point Positionin, SPP) 仅使用伪距观测值&#xff0c;不使用其他的辅助信息获得ECEF框架下绝对定位技术。 使用广播星历的轨钟进行定位&#xff0c;考虑到轨钟的米级精度&#xff0c;所以对于<1米的误差&…

Linux:gcc的相关知识

目录 gcc的翻译&#xff08;编译&#xff09;过程&#xff1a; 预处理&#xff1a; 条件编译&#xff1a; 编译&#xff1a; 汇编&链接&#xff1a; 什么是链接&#xff1f; 安装静态库&#xff1a; 静态库的使用&#xff1a; 动态静态的对比&#xff1a; 优缺对比…

IDEA插件(MyBatis Log Free)

引言 在Java开发中&#xff0c;MyBatis 是一款广泛使用的持久层框架&#xff0c;它简化了SQL映射并提供了强大的数据访问能力。为了更好地调试和优化MyBatis应用中的SQL语句执行&#xff0c;一款名为 MyBatis Log Free 的 IntelliJ IDEA 插件应运而生。这款插件旨在帮助开发者…

Oracle、MySQL数据库常规命令语法-简易记录(非常规持续更新)

前言:呈现的是非常基础必备命令以及常规关联语法,因涉及到不同数据库其表达都会有所区别,此篇纯属做个仓库记录更非常规持续更新,专业人士可忽略,且看且珍惜… MySQL: 关系型数据库、重点开源、支持大型规模、标准SQL数据语言、多平台多架构、高可用集群、可定制开发等等、…

Spring Cloud+SkyWalking全链路监控部署及使用分享

先了解 SkyWalking 极简入门 | Apache SkyWalking 版本&#xff1a;apache-skywalking-apm-9.7.0.tar.gz OAP服务和UI服务 apache-skywalking-java-agent-9.1.0.tgz JAVA-AGENT服务 环境&#xff1a;linux 项目&#xff1a;spring cloud 记录下碰到的问题&#xff1a; 1、s…

阿赵UE学习笔记——12、植物系统

阿赵UE学习笔记目录 大家好&#xff0c;我是阿赵。   继续学习虚幻引擎的用法。这次需要使用植物系统在地形上添加一些草和石头的装饰。 一、素材准备 之前介绍过&#xff0c;可以在Quixel上面获取免费的资源&#xff0c;所以我这里就下载了一些资源&#xff0c;有草和石头的…

windbg:设置断点 bp, bu, bm

bp、bu和bm命令设置一个或多个软件断点。您可以组合位置、条件和选项来设置不同类型的软件断点。 本文中的调试代码示例如下&#xff1a; #include <iostream>using namespace std;struct JKGirl{std::string name;int age;friend ostream& operator <<(ostr…

一文分清:Less、Sass、Scss、stylus,看看与css的对比

一、什么是css预处理器&#xff0c;有什么作用 CSS 预处理器是一种将预先定义的语法和功能添加到 CSS 中的工具。它们允许开发人员使用变量、嵌套规则、混合、继承等功能&#xff0c;以更高效和可维护的方式编写样式表。 CSS 预处理器的作用包括&#xff1a; 变量和计算&…

php项目中laravel框架下用postman调用接口实战总结

一.项目接口实战总结: 1.传参赋值错乱问题&#xff0c;如下&#xff1a; SQLSTATE[HY093]: Invalid parameter number (SQL: select count(*) as aggregate from cars where company_id 3345 and status ! 7 and user_id in (2148, 2060, 2061, 2432, 2136, 1970, 1987, 202…

【unity实战】实现实体子弹射击

文章目录 射击脚本新增子弹预制体子弹挂载脚本&#xff0c;实现触碰销毁子弹添加拖尾效果完结 射击脚本 public class Weapon : MonoBehaviour {public GameObject bulletPrefab; // 子弹预制体public Transform bulletSpawn; // 子弹生成位置public float bulletVelocity 30…

重构改善既有代码的设计-学习(三):重新组织数据

1、拆分变量&#xff08;Split Variable&#xff09; 有些变量用于保存一段冗长代码的运算结果&#xff0c;以便稍后使用。这种变量应该只被赋值一次。 如果它们被赋值超过一次&#xff0c;就意味它们在函数中承担了一个以上的责任。如果变量承担多个责任&#xff0c;它就应该被…

mac 修改flutter sdk配置

问题描述&#xff1a;我mac电脑上有高低2个版本的flutter sdk&#xff0c;我需要低版本sdk的项目在setting里设置了sdk版本&#xff0c;可是命令行还是提示我版本过高。 直接上解决办法&#xff1a; 打开mac终端&#xff0c;输入open -e .bash_profile&#xff0c;然后修改下…

【Java】SpringMVC参数接收(二):JSON、URI、文件

1、获取JSON参数 RequestMapping("/hello") RestController public class HelloSpring {RequestMapping("/t10")public String t10(RequestBody UserInfo userInfo){return userInfo.toString();} } 2、获取URI中的参数 &#xff08;1&#xff09;获取单…

手机耗电快怎么办?最全解析分享!

在现代社会&#xff0c;手机已经成为我们日常生活的重要伙伴&#xff0c;承载着通讯、娱乐、工作等多种功能。然而&#xff0c;随着手机功能的不断升级和使用频率的增加&#xff0c;许多人都曾经面临过一个普遍的问题&#xff1a;手机电池消耗过快。这不仅令人感到困扰&#xf…

B2B企业增长合集:10个案例4大策略深度解析

本文5300余字&#xff0c;静心阅读需要15分钟&#xff0c;建议收藏后再阅读。 现代管理学大师彼得德鲁克曾说&#xff1a;“不增长&#xff0c;一切都是成本。” 现实中的增长乏力和生存压力&#xff0c;迫使众多企业不得不寻求新的增长模式和增长渠道。 然而&#xff0c;增…

体育赛事编排管理系统设计与实现 -计算机毕业设计源码59094

目 录 摘要 1 绪论 1.1研究背景与意义 1.2研究内容 1.3springboot框架介绍 1.4论文结构与章节安排 2 体育赛事编排管理系统系统分析 2.1 可行性分析 2.1.1 技术可行性分析 2.1.2 经济可行性分析 2.1.3 法律可行性分析 2.2 系统功能分析 2.2.1 功能性分析 2.2.2 非…

基本语法和 package 与 jar

3.基本语法 1.输入输出 // 导入 java.util 包中的 Scanner 类 import java.util.Scanner;// 定义名为 ScannerExample 的公共类 public class ScannerExample {// 主方法&#xff0c;程序的入口点public static void main(String[] args) {// 创建 Scanner 对象&#xff0c;用…

VMware虚拟机安装优麒麟(ubuntukylin)操作系统

1.镜像下载 官网:https://www.ubuntukylin.com/ 优麒麟官网提供的宣传视频:https://www.ubuntukylin.com/upload/video/202204/1650594049260581.mp4官网提供的视频后续随着版本的更新,此视频可能失效,去官网查看最新的即可,这不是重点 1.1搜索出优麒麟官网,下载镜像 下载…