Linux中终端和控制台的一些不成熟的理解
首先声明,这仅仅是在下一些不成熟的想法。是通过看网上的一些资料和自己实践的一些心得,应该都是些很不成熟甚至是不太正确的想法。但是我还是想记录下来,算是一个心路历程吧。等以后成熟了,再来修改。
首先说一下控制台和终端在历史上的一些区别。
要明白这两者的关系,还得从以前的多人使用的计算机开始。大家都知道,最初的计算机由于价格昂贵,因此,一台计算机一般是由多个人同时使用的。在这种情况下一台计算机需要连接上许多套键盘和显示器来供多个人 使用。在以前专门有这种可以连上一台电脑的设备,只有显示器和键盘,还有简单的处理电路,本身不具有处理计算机信息的能力,他是负责连接到一台正常的计算 机上(通常是通过串口) ,然后登陆计算机,并对该计算机进行操作。当然,那时候的计算机操作系统都是多任务多用户的操作系统。这样一台只有显示器和键盘能够通过串口连接到计算机 的设备就叫做终端。 而控制台又是什么回事呢? 学机电的人应该知道,一台机床,或者数控设备的控制箱,通常会被称为控制台,顾名思义,控制台就是一个直接控制设备的台面(一个面板,上面有很多控制按 钮)。 在计算机里,把那套直接连接在电脑上的键盘和显示器就叫做控制台。请注意它和终端的区别,终端是通过串口连接上的,不是计算机本身就有的设备,而控制台是 计算机本身就有的设备,一个计算机只有一个控制台。计算机启动的时候,所有的信息都会显示到控制台上,而不会显示到终端上。也就是说,控制台是计算机的基本设备,而终端是附加设备。 当然,由于控制台也有终端一样的功能,控制台有时候也被模糊的统称为终端。 计算机操作系统中,与终端不相关的信息,比如内核消息,后台服务消息,都可以显示到控制台上,但不会显示到终端上。
现在由于计算机硬件越来越便宜,通常都是一个人独占一台计算机超做,不再连接以前那种真正意义上的“终端设备了”,因此,终端和控制台的概念也慢慢演化了。终端和控制台由硬件的概念,演化成了软件的概念。现在我们提到终端大多都是虚拟终端,在我的CentOS7中一共有6个虚拟控制台终端,分别对应设备文件/dev/tty1----/dev/tty6(控制台“Alt”+“Fx”能够切换到第x个(字符哑)终端。如果需要从X-Window里跳到第(字符哑)终端,需要“Ctrl”+“Alt”+“Fx”),其中/dev/tty1是图形控制台,其他的都是命令行控制台。还有一个设备文件/dev/tty0表示当前控制台,也就是当前你在使用哪个控制台,tty0就表示那个控制台。还有一个设备文件/dev/console好像是和tty0关联在一起的,貌似也可以表示当前控制台。
下面是一个简单的实验:首先我位于图形界面的控制台,然后按下Ctrl+alt+F2这个时候就进入了/dev/tty2所关联的控制台终端。如图:

然后我们登录用户。

这个时候我们可以用tty命令查看一下当前终端名称

发现确实是/dev/tty2
我们像/dev/tty0写入一句话:(需要root权限)

我们发现在这个控制台终端中显示了我们写入的话,这是应为/dev/tty0就表示当前控制台终端。
我们向/dev/console中写入,同样也会在当前控制台终端中显示。

貌似就是应为/dec/console和/dev/tty0是关联的。
下面我们打开一个新的字符控制台终端,alt+F3,然后试着在/dev/tty2所关联的控制台终端中,像tty2文件中写入一句话,看产生什么效果:
tty2所表示的终端中。

这是我们切换到tty3所表示的控制台终端中,发现已经输出了hello,world

上面这些就是控制台终端。。。。。。
在图形界面的控制台终端中,还提供了无数个虚拟终端(就是我们可以用右键-》在终端中打开,弹出的那个可以输入字符,显示输出的窗口。),这些虚拟终端对应的设备文件在/dev/pts/中
我们可以右键-》在终端中打开,来打开一个虚拟终端,然后执行tty命令,看看终端设备的名称

发现叫/dev/pts/0。
然后我们再用同样的方法打开一个终端

没错这次叫/dev/pts/1了,以此类推,依次打开的就是/dev/pts/2....
我们试着在/dev/pts/0中向/dev/pts/1中写入一句话:

我们会发现在第二个打开的终端窗口中,显示了我们输入的话。
我们也可以试着在第一个打开的终端窗口(/dev/pts/0)中,向/dev/tty2写入一句话:

然后我们切换到该控制台,发现我们输入的话已经在这个控制台终端输出了。

