在Unxi操作系统中,标准输入和标准输出是外壳程序中可以单独使用的两个独立流。但是有时候系统工程师需要让某些特定的输入源不起作用。当系统工程师在开发一些实用的脚本程序的过程中,经常需要用到。

一、在什么时候需要让输入源不起作用?

在什么时候需要让输入源不起作用呢?这个是举不胜举呀。笔者在这里就举两个比较简单的例子。

一是在统计文件大小的时候需要用到。如现在系统工程师需要统计当前目录下所有文本文件的大小,通常情况下可以使用wc –c *.txt命令。利用这个命令后,操作系统会显示当前目录下所有的文本文件以及对应的大小,然后在最后以行再统计文本文件的总大小。但是在编写一些脚本程序的时候可能只需要用到文件的总大小即可,而不需要每个文件的大小。如在Unix操作系统上部署了Oracle数据库以后,会产生一些日志文档。数据库管理员为了安全等方面考虑,需要定期对这些日志进行清理。此时数据库管理员可能要求Unix系统工程师让操作系统每天统计一下这些日志文件的大小,当这些文件的容量达到一定的数值时就能够自动通知数据库管理员让他进行处理。由于这个脚本程序中涉及到一个逻辑判断的问题,为此在返回的结果中只需要有最终的文件总大小即可。如果又有明细、又有总大小的话,反而不能够用来做逻辑运算符的参数。所以此时需要让某些输入源不起作用。类似的情况还有很多。如在编写磁盘限额管理工具时,当用户从网络上或者其他地方下载复制文件之前,先需要统计目标文件的总大小。如果目标文件的总大小要比可用的空间少的话,那么就直接拒绝,而不是等到放不下的时候再向用户说明。这就会浪费用户的时间。此时也只需要用到一个文件的总大小即可。

二、是需要过滤一些错误信息输入流。

如在使用find命令查找文件的时候,如果需要查找的目录当前用户没有相关的权限,则系统提示一些错误信息。但是如果当用户的权限比较小而且用户又在整个操作系统内查找的话,则错误信息就会比较多,会影响用户的阅读。此时也需要让这些错误信息输入流不起作用。

综上所述,在很多地方都需要让输入源不起作用。那么在Unix操作系统中是如何实现这个目标的呢?

三、如何通过管道符让输入源不起作用?

在Unix操作系统中,可以通过管道符来让某些输入源不起作用。Unix操作系统中的管道是指标准输入和标准输出的第三种源和目标。简单的说,管道符可以把标准输入流与标准输出流进行合并;或者把某个命令的标准输出流作为另外一个命令的标准输入流。而这个管道符跟其他命令结合使用的话,能够实现一些比较复杂的需求。

如现在系统工程师想统计Oracle数据库目录下文本文件的大小,那么系统工程师就可以先切换到Oracle数据库的目录下,然后使用cat *.txt | wc –c命令。这个命令就是通过管道符把两个基本命令结合起来,让操作系统显示文件总的大小。那么这个命令具体是如何实现这个功能的呢?

首先,cat *.txt命令会把当前目录下所有txt文件进行合并。Cat命令主要用来读取文件的内容。这个命令可以同时打开多个文件。如果同时打开多个文件的话,则 cat命令会把文件的内容进行合并。即把第二个文件的内容直接加入到第一个文件的后面。在中间的话不会加入任何提示符。虽然这对于阅读可能不怎么方便的,但是却最真实的反映出来了文件本身的内容,没有经过任何的修饰。

其次管道符的作用就是把cat命令的标准输出流当作wc命令的一个标准输入流。而wc命令加上-c选项就是用来统计标准输入流的大小。所有这个命令就可以统计出Oracle目录下所有txt文件的大小,而不是统计每个文件的大小。也就是说起到了让某系输入源不起作用的目标。得到这个数值之后,系统工程师就可以通过IF判断语句或者其他命令来实现一些特定的目的。

四、管道符的使用有哪些注意事项?

