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

sh/bash/dash/ksh/zsh等Shell脚本
回复
头像
lonelycorn
帖子: 438
注册时间: 2007-05-20 18:44
来自: 唐山,河北,中国
联系:

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

#1

帖子 lonelycorn » 2008-04-19 13:10

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

我这样改了之后发现一点用也没有
请问应当怎么修改?
上次由 lonelycorn 在 2008-04-22 22:15,总共编辑 1 次。
我逗无了奈了……
HP的本跑ubuntu还得把我折腾死。
显卡、无线/有线网卡、声卡、键盘……

代码: 全选

while :
do
  work_hard
done
头像
chinayem
帖子: 70
注册时间: 2007-06-11 21:08
来自: 江南水乡

#2

帖子 chinayem » 2008-04-19 16:07

默认的标准输出是输出到终端的,就和你说的第一行代码一样
而第二个代码中有了">",就把标准输出重新定向到/dev/null这个文件里啦,自然就不在终端里显示了呀
头像
lonelycorn
帖子: 438
注册时间: 2007-05-20 18:44
来自: 唐山,河北,中国
联系:

#3

帖子 lonelycorn » 2008-04-19 19:43

可是关键问题就在于,我把输出重定向到了/dev/null但是还是在屏幕输出了。
我逗无了奈了……
HP的本跑ubuntu还得把我折腾死。
显卡、无线/有线网卡、声卡、键盘……

代码: 全选

while :
do
  work_hard
done
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙

#4

帖子 eexpress » 2008-04-19 19:53

man bash 看完。看3次。
这些不理解的话。lin的好处少了一半。巨多软件等你用这些。
● 鸣学
fhqijeg
帖子: 9
注册时间: 2007-01-05 3:04

#5

帖子 fhqijeg » 2008-04-22 0:22

"command" 2>/dev/null
头像
lonelycorn
帖子: 438
注册时间: 2007-05-20 18:44
来自: 唐山,河北,中国
联系:

#6

帖子 lonelycorn » 2008-04-22 12:19

现在我真的很郁闷。man bash的翻译令我恐惧。本来语文就是平均分,这篇又是这么晦涩难懂,而且 也没有什么样例。况且我也没什么时间。
我逗无了奈了……
HP的本跑ubuntu还得把我折腾死。
显卡、无线/有线网卡、声卡、键盘……

代码: 全选

while :
do
  work_hard
done
头像
BigSnake.NET
帖子: 12522
注册时间: 2006-07-02 11:16
来自: 廣州
联系:

#7

帖子 BigSnake.NET » 2008-04-22 12:24

xxx已终止 是bash本身写的, 重定向没用
^_^ ~~~
要理解递归,首先要理解递归。

地球人都知道,理论上,理论跟实际是没有差别的,但实际上,理论跟实际的差别是相当大滴。
头像
bones7456
帖子: 8495
注册时间: 2006-04-12 20:05
来自: 杭州
联系:

#8

帖子 bones7456 » 2008-04-22 12:29

上面已经有人说了,改成:

pkill xxx 2>/dev/null
关注我的blog: ε==3
头像
sevk
帖子: 2060
注册时间: 2007-05-08 16:26
系统: arch
来自: 火星内核某分子内某原子核内
联系:

#9

帖子 sevk » 2008-04-22 12:29

pkill xxx &>/dev/null 这句中的 & 表示执行完了再执行 后面的?
笔记本 :
F208S : gentoo
A460P i3G D6 : UBUNTU + WIN7
UN43D1 : UBUNTU + WIN7
1000人超级QQ群 LINUX + WIN : 31465544 或 18210387
头像
BigSnake.NET
帖子: 12522
注册时间: 2006-07-02 11:16
来自: 廣州
联系:

#10

帖子 BigSnake.NET » 2008-04-22 12:38

set +m 可以关掉任务控制, "xxx 已终止"的信息也不会输出
但是 & 运行时那个 PID 还是会输出来的..
^_^ ~~~
要理解递归,首先要理解递归。

地球人都知道,理论上,理论跟实际是没有差别的,但实际上,理论跟实际的差别是相当大滴。
头像
lonelycorn
帖子: 438
注册时间: 2007-05-20 18:44
来自: 唐山,河北,中国
联系:

#11

帖子 lonelycorn » 2008-04-22 22:14

BigSnake.NET说的对,这一行是bash自己产生的
我已经解决这个问题了
只要这样:

代码: 全选

{ pkill xxx &>/dev/null }&>/dev/null
这样这一句“废话”就被重定向到/dev/null了。
我逗无了奈了……
HP的本跑ubuntu还得把我折腾死。
显卡、无线/有线网卡、声卡、键盘……

代码: 全选

while :
do
  work_hard
done
回复