Chinaunix首页 | 论坛 | 博客
  • 博客访问: 652679
  • 博文数量: 90
  • 博客积分: 1201
  • 博客等级: 少尉
  • 技术积分: 2048
  • 用 户 组: 普通用户
  • 注册时间: 2010-07-09 14:28
文章分类

全部博文(90)

文章存档

2013年(10)

2012年(80)

分类: LINUX

2013-01-15 16:17:30

“重定向”是shell脚本中一个比较重要的知识点!简单来说,就是把一个命令或脚本中的输出重新“挪到”另一个地方,而不是输出到标准输出。在linux中,所谓的标准输出就是文件描述符为“1”的输出。还记得C语言中的printf()函数吗?他就是把内容输出到标准输出的!看一下这段程序:

------------------------------------------------------------------------

#include

int main()

{

          printf("hello,world!\n");

}

------------------------------------------------------------------------

上述的程序会再屏幕上输出hello,world!这里的屏幕就是标准输出!

当然,在shell脚本中和C语言中有异曲同工之妙!只不过不是printf()函数而已!而是echo或者printf!

例如:

在linux的命令提示符下直接键入:

echo hello,world!

然后,回车!

看一下输出结果:

看到了吗?

当然,上面的命令在默认的情况下输出到标准输出的!所以我们能在屏幕上看到“hello,world”。

下面就来看看怎么把标准输出重定向到另外一个地方!这样,就不会在屏幕上显示出来了!

看一下这个:

看到这里,你也许就纳闷儿了!我的“hello,world!”到哪里去了?后面的temp.txt又是什么东东?

what a fucking command!

好了,我们来看看,我们的“hello,world!”到底去了哪里?


看到了吗?我用cat命令把temp.txt中的内容输出到了标准输出了!注意了:这里又是标准输出哦!

明白了吧?原来echo hello,world! > temp.txt这条命令是把"hello,world!"输出到了temp.txt文件中了!也就是重定向到了temp.txt文件中了!呵呵!懂了吗?

再来看一下:

看到了这条命令中我框出来的地方了吗?是不是和上一条命令中有点不一样?多了一个“1”!其实"1>"和">"是一样的东西!就表示标准输出重定向到另外一个地方!

看到这里,你应该就明白了好多了吧!当然了,这是最基本的了!还是比较好理解的。

如果,你想把标准输出直接扔掉,不想输出到任何地方!你可以这样来做:


这样子,你就再也找不到“hello,world!”了。注意/dev/null在linux下是一个“垃圾场”,只要你不要的东西,你都可以扔到里面去,例如:

这样子会输出来很多东西!如果你嫌他烦,你可以这样子:

嘿嘿,输出是不是不见了!好了,关于重定向的输出问题就介绍到这了!

阅读(5778) | 评论(2) | 转发(1) |
给主人留下些什么吧!~~

ning_lianjie2013-01-16 17:15:44

博主只说了重定向的几种表现,对于用过重定向没有什么帮助.建议博主,整理一下文件描述符,标准输出,标准错误输出,exec命令如何更好的利用标准错误输出以及/dev/null是什么.

guofeng20682013-01-16 15:36:02

把输出都扔了,那要得到的结果没有啦。。