最后介绍一下设备文件/dev/tty,这个文件在程序中经常使用。由于程序可能运行在不同的终端中,但是程序没有必要知道究竟在哪一个终端中运行。如果程序需要与终端打交道,那就和/dev/tty打交道吧!因为这个文件始终关联当前终端。!!
就写到这里了,都是些不成熟,甚至也可能是不争取的想法,希望对你有帮助。不对的地方还请指教,谢谢~~
参考了:http://blog.csdn.net/boldeagle/article/details/2610671
http://www.cnblogs.com/wi100sh/p/4513245.html
Linux中终端和控制台的一些不成熟的理解的更多相关文章
- Linux中终端和控制台区别
Linux中终端和控制台区别: 终端:英文名叫terminal 控制台:英文名叫console 两者区别要从以前的多人使用的计算机开始 以前,由于计算机很昂贵,所用一台计算机一般由多个人同时使用.这样 ...
- linux中终端控制键Ctrl+C,Ctrl+Z,Ctrl+D的使用场合
1.Ctrl+C比较暴力,就是发送Terminal到当前的程序,比如你正在运行一个查找功能,文件正在查找中,Ctrl+C就会强制结束当前的这个进程.2.Ctrl+Z是把当前的程序挂起,暂停执行这个程序 ...
- linux中终端字体样式显示不正常
问题:Centos终端中,字体显示不正常,中间感觉有空格,空格和单词傻傻分不清. 解决办法: yum groupinstall "Chinese Support" yum grou ...
- linux字符终端(控制台)的字体更改
查看已安装的终端字体 ls /usr/share/consolefonts/ 设置终端字体 sudo dpkg-reconfigure console-setup 或者 sudo vim /etc/d ...
- 关于Unix/Linux的终端、伪终端、控制台和shell
历史是什么:是过去传到将来的回声,是将来对过去的反映. ——雨果(法)<笑面人> 阅读本文大概需要花费你15分钟 文章导航: 计算机的发展 UNIX系统的诞生 UNIX系统的发展 终端与控 ...
- linux中使用Python IDE pycharm教程
今天使用vim编辑Python 并在linux中终端调试的时候,发现每次不是自己想要输出结果的时候,就要用vim编辑代码,再重新回到终端,比较浪费时间.搜索发现pycharm这一个Python ide ...
- 在Windows的控制台和Linux的终端中显示加载进度
Windows中 #include <stdio.h> #include <windows.h> int main() { ;//任务完成总量 int i; ; i < ...
- 【转】linux下tty,控制台,虚拟终端,串口,console(控制台终端)详解----不错
原文网址:http://blog.csdn.net/liaoxinmeng/article/details/5004743 首先: 1.终端和控制台都不是个人电脑的概念,而是多人共用的小型中型大型计算 ...
- 在Linux的终端中显示BMPString的内容
在上一篇博文中,介绍了怎样在 Windows 的控制台界面下输出 BMPString 的内容,可是那里的方法在 Linux 下不适用.假设将那里的演示样例代码放到 Linux 下运行.输出的结果为乱码 ...
随机推荐
- Java内存模型(二)
volatile型变量的特殊规则 volatile是Java虚拟机提供的最轻量级的同步机制,当一个变量被定义成volatile后,它将具备两种特性,第一是保证此变量对所有线程的可见性,这里的“可见性” ...
- 树和二叉树在java中
树代表一种非线性的数据结构,如果一组数组节点之间存在复杂的一对多关联时,程序就可以考虑使用树来保存这组数据了. 线性表.栈和队列都是线性的数据结构,这种数据结构之内的元素只存在一个对一个的关系.存储, ...
- sqlserver错误2,error 40
打开配置管理器:开始-> sqlserver2014->配置工具->配置管理器 选择sqlserver服务,并将右侧箭头的指向右击设为启动就OK了
- PHP/ThinkPHP5 框架集成微博登录入库流程示意
PHP/ThinkPHP5 框架集成微博登录入库流程示意 第三方登陆这个东东,目前主要是 微信.微博.qq.淘宝.支付宝 等几个.他们都是基于oath2协议的.原理差不多.这里记录的是我测试的新郎微博 ...
- 第二章 ConcurrentHashMap源码解析
注:在看这篇文章之前,如果对HashMap的层不清楚的话,建议先去看看HashMap源码解析. http://www.cnblogs.com/java-zhao/p/5106189.html 1.对于 ...
- day74天中间件介绍
一. importlib settings 执行结果: 两个process_request process_response按照注册顺序的倒叙进行执行 PROCESS_VIEW Process_v ...
- Day4 作业
a=[1,2,3,6,"dfs",100]s=a[-1:]print (s)答案:[100] s=a[-1:0:-1]print(s) 答案:[100, 'dfs', 6, 3, ...
- BroadcastReceive的使用
一.注册方式 intent.setAction("BC_One"); 1.静态注册 <receiver android:name = "继承BroadcastRe ...
- Android Studio - 如何停止logcat不断滚动信息?
今天升级了一下Android Studio,升级之后准备调试程序,发现logcat里面不断滚动各种信息,我想调试程序非常困难了!滚动信息截图: 如何阻止自动出现的各种滚动信息,只显示我正在开发工程的调 ...
- 在VMware 14中安装Centos7
在VMware 14中安装Centos7 一.安装前准备 安装VMware14.1 Centos7 64位镜像下载 在VMware中安装Centos7的步骤为: 1.创建虚拟机 创建虚拟机有两种方式: ...