管道符是Unix操作系统中的一个重要工具,是Windwos操作系统不具备的一个重大改进。众所周知,Unix操作系统在设计的时候,遵循的是小就是没的设计原则,每个命令只完成一些简单的功能。如上面这个例子中,Unix操作系统设计者完全可以在wc命令中加入一个参数,让wc命令只显示最终结果,而不显示明细。但是设计者却没有这么做。因为如果要这么处理的话,那么就需要给很多命令都加入这个选项。那就破坏了Unix操作系统小即是美的设计原则。为此Unix系统设计者推进系统工程师采用管道符把多个流合并起来,让一个命令的输出作为另一个命令的输入,来实现命令之间的组合。为此管道符是 Unix操作系统中的核心。基本上每一个实用的脚本程序都能够看到管道符的存在。为此作为系统工程师,必须要了管道符的用法。根据笔者的经验,从理论上来说管道符很简单。在任何一本教科书上,对于管道符的介绍估计都不会超过五页。但是管道符的内容远远比这些书上说的要多。也就是说,系统工程师要用好管道符,主要是要靠日后工作中经验的积累。说句比较具有哲理的话,就是管道符的应用只可意会、不可言传。为此笔者觉得管道符的应用效果直接跟系统工程师的工作经验有关。为此笔者建议,大家要提高对管道符的认识的话,那么最好的方法就是去看一些过来人编写的脚本程序。从这些脚本程序中,系统工程师可以有不少的收获。笔者现在也经常看一些恐龙级专家所编写的程序,还往往能够从中学到一些管道符的应用经验。总之,从书本上基本上学不到管道符的高级技巧。要成为一个管道符应用的高手,夺取观摩专家写的程序是一个捷径。

另外笔者再跟大家介绍一条管道符应用的基本规则。掌握这条规则无论是对于大家观摩其他人写的程序,或者是自己在用到管道符时都非常的有用。这条规则就是管道符左侧的命令必须使用标准输出,而右侧的命令必须使用标准输入。也就是说,系统工程师看到一个比较复杂的命令,有五六个管道符组成。此时不用慌,只需要从左到右一个个看下去即可。前一个命令是一个标准输出,其输出的结果就是下一个命令的输入参数,以此类推即可。

通过管道符可以把一些简单的命令组合起来实现复杂的功能。为此有些专家也把Unix操作系统形象的比喻从搭积木的游戏。一个个小木块就是 Unix操作系统的命令,如果把这些木块通过插口(管道符号)把他们组合成一个好看的模型玩具(负责的功能),这不仅要求用户有比较扎实的基本知识,了解各个命令的用法;而且还要求系统工程师具有一定的想象力。因为只有具有想象力,才能够把本来互不相关的命令结合起来,以完成一些复杂的功能。恐怕这也是 Unix操作系统对于系统工程师提出的一个比较特殊的要求。其他开发语言或则操作系统对于这方面的要求估计都没有Unix操作系统这么强烈。为此系统工程师在使用管道符的时候,要具有创造性,要敢于尝试。

为此笔者认为系统工程师在使用管道符的时候,要善于从其他专家的程序中取经、要善于想象,并遵循管道符应用的基本规则。只有如此,系统工程师才有可能成为管道符应用层面的专家。

五、有否其他的解决方式?

通过管道符可以让某些输入源不起作用。不过在Unix操作系统中还提供了一个特殊的文件,也可以实现过滤的作用。这个文件就是/dev /null文件。这是Unix操作系统中的一个特殊文件,其回接受任何流的输入,但是不会增加文件的大小。但是这个文件的用途远远没有管道符的作用大。通常情况下,如果用来过滤一些标准的错误信息,那么采用这个文件的话比较合适。在其他情况下如果要让输入源不起作用的话,那么笔者建议系统工程师利用管道符来实现。

更多信息请访问:大家论坛

