/dev/tty文件在Unix操作系统中的妙用

2024-04-14 22:32
文章标签 操作系统 unix dev tty 妙用

本文主要是介绍/dev/tty文件在Unix操作系统中的妙用,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

【IT专家网独家】在Unix系统中,文件是其中最重要的资源。如标准输出文件、标准输入文件、标准错误文件等等。不过这些文件普通用户与系统工程师都需要用到。而在实际工作中,对于系统工程师来说,还需要掌握/dev/tty这个文件。

  这个文件顾名思义,主要用来表示用户的终端,但是它跟普通的终端又有差异。普通的终端是指一些硬件设备,如显示器等等。通常情况下,标准输出或者标准错误流的文件都会输出到终端中。但是,这些标准的输入输出往往不能够输入到/dev/tty文件中。而是需要通过重定向功能,把一些命令的输出重定向到这个文件中。另外需要说明的是,普通终端的话往往是每个用户之间相互独立的。也就是说,每个用户的输出彼此之间是互不干涉的。在用户A的终端中不能够看到用户B的终端信息。但是/det/tty这个文件由其特殊性。这个终端文件可以由各个用户共享。正是因为这个文件有这方面的特殊性,为此在实际工作中系统工程师经常需要用到这个文件。

  一、系统工程师常见需求描述及实现方案。

  利用这个特殊文件,可以帮助系统工程师解决很多实际问题。

  1、利用这个文件来屏蔽不需要的结果信息。通常情况下,为了提高与用户沟通界面的友好性,往往会在脚本程序中,利用echo命令向用户显示一些提示信息。如一个简单的计算器脚本程序,会提示用户输入相关的参数,如“Put onenumber”等等。有时候,还会在程序的开头显示一大堆的程序说明。这毋庸置疑,可以提高脚本程序的可读性。即方便了用户的使用,而且别的系统工程师借助这些说明也可以顺利对其进行功能上的调整与扩展。不过这也会赞成一些工作上的困扰。如当系统工程师调试脚本程序的时候,这些显示的提示信息反而会增加系统工程师的困扰,会增加他们的阅读量。因为此时用户终端上显示的将士全部的信息,即包括对于应用程序没有实际价值的提示信息,也包括一些应用程序执行过程中的错误信息。这显然会给系统工程师阅读错误信息带来一定的麻烦。另外如笔者谈过,系统工程师可以通过重定向符号把这个终端输出的信息重定向到一个文件中。可是此时这个文件中也会显示全部的信息。而这些信息大部分是系统工程师不需要看到的。系统工程师可能只需要一些相关的参数以及具体的执行结果。如10*10=100。就这么简单,而不需要看到一大堆的提示说明。而且如果这个文件中带有这么多的无用信息,对于其他脚本程序来调用这个文件也不是很方便。遇到这种情况时该如何处理呢?其实系统工程师可以轻松的通过/dev/tty文件来过滤这些无用的提示信息。如只需要把脚本程序的运行结果通过重定向服务重定向到/dev/tty文件中。在这个重定向的过程中,Unix系统的shell会采取一定的内部处理机制,会忽略掉echo等命令。也就是说,只要把命令的标准输出重定向到这个文件中,则利用echo命令设置的一些提示信息都会被忽略掉。此时在这个文件中,存储的只有一些必要的运行信息,如错误或者警告信息等等。

  2、当作其他命令的参数。/dev/tty文件不仅可以用作终端设备来管理,而且这个文件还可以被用来当作其他命令的参数。因为一个终端就相当于一个文件,为此在一些命令中如tee命令就可以拿这个文件当作参数。Tee命令是一个分流命令,其主要用途就是把一个输入流的一个副本保存到另外一个文件中。有时候这个特性非常有用。如现在系统工程师需要利用who命令来显示Unix系统的当前登录用户。同时希望把这个显示结果保存到一个特定的文件中。如果没有tee这个命令的话,则需要通过两个步骤才能够完成。首先需要利用who命令在当前终端中显示相关的结果。然后再利用who >重定向符号把这个命令的显示结果保存到一个特定的文件中。如果一开始就采用who >进行重定向的话,则在用户终端将不会显示任何信息。因为其直接把结果保存到了一个文件中。而现在系统工程师即希望把命令的结果输出到终端中,同时保存到一个文件中,就需要利用tee命令,如who | tee userinfo.txt。(注意,如果利用了tee命令的话,在可以不再使用重定向符号)。到这里为止没有涉及到/dev/tty这个文件。who | tee userinfo.txt这个命令的显示结果,只会显示当前登录的用户明细,而不会显示当前有多少个用户登录到系统中。可能或许有人回说只要数一下就可以了呀。确实数数的话可以实现,但是计算机不会自己数呀。如果其他脚本程序需要用到当前登录用户的总数而不需要明细,那么该如何处理呢?此时就需要利用/dev/tty文件作为参数了。如可以使用who | tee/dev/tty |wc –l 命令。这个命令可以把当前用户的明细以及总共的用户数量显示出来。以上这个命令其实我们可以分为四个步骤。第一步系统先执行who命令;第二步tee命令把who命令执行对结果保存到/dev/tty文件中;第三步wc命令会统计/dev/tty文件中的行数。由于一个终端对相当于一个文件,故利用wc命令可以统计出当前系统登录用户的数量。第四步再把这个统计的结果显示在终端上。所以说,把/dev/tty文件当作其他命令的一个参数,一个一起组合以实现一些比较复杂的功能。

 

