Linux程序设计(Linux shell编程十二)


各位看官,咱们前几回主要说了Linux shell编程中的脚本输入和输出,咱们今天说Linux系统中的标

准输入和标准输出。脚本的输入和输出,主是说如何把内容读取到脚本中,如何从脚本中输出内容。这种

输入和输出是围绕脚本来说的。标准输入和输出是针对Linux系统来说的。希望大家不要混淆。另外,咱

们还会介绍一下管道,它经常和输入/输出配合使用。


各位看管咱们先说一说标准输入,标准输出以及管道是什么,然后再说如何使用它们。


标准输入:通常指键盘,广义上来说指具有输入功能的工具,比如输入板。我们可以通过键盘等输入工具

把内容输入到终端中。


标准输出:通常指显示器,广义上来说指具有输出功能的工具,比如音箱。我们可以把程序的结果通过标

准输出显示出来。通俗点说,就是把程序的结果在显示器中显示出来。


标准错误:指输出程序错误信息的地方,它通常会把错误信息输出到标准输出中,也就是显示器中。


管道:就是把输入和输出连接在一起的东西。比如喝牛奶或者冷饮使用的吸管就是一种管道。它可以把牛

奶或者饮料通过吸管送到口中。这时候来杯冷饮多好呀!这是哪位看官在说梦话呢?别想着冷饮了,你要

记着管道命令:|,tee。管道的具体用法通过例子来说明。


文件描述符:大家都知道在Linux中一切都是文件,我们可以通过文件操作符来操作文件。文件操作符是

一些从0开始的整数。Linux系统把最开始的3个数字:0,1,2分别指定给了标准输入,标准输出,标准错误。

所以我们可以通过这三个文件操作符来操作标准输入,标准输出和标准错误。


重定向符:先说一下重定向。通常情况下,标准输出是显示器,如果和我们想把程序运行的结果输出到文

件中,就是把文件当作输出,这时可以理解为把标准输出定向到了文件中。重定向操作通过重定向符来实

现。在编写程序时可以把标准输入和输出与文件进行相互重定向。当然重定向时有时候也可以和管道配合

使用。重定向符:<,>和>>.具体的用法通过例子来说明.


各位看管们标准输入和标准输出,对于使用过电脑的人来说都比较容易理解。所以咱们就不再举例子说明

了。咱们举例子来说明生如何进行重定向.


输入重定向:cat < test表示把test文件当作标准输入,就是说使用重定向符<将标准输入重定向到文件

中。这样可以将文件中的内容通过cat命令显示出来。例子如下:


新建立一个名叫test的文件,在里面输入hello,然后将其保存。在终端中输入cat < test,终端中会

输出运行结果:hello.


输出重定向:echo "hello" > test表示把test文件当作标准输出,就是说使用重定向符>将标准输出

重定向到文件中。这样可以将echo命令的运行结果输出到test文件中。例子如下:


新建立一个名叫test的文件,文件内容为空。在终端中输入echo "hello" > test。终端没有输出任

何内容,然后在终端中运行:cat test,终端中会输出运行结果:hello.


错误重定向:ls abc.sh 2> test表示把标准错误中的信息定向到test文件中,就是说使用文件描述

符2和重定向符>将标准错误的信息输出到了test文件中。例子如下:


新建立一个名叫test的文件,文件内容为空。在终端中输入ls abc.sh 2> test。终端没有输出任何

内容。大家应该知道,我们目录中没有叫abc.sh的文件,系统找不到该文件后会提示错误信息。但是终

端中没有显示任何错误信息,那么错误信息去哪儿了?错误信息被重定向到test文件中了,终端中运行以

下命令:cat test,终端中会输出运行结果:ls: cannot access abc.sh: No such file or directory


使用管道:我们来举一个使用管道的例子 ,新建立一个名叫test的文件,然后在里面输入:a b c,并且

保存该文件。在终端中输入:cat test | grep a.终端会显示:a b c。而且a会被高亮显示。这个例

子中,使用管道|把cat命令的结果当作grep命令的操作对象。


我们接着说tee。它会把标准输入的内容定向到tee指定的文件和标准输出中。类似T型水管,有一个输入,

两个输出。我们举个例子来说明:


新建立一个名叫test的文件,文件内容为空。在终端中输入date |tee test。终端会显示当前的日期

在终端中输入:cat test,终端中会输出当前的日期。date |tee test表示把date命令的结果通过

管道当作tee命令的输入,tee命令是一种T型管道,它除了把输入的内容输出到终端中外,还会把输入

的内容输出到test文件中。所以我们既可以在终端中看到结果,也可以在文件中保存程序运行的结果。

不过tee命令向文件中输入内容是使用的是覆盖方式,使用tee的a选项可以用追加方式向文件中输入内容。


各位看官,关于标准输入和标准输出的内容,咱们都说完了。欲知后事如何,且听下回分解。

你可能感兴趣的:(linux,shell,shell编程)