各位看官,咱们前几回主要说了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选项可以用追加方式向文件中输入内容。
各位看官,关于标准输入和标准输出的内容,咱们都说完了。欲知后事如何,且听下回分解。