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 下运行.输出的结果为乱码 ...
随机推荐
- hdu1089 Ignatius's puzzle
题目 其实这道题不是很难,但是我刚开始拿到这道题的时候不知道怎么做, 因为这个式子我就不知道是干什么的: 65|f(x) 百度解释(若a/b=x...0 称a能被b整除,b能整除a,即b|a,读作& ...
- 【lazy标记得思想】HDU3635 详细学习并查集
部分内容摘自以下大佬的博客,感谢他们! http://blog.csdn.net/dm_vincent/article/details/7769159 http://blog.csdn.net/dm_ ...
- [ajax] quick double or multiple click ajax submit cause chrome explorer's error snatshot
快速点击ajax提交,引发的错误截图1: snapshot -2:
- 获取Oracle EBS数据库跟踪文件方法
http://www.orapub.cn/posts/1624.html 一.以下在Oracle APP中执行: 1) Set the Profile Option: ‘Initialization ...
- [leetcode] 18. Length of Last Word
这个题目很简单,给一个字符串,然后返回最后一个单词的长度就行.题目如下: Given a string s consists of upper/lower-case alphabets and emp ...
- RandomForest in Spark MLLib
决策树类模型 ml中的classification和regression主要基于以下几类: classification:决策树及其相关的集成算法,Logistics回归,多层感知模型: regres ...
- jenkins 后台程序运行
# 背景 jenkins持续集成,需要任务后台执行(nohup执行)结果发现jenkins的job执行完后,看不到运行的进程 # 步骤 原因就是这么一个情况:Jenkins任务结束时候自动关掉了所有的 ...
- AbpZero之企业微信---登录(拓展第三方auth授权登录)---第一步:查看AbpZero的auth第三方登录的底层机制
在AbpZero框架中,auth登录接口位于Web.Core库下的Controllers文件夹的TokenAuthController.cs的ExternalAuthenticate方法 Extern ...
- clang 编译 OC
clang -fobjc-arc -framework Foundation helloworld.m -o helloworld.out OVERVIEW: clang LLVM compiler ...
- Flask从入门到精通之MySQL数据库操作
前面的章节中我们已经学习了如何建立模型和关系,接下来我们学习如何使用模型的最好方法是在Python shell 中实际操作.并将介绍最常用的数据库操作. 一.创建表 首先,我们要让Flask-SQLA ...