分页: 1 / 1

标准输出和标准错误的重定向是什么概念?怎么使用[已解决]

发表于 : 2008-04-19 13:10
lonelycorn
我写了一个脚本用来给我写的程序测试。
其中用到了(比如进程叫做xxx
pkill xxx
可是pkill却在屏幕上输出了一些话(“xxx已终止”),严重影响美观。
我的同学说,这是标准输出/标准错误。他说应当改成
pkill xxx &>/dev/null

我这样改了之后发现一点用也没有
请问应当怎么修改?

发表于 : 2008-04-19 16:07
chinayem
默认的标准输出是输出到终端的,就和你说的第一行代码一样
而第二个代码中有了">",就把标准输出重新定向到/dev/null这个文件里啦,自然就不在终端里显示了呀

发表于 : 2008-04-19 19:43
lonelycorn
可是关键问题就在于,我把输出重定向到了/dev/null但是还是在屏幕输出了。

发表于 : 2008-04-19 19:53
eexpress
man bash 看完。看3次。
这些不理解的话。lin的好处少了一半。巨多软件等你用这些。

发表于 : 2008-04-22 0:22
fhqijeg
"command" 2>/dev/null

发表于 : 2008-04-22 12:19
lonelycorn
现在我真的很郁闷。man bash的翻译令我恐惧。本来语文就是平均分,这篇又是这么晦涩难懂,而且 也没有什么样例。况且我也没什么时间。

发表于 : 2008-04-22 12:24
BigSnake.NET
xxx已终止 是bash本身写的, 重定向没用

发表于 : 2008-04-22 12:29
bones7456
上面已经有人说了,改成:

pkill xxx 2>/dev/null

发表于 : 2008-04-22 12:29
sevk
pkill xxx &>/dev/null 这句中的 & 表示执行完了再执行 后面的?

发表于 : 2008-04-22 12:38
BigSnake.NET
set +m 可以关掉任务控制, "xxx 已终止"的信息也不会输出
但是 & 运行时那个 PID 还是会输出来的..

发表于 : 2008-04-22 22:14
lonelycorn
BigSnake.NET说的对,这一行是bash自己产生的
我已经解决这个问题了
只要这样:

代码: 全选

{ pkill xxx &>/dev/null }&>/dev/null
这样这一句“废话”就被重定向到/dev/null了。