精华区 [关闭][返回]

当前位置:网易精华区>>讨论区精华>>电脑技术>>● FreeBSD>>《FreeBSD使用大全》第二版>>3.4.1 输入输出重定向和管道

主题:3.4.1 输入输出重定向和管道
发信人: sungang(笨刚)
整理人: sungang(2003-09-16 11:43:48), 站内信件
3.4.1 输入输出重定向和管道

3.4.1 输入输出重定向和管道

Unix下使用标准输入stdin和标准输出stdout,来表示每个命令的输入和输出,还使用一个标准错误输出stderr用于输出错误信息。这三个标准输入输出系统缺省与控制终端设备相联系在一起的。因此,在标准情况下,每个命令通常从它的控制终端中获取输入,将输出打印到控制终端的屏幕上。

但是也可以重新定义程序的输入stdin和输出stdout,将它们重新定向。最基本的用法是将她们重新定义到一个文件上去,从一个文件获取输入,输出到另外的文件中等。

$ ls > ls.out

$ cat < ls.out

这种输入输出重定向带来了极大的灵活性,可以将输出结果记录下来,也可以将程序所需要的输入使用文件提前准备就绪,这样一来多次执行就不需要重新输入。

$ echo “today is “ > out

$ date >> out

使用>>标记表示输出结果采用添加的方式,将结果附加在文件out后面,而不是简单的将原有文件重新覆盖的方式。

更为灵活的方式是将输入输出和一个执行命令联系起来,而不是一个固定的文件。

$ ls -l | grep mbox

上面的命令,将ls -l的输入作为grep的输入,这种方式称为管道。Unix提供了很多功能强大的小命令,但使用管道将这些命令组合起来,就形成了非常强大的工具组合,能完成非常复杂的工作。

Unix系统提供了一些特殊的设备文件,用在一些特殊情况下。例如一个特殊设备文件为/dev/null,永远无法写满,写入的内容被系统立即丢弃。如果不想看到程序的输出,可以使用它作输出。

$ make world > /dev/null

去除了屏幕输出,使整个程序执行过程非常平静。

[关闭][返回]