文章目录
- 前言
- [1. 什么是操作系统?](#1. 什么是操作系统?)
-
- [1.1 计算机的分层结构](#1.1 计算机的分层结构)
- [1.2 操作系统的概念](#1.2 操作系统的概念)
- [1.3 如何理解我们现在在计算机上的各种操作?](#1.3 如何理解我们现在在计算机上的各种操作?)
- [2. Linux的基本指令(部分)](#2. Linux的基本指令(部分))
-
- [2.1 mkdir 指令(重要)](#2.1 mkdir 指令(重要))
- [2.2 ls 指令](#2.2 ls 指令)
-
- [2.2.1 `.` 和 `..`](#2.2.1
.
和..
)
- [2.2.1 `.` 和 `..`](#2.2.1
- [2.3 cd 指令](#2.3 cd 指令)
- [2.4 pwd 命令](#2.4 pwd 命令)
- [2.5 touch 指令](#2.5 touch 指令)
- [2.6 rmdir 指令 && rm 指令](#2.6 rmdir 指令 && rm 指令)
- [2.7 clear 指令](#2.7 clear 指令)
前言
在了解了Linux的发展史(Linux的前世今生)之后,我们就得真正的开始接触了Linux了。不过在这之前,我还是想跟大家聊一聊什么是操作系统,让大家对操作系统有个整体的认知。这对之后我们学习Linux很有帮助!
在本文讲解完操作系统的概念之后,我会再给大家先介绍一些Linux操作系统内的基本指令,至于更多基本指令的讲解可以只需关注我的Linux专栏。
好了,话不多说,让我们愉快的开启本文的学习,领略操作系统的魅力!
1. 什么是操作系统?
在讲这个之前,为了给大家加深操作系统这个概念,我会先给大家介绍计算机的分层结构,相信认真看完这个分层结构的讲解,你一定不会再忘记什么是操作系统了。
1.1 计算机的分层结构
上来就先给大家看一幅图:
我们都知道,计算机由各种硬件所组成,通过各种设备的协调配合来完成我们用户期望的各种任务。那计算机就是由一块块硬件构成,我们只用给这些硬件上电才能开始工作。
每个硬件启动的方式都不一样,但是又让它们相互协调的工作,该怎么办?
此时生产这些硬件的厂商就会开发出一款款驱动程序(所以设备驱动其实就是一款程序)用来作为硬件工作的钥匙。相信这个现象大家是见过的,比如,当我们用钱买来了自己最喜欢的品牌的计算机时,一开机甚至可能连操作系统也没有,我们就得为电脑安装各种驱动,比如显卡驱动、声卡驱动、接口驱动等等。还有一种现象可以解释设备驱动的存在,就是我们讲有线的鼠标插入电脑中的USB结构时,如果我们直接移动鼠标会发现鼠标根本拖不动,大概过了1~2秒之后,鼠标就可以正常拖动了,那么在这段时间中,电脑就是在执行这个驱动程序。
有了设备驱动软件,就相当于实现了硬件到软件的一个过渡。接下来主角闪亮登场,操作系统统筹管理这些设备驱动程序,从而达到在逻辑上对硬件的集中管理。那么操作系统对这些硬件的管理有什么作用?
我们说电脑是给人使用的,那人在电脑上个可能会在各种应用程序上来满足自己的使用需求,在使用的过程中我们希望这款应用程序能做
到"快速、稳定、安全"等各项指标。操作系统就是在干这件事。
1.2 操作系统的概念
敲黑板,重点来了!操作系统的核心工作:通过向下管理着软硬件资源,就是为了向上能够提供稳定、快速、安全的操作/使用环境。
所以我们可以这样说,操作系统其实就是一款管理软硬件的程序。
这便是操作系统最本质的理解!!!
如果你还不理解计算机的分层结构,没有关系,我有用一个生活中的例子马上就能给你讲明白:
我们可以这样比作,将"操作系统、设备驱动、硬件"看作时一家公司的三个组成部分。其中"硬件"就代表着程序员,"设备驱动"就代表着产品经理,"操作系统"就代表公司老板,而"应用程序"就代表广大的消费者。有一天,老板向产品经理说,我们这个几个月要开发出一款新的软件,你马上给我跟一下进度。产品经理大气不敢出一声地说,好的老板。过了一会,产品经理就向程序们说老板要我们花几个月的时间开发出一款新的软件,听到这句的程序员们心里面那是一万个不爽啊,当时迫于生计,没办法只能开始程序员们的研发之旅了。过了几个月后,程序终于研发出来,收到了广大消费者的好评,都说这个软件用的很流畅。
那么在这个过程中,我们可以看到这么一个关系链:老板向产品经理发布任务,而产品经理又向程序员们布置任务,最后程序员们只能乖乖照做。这就像极了,操作系统管理着设备驱动程序,而设备驱动程序又管理着各硬件设备,最终的目的就是为了给用户提供一个安全、快速、稳定的使用环境。
1.3 如何理解我们现在在计算机上的各种操作?
我所学的知识最终还是要于实际生话挂钩的,那我们就得想一下:迄今为止,我们在计算机上所有的操作该怎么理解呢?(比如:我们在电脑上打游戏、用printf函数在屏幕上打印信息、将文件写入磁盘中等等...)
其实,我们在计算机上的一切行为,最终都会转化为一条条机器指令,告诉计算机的硬件你现在该干什么事情了。
我们所有的软件行为,全部都要自顶向下贯穿计算机的软硬件结构。换句话说,我们的所有软件行为,未来都要和操作系统有着直接或间接的联系。
这里有个动词"贯穿",该如何理解?
在仔细回想一下计算机结构的分层图:
我们用户站在最高层,每当使用应用软件时,都要经过操作系统,设备驱动,最后依靠硬件来帮助完成任务。才会把最终的结果显示在我们的眼前。可以看到这是一个一直向下的方向,贯穿到硬件这个层面!!!
好了,至此有关操作系统的概念我已经给大家全部讲完了,希望大家能够有所收获。
接下来,我就要给大家介绍在Linux操作系统之下,我们该如何使用指令完成一些基本操作。鉴于大家可能是学习Linux的小白,指令的讲解我会结合Windows操作的效果给大家进行一个对比的学习,这样大家才能更加深刻的理解。
2. Linux的基本指令(部分)
2.1 mkdir 指令(重要)
- 语法:mkdir [选项] dirname...(其中这个dirname可以自行定义)
- 功能:在当前目录下创建一个名为"dirname"目录
这个就相当于我们在Windows环境下,自己创建了一个文件夹,而文件夹的名字就叫做"dirname"。
使用演示:
- 常用选项:
-
-p,后面是一个路径名称。此时若是路径中的某些目录尚不存在,加上此选项之后,系统将自动建立那些尚不存在的目录,即可以一次性创建多个目录 ;
2.2 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 一行只输出一个文件。
这个命令就相当于我们在Windows系统下,查找一个文件的属性。文件的属性包括文件名、文件大小、文件被创建的时间等等。
这里给大家拓展一个小知识:如果我在电脑上创建了一个文本文件,但是我没有给这个文本文件输入任何内容,那这文件占据磁盘的空间吗?
答案:肯定占用。原因是,文件 = 文件大小 + 属性。
- 使用演示:
基本操作:
进阶展示:
现在我们就可以看到在root文件下有ddir1和dir1目录以及test.c文件。
我们还可以这样写:
指令中的选项可以组合来显示,可以看到上面两种写法带来的效果是等价的。
2.2.1 .
和 ..
可能有眼尖的读者看到了,有两个目录的命名竟然是 .
和 ..
,这究竟是什么东西?
其实,
.
和..
相当于Windows系统下的隐藏文件。而.
则代表当前目录,..
则代表上一级目录。这个其实是可以证明的,我们可以用cd命令来展示。
2.3 cd 指令
- 语法:cd 目录名
- 功能:改变工作目录。将当前目录改变到指定目录下。
这个可以理解为,假设我在Windows系统下,有一个文件名为test.txt。现在我想进入到这个文件里面进行操作,在Windows视角下,我只需要双击鼠标的左键即可。而在Linux系统下,cd指令就相当于进入了一个文件。至于我们该如何查看自己当前所在的路径,可以用pwd指令,这个我接下来就会讲。
- 使用演示:
可以看到,我们的确是进入到这个目录之下了。
接下来,我们在深入的探讨一下Linux系统中的一些知识:
在Linux系统中,磁盘上的文件和目录会被组成一棵目录树,每个节点都是目录或文件。
可以看到上面这幅图,呈现是一颗多叉树。
为此我们就可以理解cd以下的一些操作:
- cd
..
: 返回上级目录- cd /home/litao/linux/ : 绝对路径
- cd .../day02/ : 相对路径
- cd ~:进入用户家目
- cd -:返回最近访问目录
展示:
2.4 pwd 命令
- 语法:pwd
- 作用:显示当前用户所在的路径
这个就相当于在Windows系统下,我可以直接查看文件的路径一样!
- 使用演示:
2.5 touch 指令
- 语法:touch [选项] ... 文件...
- 功能:touch命令参数可以更改文档或目录的日期时间,包括存取时间和更改时间,或者创建一个不存在的文件。
- 常用选项:
a 或--time=atime或--time=access或--time=use只更改存取时间。
-c 或--no-create 不建立任何文档。
-d 使用指定的日期时间,而非现在的时间。
-f 此参数将忽略不予处理,仅负责解决BSD版本touch指令的兼容性问题。
-m 或--time=mtime或--time=modify 只更改变动时间。
-r 把指定文档或目录的日期时间,统统设成和参考文档或目录的日期时间相同。
-t 使用指定的日期时间,而非现在的时间
2.6 rmdir 指令 && rm 指令
rmdir是一个于mkdir相应的命令,mkdir是建立目录,rmdir是删除命令。
- 语法:rmdir [-p][dirname]
- 适用对象:具有当前目录操作权限的所有使用者
- 功能:删除空目录
- 使用注意事项:只能删除空目录,如果目录中存在内容是不能够删除的。
- 常用选项:
- -p 当子目录被删除后如果父目录也变成空目录的话,就连带父目录一起删除。
rm命令可以同时删除文件或目录(比较常用)
- 语法:rm [-f-i-r-v] [dirname]
- 适用对象:所用的使用者
- 功能:删除文件或目录
- 常用选项:
-f 即使文件属性为只读(即写保护),亦直接删除
-i 删除前逐一询问确认
-r 删除目录及其下所有文件
2.7 clear 指令
- 语法:clear
- 作用:清除屏幕上的内容
好了本文,就先讲这么些Linux的基本指令。希望大家,能够多加联系熟悉灵活的使用!!!
如果觉得本文讲得还不错得话,麻烦给偶点个赞吧!!!