这篇关于/dev/tty文件在Unix操作系统中的妙用的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/904193

相关文章

poj 3050 dfs + set的妙用

题意: 给一个5x5的矩阵,求由多少个由连续6个元素组成的不一样的字符的个数。 解析: dfs + set去重搞定。 代码: #include <iostream>#include <cstdio>#include <set>#include <cstdlib>#include <algorithm>#include <cstring>#include <cm

v0.dev快速开发

探索v0.dev:次世代开发者之利器 今之技艺日新月异,开发者之工具亦随之进步不辍。v0.dev者,新兴之开发者利器也,迅速引起众多开发者之瞩目。本文将引汝探究v0.dev之基本功能与优势,助汝速速上手,提升开发之效率。 何谓v0.dev? v0.dev者,现代化之开发者工具也,旨在简化并加速软件开发之过程。其集多种功能于一体,助开发者高效编写、测试及部署代码。无论汝为前端开发者、后端开发者

Linux操作系统 初识

在认识操作系统之前,我们首先来了解一下计算机的发展: 计算机的发展 世界上第一台计算机名叫埃尼阿克,诞生在1945年2月14日,用于军事用途。 后来因为计算机的优势和潜力巨大,计算机开始飞速发展,并产生了一个当时一直有效的定律:摩尔定律--当价格不变时,集成电路上可容纳的元器件的数目,约每隔18-24个月便会增加一倍,性能也将提升一倍。 那么相应的,计算机就会变得越来越快,越来越小型化。

列举你能想到的UNIX信号,并说明信号用途

信号是一种软中断,是一种处理异步事件的方法。一般来说,操作系统都支持许多信号。尤其是UNIX,比较重要应用程序一般都会处理信号。 UNIX定义了许多信号,比如SIGINT表示中断字符信号,也就是Ctrl+C的信号,SIGBUS表示硬件故障的信号;SIGCHLD表示子进程状态改变信号;SIGKILL表示终止程序运行的信号,等等。信号量编程是UNIX下非常重要的一种技术。 Unix信号量也可以

1、简述linux操作系统启动流程

1、简述linux操作系统启动流程 启动第一步--加载BIOS 当你打开计算机电源,计算机会首先加载BIOS信息,BIOS信息是如此的重要,以至于计算机必须在最开始就找到它。这是因为BIOS中包含了CPU的相关信息、设备启动顺序信息、硬盘信息、内存信息、时钟信息、PnP特性等等。开机时将ROM中的指令映射到RAM的低地址空间,CPU读取到这些指令,硬件的健康状况进行检查,按照BIOS中设置的启

操作系统是怎么为不同的程序分配所需的内存空间的

操作系统为不同的程序分配内存空间的过程涉及多个关键步骤,确保每个程序都有其所需的内存资源,同时避免程序之间的冲突。以下是操作系统如何为程序分配内存空间的详细过程: 1. 内存管理的基础概念 虚拟内存:现代操作系统使用虚拟内存机制来为程序提供隔离的内存空间。每个程序运行在其独立的虚拟地址空间中,这使得程序间的内存互不干扰。物理内存:实际的 RAM(随机存取存储器),由操作系统和硬件共同管理。虚拟

操作系统安全保护

操作系统安全概述 概念:满足安全策略要求,具有响应安全机制及安全功符合特定安全标准,在一定约束条件下 能抵御常见网络安全威胁,保障自身安全运行及资源安全 安全等级:根据安全功能和安全保障要求分为 用户自主保护级  系统审计保护级 安全标记保护级 结构化保护级 访问验证保护级 操作系统作用: 负责计算系统的资源管理、支撑和控制各种应用程序运行,为用户提供计算机系统管理接口 是构成网络信息

Linux操作系统命令集(一)

最近开了操作系统的课,弄着虚拟机的linux系统命令学学 文件和目录操作命令: ls:列出目录内容 示例:ls -l 以长格式列出目录内容cd:切换目录 示例:cd /home/user 切换到 /home/user 目录mkdir:创建目录 示例:mkdir new_directory 创建名为 new_directory 的目录rmdir:删除空目录touch:创建空文件或更新文件的时间戳

操作系统分页式存储管理

每次输入地址后,计算出页号,若页号越界,则给出错误提示。否则依次调用FIFO和LRU算法,这里值得注意的是,由于我们的FIFO算法先于LRU算法被调用,那么当在处理FIFO算法时,我们暂且不将位视图相应位置做变化,留到处理LRU算法再做处理。 对于FIFO、LRU算法的缺页,我们分两种情况考虑,第一种是模拟栈内还有空间,那么直接将其入栈。第二种是模拟栈内无空间,要发生置换。发生置换时把模拟栈最底

【unix高级编程系列】线程

引言 我们知道unix进程中可以有多个线程,进程中的线程可以访问该进程的所有组成部分。并且CPU的调度单元就是线程。这就面临一个问题:当进程中的临界资源需要在多个线程中共享时,如何解决一致性问题? 本文将从线程的概念、线程的使用方式、unix提供哪些方式解决一致性问题进行介绍,加深对线程的理解。 线程概念 线程的优点: 简化代码结构。比如在业务上为每种事件类型分配单独的处理线程,可以