【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.rhkb.cn/news/245095.html

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

相关文章

Git学习 -- 分支合并、版本修改相关

目录 learn GIT Learn Git Branching merge和rebase的使用 基础命令 版本回退 工作区和暂存区 管理修改 撤销修改 删除修改 learn GIT Learn Git Branching 这是Gitee上的Git学习教程 Learn Git Branching Git Rebase Learn Git Branching 最终的实操 merge和rebase的…

爬虫正则+bs4+xpath+综合实战详解

Day3 - 1.数据解析概述_哔哩哔哩_bilibili 聚焦爬虫&#xff1a;爬取页面中指定的页面内容 编码流程&#xff1a;指定url -> 发起请求 -> 获取响应数据 -> 数据解析 -> 持久化存储 数据解析分类&#xff1a;正则、bs4、xpath(本教程的重点) 数据解析原理概述&am…

2024年 全新 HTTP 客户端 你用了?

我们平时开发项目的时候&#xff0c;经常会需要远程调用下其他服务提供的接口&#xff0c;于是我们会使用一些 HTTP 工具类比如 Hutool 提供的 HttpUtil。SpringBoot 3.0 出了一个Http Interface的新特性&#xff0c;它允许我们使用声明式服务调用的方式来调用远程接口&#xf…

重磅!Salesforce推出UE+无限版餐套,企业如何选择?

孤立的应用程序和脱节的技术堆栈是所有企业的噩梦。目前&#xff0c;市场上产品和服务种类繁多&#xff0c;无缝集成和清晰、直接的购买流程可以决定整体体验的成败。 Salesforce云以及其他应用程序在过去几年中经历了巨大增长。随着越来越多的功能被捆绑在一起&#xff0c;Un…

威联通QNAP NAS结合cpolar内网穿透实现公网远程访问NAS中存储的文件

文章目录 推荐 前言1. 威联通安装cpolar内网穿透2. 内网穿透2.1 创建隧道2.2 测试公网远程访问 3. 配置固定二级子域名3.1 保留二级子域名3.2 配置二级子域名 4. 使用固定二级子域名远程访问 推荐 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣…

Tarjan 算法(超详细!!)

推荐在 cnblogs 上阅读 Tarjan 算法 前言 说来惭愧&#xff0c;这个模板仅是绿的算法至今我才学会。 我还记得去年 CSP2023 坐大巴路上拿着书背 Tarjan 的模板。虽然那年没有考连通分量类似的题目。 现在做题遇到了 Tarjan&#xff0c;那么&#xff0c;重学&#xff0c;开…

“趣味夕阳,乐享生活”小组活动(第二节)

立冬以来&#xff0c;天气日渐寒冷&#xff0c;气温变化较大&#xff0c;各种传染病多发&#xff0c;为进一步增强老年人冬季预防传染病保健意识及科学合理健康的生活方式。近日&#xff0c;1月22日&#xff0c;南阳市人人社工灌涨站开展了“趣味夕阳&#xff0c;乐享生活”小组…

【C++ | 数据结构】从哈希的概念 到封装C++STL中的unordered系列容器

文章目录 一、unordered系列容器的底层结构 - 哈希1. 哈希概念2. 哈希冲突 二、解决哈希冲突方法一&#xff1a;合理设计哈希函数&#x1f6a9;哈希函数设计原则&#x1f6a9;常见哈希函数 方法二&#xff1a;开闭散列&#x1f6a9;闭散列线性探测法&#xff08;实现&#xff0…

gradle打包分离依赖jar

正常打包的jar是包含项目所依赖的jar包资源&#xff0c;而且大多数场景下的依赖资源是不会频繁的变更的&#xff0c;所以实际把项目自身jar和其所依赖的资源分离可以实现jar包瘦身&#xff0c;减小上传的jar包总大小&#xff0c;能实现加速部署的效果 一 原本结构 二 配置buil…

第04章_IDEA的安装与使用(下)(IDEA断点调试,IDEA常用插件)

文章目录 第04章_IDEA的安装与使用&#xff08;下&#xff09;8. 快捷键的使用8.1 常用快捷键8.2 查看快捷键1、已知快捷键操作名&#xff0c;未知快捷键2、已知快捷键&#xff0c;不知道对应的操作名 8.3 自定义快捷键8.4 使用其它平台快捷键 9. IDEA断点调试(Debug)9.1 为什么…

