我使用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
请帮我解决这个问题,我的命令有什么问题。
答案 0 :(得分:2)
由于您编写的重定向,您应该使用2> /dev/null
重定向,将stderr
发送到/dev/null
(如果这是您想要的)。
另请注意,您没有修复错误,只是阻止它可见。
有关详细信息,请查看此处:http://tldp.org/HOWTO/Bash-Prog-Intro-HOWTO-3.html