linux命令管道符号作用,linux认证:unix中管道符让输入源不起作用相关推荐

  1. linux命令fsck和fcsk,在ubuntu中shutdown和reboot的各参数的作用是什么? | 星尘

    shutdown参数 :   -t seconds : 设定在几秒钟之后进行关机程序   -k : 并不会真的关机,只是将警告讯息传送给所有只用者   -r : 关机后重新开机   -h : 关机后停 ...

  2. [笔记]快乐的Linux命令行《二》文件系统中跳转

    系列文章目录 [笔记]快乐的Linux命令行<一>LInux系统简介以及什么是shell [笔记]快乐的Linux命令行<二>文件系统中跳转 文章目录 系列文章目录 前言 一. ...

  3. linux 命令run road,linux命令进阶

    Though unconsciously,peple are indeed moving towards their destination.Slow as the progress seen fro ...

  4. Linux命令篇 linux命令大全简洁明了 linux学习笔记

    Linux命令篇 linux命令大全简洁明了 linux学习笔记 Linux 命令大全 文章目录 Linux 命令大全 一. 常用的基础命令 查看目录: 切换目录: 创建和删除: 拷贝和移动文件: 查 ...

  5. 使用linux命令查看进程,Linux查看进程命令有哪些

    我们在使用Linux系统的过程中,有的时候会需要查看后台进程,并选择性的关闭一些不用的进程,那么Linux中有哪些查看进程的命令呢?今天小编就来为大家总结整理一些常用的Linux查看进程命令. Lin ...

  6. 每天一个linux命令(25):linux文件属性详解

    每天一个linux命令(25):linux文件属性详解 Linux 文件或目录的属性主要包括:文件或目录的节点.种类.权限模式.链接数量.所归属的用户和用户组.最近访问或修改的时间等内容.具体情况如下 ...

  7. Linux命令集(Linux文件管理命令--rm指令篇)

    Linux命令集(Linux文件管理命令--rm指令篇) Linux文件管理命令集(rm指令篇) 3. rm(remove) 1. 删除文件 2. 强制删除文件 3. 提示确认,删除前需逐一询问是否确 ...

  8. Linux命令集(Linux文件管理命令--rmdir指令篇)

    Linux命令集(Linux文件管理命令--rmdir指令篇) Linux文件管理命令集(rmdir指令篇) 5. rmdir(remove directory) 1. 删除空的目录 folder1 ...

  9. Linux命令集(Linux常用命令集--CD指令篇)

    Linux命令集(Linux常用命令--CD指令篇) Linux常用命令集(CD指令篇) 1.CD(change directory) Linux常用命令集(CD指令篇) 如下为笔者总结出在linux ...

最新文章

  1. C#取整函数Math.Round、Math.Ceiling和Math.Floor
  2. winsows10下用ninja编译配置caffe
  3. 如何编写一份SOP?
  4. 函数域中申请堆空间出函数后不会自动释放
  5. 取地址符和解引用符的区别_(&)和解引用(*)运算符的地址以及C中的指针...
  6. java web 多语言_基于 Selenium WebDriver 实现多语言环境下自动化截图
  7. 20 图|Nacos 手摸手教程
  8. 玄学小记.5 ~ Bluestein's algorithm
  9. 《深入浅出DPDK》读书笔记(九):流分类与多队列、流过滤、虚拟化流分类方式、流分类技术的使用
  10. 【报告分享】2021年网生代线上社交行为洞察报告:95后、00后社交江湖大揭秘.pdf(附下载链接)...
  11. 但是的近义词是什么,怎么用但是造句?
  12. 最短路径VS最小生成树
  13. 设计模式六大原则,你真的懂了吗?
  14. 噪音测试软件+安卓,分贝噪音测试软件
  15. 脑洞大开!把 14 亿中国人拉到一个微信群 ?
  16. Android音频压缩方法
  17. python解压rar、zip压缩包
  18. 使用CSS3实现按钮特效
  19. 外包两年,进了字节后才明白为什么所有人都想进字节,区别真的太大了
  20. 蓄电池内阻测量系统设计

热门文章

  1. HDU 2222 Keywords Search【ACAM】
  2. matlab数据如何平移,【Excel表格如何整体移动一行或一列?】Excel数据平移法
  3. [附源码]Java计算机毕业设计SSM黑河市劳务人员管理系统
  4. 男友职业排行榜,程序员排第几?
  5. index.php是什么程序,浏览器打开index.php发生了发什么?
  6. 工具推荐_mathcha、Mathpix 快速编写数学公式
  7. VSCode——SSH免密登录
  8. PPT文字内容如何添加删除线
  9. node安装教程详解
  10. 南京邮电大学微型计算机原理,南京邮电大学微型计算机原理与接口技术5-01章.ppt...