<网络安全>《2 国内主要企业网络安全公司概览(二)》

4 北京天融信科技有限公司(简称天融信) 信息内容LOGO成立日期创始于1995年总部北京市海淀区上地东路1号院3号楼北侧301室背景民营企业是否上市天融信[002212]A股市值99亿主要产品网络安全大数据云服务员工规模6000多人简介天融信科技集团&#xff08;证券代码&#xff1a;0022…

【Chrome】浏览器怎么清除缓存并强制刷新

文章目录 1、正常刷新&#xff1a;正常刷新网页&#xff0c;网页有缓存则采用缓存。 F5 或 刷新键2、强制刷新&#xff1a;忽略缓存刷新&#xff0c;重新下载资源不用缓存。 CtrlF5 或 ShiftF5 或 CtrlShiftR3、在浏览器的设置里面清除所有数据

freeRTOS总结(八)任务相关API函数

1&#xff0c; FreeRTOS任务相关API函数介绍&#xff08;熟悉&#xff09; UBaseType_t uxTaskPriorityGet( const TaskHandle_t xTask ) 获取任务优先级函数 此函数用于获取指定任务的任务优先级&#xff0c;使用该函数需将宏 INCLUDE_uxTaskPriorityGet 置 1 void vTask…

用于垃圾回收的运行时配置选项

反馈 本文内容 指定配置的方法垃圾回收的风格管理资源使用情况大型页面 显示另外 4 个 此页面包含有关 .NET 运行时垃圾回收器 (GC) 设置的信息。 如果你要尝试让正在运行的应用达到最佳性能&#xff0c;请考虑使用这些设置。 然而&#xff0c;在特定情况下&#xff0c;默认…

【动态规划】C++ 算法458:可怜的小猪

作者推荐 视频算法专题 涉及知识点 动态规划 数学 力扣458:可怜的小猪 有 buckets 桶液体&#xff0c;其中 正好有一桶 含有毒药&#xff0c;其余装的都是水。它们从外观看起来都一样。为了弄清楚哪只水桶含有毒药&#xff0c;你可以喂一些猪喝&#xff0c;通过观察猪是否…

精通 Spring REST API:最佳实践

概述 随着数字时代的推进&#xff0c;基于Web的程序已经成为构建交互式应用的关键。客户端与服务器之间的沟通频繁依赖于通过 APIs 获取的网络服务。 使用开源框架Spring&#xff0c;开发者可以有效率地搭建Web服务。本篇文章旨在展示如何利用Spring来构筑一个REST风格的Web服…

基于Java+SpringBoot+vue+element疫情物资捐赠分配系统设计和实现

基于JavaSpringBootvueelement疫情物资捐赠分配系统设计和实现 &#x1f345; 作者主页 央顺技术团队 &#x1f345; 欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; &#x1f345; 文末获取源码联系方式 &#x1f4dd; &#x1f345; 查看下方微信号获取联系方式 承接各种…

【字符串】【C++算法】828.统计子串中的唯一字符

作者推荐 【动态规划】【map】【C算法】1289. 下降路径最小和 II 本文涉及知识点 子数组&#xff08;串&#xff09; 字符串 LeetCoce828.统计子串中的唯一字符 我们定义了一个函数 countUniqueChars(s) 来统计字符串 s 中的唯一字符&#xff0c;并返回唯一字符的个数。 例…

【pyqt6】用pyqt做一个点菜小程序

用pyqt做一个点菜小程序 前言1.pyqt62. 功能介绍3.程序实现 前言 在本文中&#xff0c;我们将使用 PyQt6&#xff08;Python的GUI库&#xff09;创建一个简单的点菜小程序。该程序允许用户从菜单中选择菜品&#xff0c;将其添加到订单中&#xff0c;并通过点击“下单”按钮查看…

3.postman动态参数、文件上传及断言

一、postman内置动态参数以及自定义的动态参数 postman内置动态参数&#xff1a; {{$timestamp}} 生成当前时间的时间戳 {{$randomint}} 生成0-1000之间的随机数 {{$guid}} 生成随机guid字符串 自定义动态参数&#xff1a; 在请求中pre-req页面下 //手动的获得时间戳 var…