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 下运行.输出的结果为乱码 ...
随机推荐
- Back to December -- Taylor Swift
Back to December 泰勒·斯威夫特(Taylor Swift),美国乡村音乐女创作歌手,会用木吉他.钢琴演奏. 曾获得美国乡村音 ...
- cocos studio
用了几天,和之前用的cocos creator以及unity的编辑器一对比,很多地方都挺反人类的哈... 拖拽和放大场景元素竟然还要切换一下编辑模式... 移动场景元素竟然没有单独控制x或者y方向的移 ...
- INNER JOIN与LEFT JOIN在SQL Server的性能
我创建了INNER JOIN 9桌,反正需要很长的(超过五分钟).所以,我的民歌改变INNER JOIN来LEFT JOIN LEFT JOIN的性能较好,在首次尽管我所知道的.之后我变了,查询的速度 ...
- 【加密算法】SHA
一.简介 安全散列算法(英语:Secure Hash Algorithm,缩写为SHA)是一个密码散列函数家族,是FIPS所认证的安全散列算法.能计算出一个数字消息所对应到的,长度固定的字符串(又称消 ...
- C#使用MongoDb来存储文件
近期在写一个小玩意,需要保存一些图片,以前我采用的是FTP或者直接数据库保存文件,用FTP来保存文件感觉比较麻烦,用数据库吧,还要改字段类型,修改代码,修改查询语句,懒得改. 以前看过mongonDb ...
- 【cocos2d-x 仙凡奇缘-网游研发(1) 登录&注册】
转载请注明出处:http://www.cnblogs.com/zisou/p/xianfan01.html 公司的项目总算告一段落了,年前憋到年后,总算要上线了,所以我也有了时间来搞我自己的游戏项目了 ...
- idea破解方式 附jar包
在安装了idea之后 去安装目录找到安装目录的 idea.exe.vmoptions 和 idea64.exe.vmoptions 两个文件在文件最后面追加上 -javaagent:C:/破解补丁的名 ...
- 关于Boolean()
Boolean(value); 如果省略 value 参数,或者设置为 0.-0.null."".false.undefined 或 NaN,则该对象设置为 false. 否则设置 ...
- 【wireshark】插件开发(三):Lua插件 Dissector
// TODO: 部分内容需要修改 1. 骨架 首先新建一个文件,命名为foo.lua,注意此文件的编码方式不能是带BOM的UTF8,否则wireshark加载它时会出错(不识别BOM): -- @b ...
- css之IE hack 方法[ IE6 - IE9]
ps: 由于近来需要研究IE下兼容问题,今天又再次翻起起这些针对IE的hack,于是决定写下这篇笔记,记录下这些本该献祭级浏览器下的处理方法,用于备忘 一.IE10以及以下版本均会生效(ie edge ...