获取/ dev / null:unix中的模糊重定向错误

时间:2013-05-03 16:11:53

标签: java bash unix jar

我使用shell脚本使用bash脚本从UNIX中的JAR文件列表中查找包含类文件的文件:

find . -name "*.jar" -exec bash -c 'jar -tf {} |grep -H --label {} GenericClassLoader' \;

但我得到的错误是:

java.util.zip.ZipException: error in opening zip file
        at java.util.zip.ZipFile.open(Native Method)
        at java.util.zip.ZipFile.<init>(ZipFile.java:131)
        at java.util.zip.ZipFile.<init>(ZipFile.java:92)
        at sun.tools.jar.Main.list(Main.java:997)
        at sun.tools.jar.Main.run(Main.java:242)
        at sun.tools.jar.Main.main(Main.java:1167)

我正在接受这篇文章的帮助:Find for a class file in Linux that is present in JAR

为了避免错误,我将查询修改为:

find . -name "*.jar" -exec bash -c 'jar -tf {} 2>&/dev/null |grep -H --label {} GenericClassLoader' \;

但我开始得到以下错误:

bash: /dev/null: ambiguous redirect

请帮我解决这个问题,我的命令有什么问题。

1 个答案:

答案 0 :(得分:2)

由于您编写的重定向,您应该使用2> /dev/null重定向,将stderr发送到/dev/null(如果这是您想要的)。

另请注意,您没有修复错误,只是阻止它可见。

有关详细信息,请查看此处:http://tldp.org/HOWTO/Bash-Prog-Intro-HOWTO-3.html