Linux 是一个操作系统,就和我们熟知的 Windows 一样。不过 Linux 是开源的,并且 Linux 一般用于服务器,因此普通的用户对 Linux 无感知,但是又天天接收来自 Linux 服务器发送的数据。
Linux 的前世今生
1991年,Linus 因为不满 MINIX 只允许在教育上使用,所以他开始开发 Linux 内核。
MINIX:一个迷你的类 Unix 系统
从严格意义上来说,Linus 开发的是 Linux 内核,并不是 Linux 操作系统。因为一个操作系统除了内核之外,还包含了用户图形接口和一些实用工具。不过现在一般将 Linux 说成一个操作系统,而不是指 Linux 内核,Linux系统的用户图形接口和实用工具是由 GNU 计划提供的。
操作系统的核心称为“内核”,但是内核并不等于操作系统。内核提供系统服务,比如文件管理,虚拟内存,设备I/O等。内核还包括一些技术的程序,例如文本编辑器,编译器,外壳程序 Shell。
单独的 Linux 内核没办法工作,必须要有 GNU 项目。
Linux 的发行版
我们并不会直接使用 Linux,而是使用 Linux 的发行版,因为发行版会集成 Linux 操作系统以及相关的软件。Linux 发行版通常包含了桌面环境,办公包,媒体播放器,数据库等应用软件。
简单来说,发行版的本质还是 Linux,但是为了让 Linux 更好用,不用的组织机构对 Linux 做了不同程度的封装。
常见的发行版:
- Ubuntu
- Red Hat
- CentOS
Linux 文件组织
Windows 中文件会被区分为文件或者是非文件,但 Linux 中一切都是文件。Linux 中的文件夹是一种特殊的文件。
根目录
Linux 中的根目录只有一个,就是 /
,Linux中没有比这个等级更高的目录了。
window 中的根目录可以有好几个根目录,如果没有分区的话,那么C盘就是根目录。
目录的结构:
windows:
C:\Program Files\Baidu
Linux:
/usr/bin
用户目录
Linux 是一个多用户的操作系统。在 /home
目录中存在这用户的路径。我们使用 ~
来表示当前用户的用户目录。
我们需要分辨清楚,什么是用户目录 ~
,什么是根目录 /
。
绝对路径和相对路径
绝对路径是相对于根目录的路径,而相对路径是相对于当前目录的路径。
Linux 系统目录结构
Linux 文件基本属性
Linux 是一个多用户系统,因此不同的用户,拥有不同的权限。首先我们来看看 Linux 中的三种用户。
Linux 中的用户分为三种:
- 当前用户
- 当前用户同组的用户
- 其它用户
因此,对于一个文件来说,其对于不同类型的用户的权限也分为三种:
- user permissions 当前用户的权限
- group permissions 当前用户组的权限
- other permissions 其它用户的权限
举一个例子理解,Linux 中存在多个用户,不同的用户也会有不同的用户组。因此一个用户对一个文件的权限分为三种。
- 当前我自己的权限
- 当前我这个用户组的权限
- 其它用户(既不是我自己也不是我所在的用户组)的权限
当然,还有一种特殊的用户,root 用户。root 用户是整个系统的管理员,因此它拥有操作系统中所有文件的权限。
上图左边的十个字符,决定了该文件的类型以及访问权限。下面,我们就对这十个字符进行讲解。
文件类型 file type
第一个字符代表着这个文件是目录,文件或者链接文件等等。
- 当为
d
则是目录(directory); - 当为
-
则是文件; - 若是
l
则表示为链接文档(link file); - 若是
b
则表示为装置文件里面的可供储存的接口设备(可随机存取装置); - 若是
c
则表示为装置文件里面的串行端口设备,例如键盘、鼠标(一次性读取装置)。
文件权限 permissions
我们已经知道了,前 10 位字符,第一位代表着文件的类型,接下来,我们看后面的 9 位字符。
下图中,1-3 位表示着当前用户对于这个文件的权限,4-6 位表示着当前用户组对这个文件的权限,7-8位代表着其它用户对于这个文件的权限。
而每三位数字中,第一位代表着读权限,第二位代表着写权限,第三位代表着执行权限。
比如上图,这十位数字提供了下面的信息:
- 该文件是一个目录文件
- 该文件对于当前用户来说,可读,可写,可执行
- 该文件对于当前用户所在的用户组来说,可读,不可写,可执行
- 该文件对于其它用户来说,可读,不可写,可执行
我们举一个生活化的例子来说明文件的权限。比如在你们公司,你写了一份代码。此时,你是一个用户,你拥有对这段代码的读、写、执行这三个权利。而你们部门的人,也是用户,但是他们有一个特殊的属性——和你是一个部门的,也就是同组的,因此你的同事,也就是和你在同一个组的用户,可以读和执行你的代码。而其它用户,比如说别的公司的人,无权过问了。
Linux 中的基础指令
todo