Linux(二)—— Unix&Linux 的基本概念
计算机 = 主机(host)+ 终端(terminal)
主机 = 内核 + 实用工具
- 内核(kernel)
- 当计算机启动时,计算机要经历一系列动作,这些动作构成了引导过程。引导过程的最后一个动作是启动一个非常复杂的程序,该程序就被称为内核(Kernel)
- 内核的作用是控制计算机,提供基础服务,是操作系统的核心,主要分为单内核和微内核两种
- 单内核(monolithic kernel):自身可以完成所有事情,大多数早期 Unix 使用单内核设计,现在流行的单内核为 Linux kernel
- 微内核(micro kernel):只能完成最基本的任务,例如 Minix、macOS
- 实用工具
- 编辑器、编译器等等等
- Shell:命令行解释器,包括了用来组合命令的流程控制结构。除了在交互式提示符下输入命令外,用户还可以编写脚本。大多数shell都有一套共同的语法(基于Bourne shell)。
终端 = 输入设备 + 输出设备
最初,终端(terminal)和控制台(Console)都不是个人电脑的概念,而是多人共用的小型、中型、大型计算机上的概念。在计算机早期时代,个人无法承担高昂的费用,多个人通过终端同时使用一台主机,而控制台是管理员管理系统时使用的机柜,一般会直接附着在主机旁边。
字符终端
字符终端 (Character Terminal) 也叫文本终端 (Text Terminal),是只能接收和显示文本信息的终端。
早期人们使用价格低廉的电传打字机(Teletypewriter,tty)作为字符终端,所有输入结果都在纸带上打孔,最早型号为 Teletype ASR33(Automatic Send-Receive),后来由于电传打字机的使用过于普遍,以至于 tty 和终端成为同义词,终端(terminal)
= tty
= 命令的输入输出环境
。
字符终端也分为 哑终端 (Dumb Terminal) 和所谓的 智能终端 (Intelligent Terminal),因为后者可以理解转义序列、定位光标和显示位置,比较聪明,而哑终端不行。
DEC 公司在 1978 年制造的VT100 终端,VT100 不仅是史上最流行的字符终端,更是成为了字符终端事实上的标准。
终端仿真器(Terminal Emulator)
模拟:Simulate,按照实现来实现,原理相同,行为相同
仿真:Emulate,保持外部行为,但内部原理已经改变
如今的终端,指的是使用软件都是对终端设备进行仿真,与主机进行交互的终端仿真器,在面对命令行 (CLI) 程序时,终端仿真器会「假装」成一个传统终端设备;而对于现代的图形接口,终端仿真器会「假装」成一个 GUI 程序。
一个终端模拟器的标准工作流程是这样的:
- 捕获你的键盘输入;
- 将输入发送给命令行程序(程序会认为这是从一个真正的终端设备输入的);
- 拿到命令行程序的输出结果(STDOUT 以及 STDERR);
- 调用图形接口(比如 X11),将输出结果渲染至显示器。
现代系统中, Linux 默认提供了 6 个虚拟控制台(virtual consoles)和一个图形界面来让用户登录,Unix 则提供了 8 个,它们是由操作系统内核直接提供的,而那些那些运行在图形界面上的终端模拟器则被叫做终端窗口 (Terminal Window)。
无论是字符终端还是图形终端的仿真,都对应着 Linux 上的 /dev/tty
设备,Unix&Linux 的多用户登陆就是通过不同的 /dev/tty
设备完成的,而设备的属性等信息都保存在其中。
CLI(Command Line Interface)类仿真设备有 VT100、VT220、Xterm等,使用
infocmp | less
可以看到自己当前所仿真的终端设备型号。
而 infocmp 命令显示内容则基于 ncurses (free version of curses),存储着不同型号设备的配置信息,用于命令的执行
命令行界面 (CLI)、终端 (Terminal)、Shell、TTY,傻傻分不清楚?
Linux
The name “Linux” refers to any Unix system that uses the Linux kernel。
GNU/Linux 下的图形用户界面 GNOME 和 KDE,有时也被叫做「虚拟 shell」或「图形 shell」。
Linux 学习路径
暂缺
Linux 目录结构
FHS(英文:Filesystem Hierarchy Standard 中文:文件系统层次结构标准),多数 Linux 版本采用这种文件组织形式,FHS 定义了系统中每个区域的用途、所需要的最小构成的文件和目录同时还给出了例外处理与矛盾处理。
Linux 目录结构
暂缺
Linux 目录类型
暂缺