一、Linux 介绍
1、什么是 Linux
- Linux 就是一个操作系统,全称 GNU/Linux,是一种类 Unix 操作系统
Linux 一开始是没有图形界面的,所有操作都靠 命令 完成。如 磁盘操作、文件存取、目录操作、进程管理、文件权限 等等,可以说 Linux 就是由 命令行 组成的操作系统。
大家更熟悉的 Windows 系统,一般用户都是在纯图形化界面下进行操作的,依靠鼠标和键盘操作,上手比较简单。
现在的 Linux 兼具图形化界面操作和完全的命令行操作,但 命令行操作 仍然是 Linux 的 精髓 所在,命令行下只用键盘就能完成所有操作。
2、Linux 的两个基本思想
- 一切皆文件
- 每个文件都有确定的用途
二、终端 和 Shell
1、什么是终端(Terminal)
- 终端是与计算机系统相连的一种输入、输出设备,通常离计算机较远
终端就是人与计算机交互的接口。Unix 和 Linux 把这些人机交互的接口统称为 —— 终端。可以简单将终端理解为 “鼠标、键盘、显示器、扬声器、麦克风” 等硬件设备。
- 台式机的输入设备一般包括 【键盘、鼠标、麦克风】;输出设备包括 【显示器、扬声器】
2、Linux 终端
?为什么 Linux 上的终端和上面说的终端感觉不太一样呢 ?
实际上,前面说的终端是物理设备,而我们在 Linux 上常说的终端其实是一种 模拟终端的程序(即:终端模拟器 - Terminal Emulator),也称为 —— 虚拟终端 ,但平时一般直接称为终端。
可以将 Linux 终端看作一个使用软件来模拟的输入、输出设备,其作用就是提供一个命令的输入、输出环境。Linux 终端是基于物理终端之上的。
在 Linux 操作系统中,为了让多个用户登录系统进行操作,或打开多个窗口执行多个任务,Linux 设置了多个虚拟终端设备。
- 在 Linux 下 Ctrl + Alt + t 即可打开终端(Ctrl + d 关闭终端)
3、Shell
- 在计算机科学中,Shell 俗称 “壳” (区别于 “核”—— Linux 内核)
- 简单来说,Shell 就是接收用户输入的命令,然后提交给 Linux 内核处理的一个壳程序
Shell 是一个用 C 语言编写的程序,是用户使用 Linux 的桥梁。Shell 既是一种命令语言,又是一种程序设计语言。
我们在使用 Linux 的时候,一般不是对系统直接进行操作,而是通过一个中间程序实现,这个中间程序就是 —— Shell 。
Shell 指 “提供给使用者使用界面” 的软件,即 Command Interpreter - 命令解析器。Shell 接收用户或者其他应用程序的命令,然后将这些命令转化成内核能够理解的语言并传递给内核,内核执行命令完成后,再将执行结果返回给用户或者应用程序。
Shell 是包裹在操作系统 外层 的一道程序,负责外界与 Linux “内核” 的交互,但它隐藏了操作系统底层的具体细节,就像是 Linux 内核的一个 “外壳”,所以 Shell(壳)的名称也由此而来。
- 图形化界面也是一种广义的 Shell,因为图形界面操作的本质也是 —— 将用户的命令传递给内核执行
4、终端 和 Shell 的区别和关联
- 终端接收命令输入,Shell 翻译并传递命令,内核执行命令
终端 只是人机交互的一个接口,提供输入输出命令的交互界面。终端的主要任务是接收用户输入的命令,并提交给 Shell。
Shell 是命令解析器,主要任务是翻译命令。Shell 将终端输入的命令转化成内核能够理解的语言并传递给内核,由内核执行命令,并将执行结果返回给终端。
当我们打开终端时,Shell 也会自动启动,操作系统会将终端和 Shell 关联起来。接着我们在终端输入命令,Shell 就负责解释命令。
打开终端后显示如下,则说明 Shell 调用成功:
**k | 当前用户 |
@ | 分隔符 |
V - Ubuntu | 主机名称 |
~ | 当前工作目录 |
$ | 身份提示符( # 表示超级用户,$ 表示普通用户) |
5、tty 和 pty
(1)tty
tty 来源于 - teletypewriter(电传打字机),是很早前的一种终端设备。现在的 tty 已经不再指电传打字机了,而作为各种类型的终端设备的统称。
(2)pty
tty 虽然是电传打字机的缩写,但现在几乎已经没有电传打字机了,现在的 tty 也没有实际的电传打字机硬件,所以也称为 pty(pseudo tty)