关于 Linux 、Shell 和终端

版权声明:原创不易,未经作者允许请勿随意转载!因个人能力和精力有限,难免有疏漏和不足之处,欢迎指正,谢谢~ https://blog.csdn.net/lijing742180/article/details/85016617

建议在阅读本文之前,先看下上篇文章 关于计算机系统的基本组成 ,更容易理解。

一、什么是操作系统?

在上一篇文章中已经介绍过,计算机软件包括系统软件和应用软件,操作系统就属于系统软件中的核心部分。

  • 操作系统是计算机系统中必不可少的核心系统软件;
  • 其它的软件都是在操作系统的基础上建立的,在操作系统的统一管理和支持下运行。
  • Linux 是一种常用的操作系统软件,相对应的还有其它的操作系统,如常见的 Windows 、MAC、UNIX 等等。

二、操作系统的作用

操作系统有两大重要作用:

1、管理资源,提高系统效率

  • 有效的组织和管理系统中的各种软、硬件资源,组织工作流程,控制程序执行;
  • 进行 CPU 管理、存储管理、设备管理、文件管理;
  • 合理分配各种资源,提高系统吞吐量;

2、改善人机交互

  • 在复杂的 01 代码和机器指令基础上,为用户提供易用的接口和界面;
  • 是用户和计算机硬件之间的接口;

三、Linux 和 Shell 的角色

在鸟哥私房菜中,是这样说明操作系统的:

在这里插入图片描述

  • 其中,作业系统和操作系统是一样的概念,对应英文都是 operating system;
  • 不同的硬件运行不同的操作系统及应用程序;

若使用的是 Linux 操作系统,则 Linux 和 Shell 的角色如下:

在这里插入图片描述

四、Shell 的作用

1、什么是 Shell ?

  • 一般说的 Shell 都是指命令行 shell (command line shell,CLI),属于一种应用程序,相当于 Linux 中的命令解释器;
  • Shell 把命令或程序传递给操作系统(如Linux),调用系统内核来执行,是用户使用操作系统的桥梁;
  • 过去命令行 Shell 是类Unix 系统中唯一的用户接口,后来出现了图形化的用户接口(graphical user interfaces ,GUIs),如 Ubuntu 操作系统下的图形界面;
  • Shell 既是一种命令语言,可以交互式的解释和执行用户输入的命令;
  • Shell 又是一种解释型的程序设计语言,有各种变量和参数,及循环和分支等复杂的流程控制结构;

2、Shell 的分类

不同的操作系统使用不同的 Shell,同时随着操作系统内核的更新,也出现了不同版本的 Shell。

Linux 系统中默认使用的是/bin/bash, 是 /bin/sh的增强版,功能非常强大,保持默认就好。

可以在 /etc/shells 中查看一下系统中可用的 shell 有哪些:

$ cat /etc/shells 
/bin/sh
/bin/bash  ---默认使用的是这个
/sbin/nologin
/bin/tcsh
/bin/csh

3、Shell 的两种执行方式

交互式(Interactive)

用户每输入一条命令,shell 就解释并执行一条命令。

在前面的文章中,讲到的常用的 Linux 命令中的例子基本都是属于交互式的。

批处理(batch)

把多条命令写在一个 shell 脚本中(shell script),最后执行这个 shell 脚本。

这种方式 shell 会依次读取并解释执行脚本中的每行命令。

五、终端、TTY 和 Shell 的关系

1、什么是终端?

  • 常说的终端(Terminal),也可以叫做终端模拟器(terminal emulator)指的是一个用来输入 shell 命令和脚本的窗口。
  • 我们实际上是在终端上面编写和执行 shell 命令和脚本。
  • 在 Linux 系统中有很多终端应用,如:gnome-terminal, konsole, xterm, rxvt, kvt, nxterm, eterm 等等,可以直接使用。

如果是在 Windows 环境下,也可以使用 SecureCRT 、XShell 等工具来模拟一个 Linux 下的终端,实际执行 shell 。

比如,在 SecureCRT 中我们可以在 Options中设置使用哪种终端:
在这里插入图片描述

2、TTY

TTY 来源于 Teletypewriter (电传打字机),后来被键盘和显示器取代,所以后来就用 tty 指代终端,它相当于是对应终端的一个代号。

Linux 系统会提供很多个 tty ,对应于很多用户的终端,关系类似下图:

在这里插入图片描述

tty命令

(1)在 shell 中输入 tty,会显示当前终端信息:

直接在 Linux 系统下执行:
$ tty
/dev/tty1

在 Windows 系统中通过 SecureCRT 执行:
$ tty
/dev/pts/9

这里在不同的终端下执行 tty,结果不太一样:

  • 直接在 Linux 系统(也可以是虚拟机的 Linux 系统)中打开的终端,会显示设备代号为 tty加上代号;
  • 通过远程连接到 Linux 系统打开的虚拟终端,会显示设备代号为pts(pseudo-terminal slave)加上代号,pts 是用于实现 pty(pseudo-tty 虚拟终端)的一种方式。

ttypts只是不同终端类型的显示代号而已。

(2)在 shell 中输入 who,会显示当前用户所有的终端信息:

加上 -H 参数,会显示列名:
# who -H
NAME   LINE     TIME       COMMENT
root   tty7     2018-12-13 12:12 (:0)
root   pts/0    2018-12-14 17:09 (:0.0)
root   pts/1    2018-12-14 18:51 (192.168.1.17)
root   pts/2    2018-12-14 19:48 (192.168.1.17)

猜你喜欢

转载自blog.csdn.net/lijing742180/article/details/85016617