这是什么意思“类型ant 1> / dev / null”?

时间:2012-08-20 05:38:41

标签: unix

我在Unix中探测。

我想知道这意味着什么?

type ant 1>/dev/null
moduledir=`dirname $0`

感谢。

2 个答案:

答案 0 :(得分:1)

第一行中的

1>/dev/nullSTDOUT(标准输出)重定向到/dev/null。这意味着在运行type ant命令后,屏幕上只会显示错误(如果存在)。

第二行将moduledir变量设置为dirname $0命令的输出,$0是执行的文件名。


type基本上告诉你它的参数类型。在您的情况下,它会输出ant的路径,如下所示:ant is /usr/bin/ant

>用于流重定向。并1>重定向标准输出。

详细了解标准流here

如果一切正常,

最后type ant 1>/dev/null应该输出任何内容。

答案 1 :(得分:1)

type命令(在UNIX下,不要将其与MS-DOS / Windows'CMD.EXE混淆)将显示如果执行命令将如何解释。

以这种方式使用type,如果找不到ant not found命令/可执行文件,则会打印错误消息(例如ant)。正如其他人所说,1>/dev/null(或简称>/dev/null)将该命令写入标准输出的消息重定向到“无处”,即它们不会打印在终端/控制台上。写入标准错误流的消息仍将/将发生。看起来,该行是为了检查是否可以执行/找到ant,但是没有提供对(例如)中止脚本的相应检查,它可能是这样的(取决于你的shell,但它看起来像是一个bourne shell的味道):

 type ant > /dev/null
 [ $? -ne 0 ] && exit 1

另一个注意事项:使用bash类型命令永远不会将任何输出写入标准错误流,即使消息... not found也会写入标准输出。因此,即使在出现错误的情况下,该命令也不会输出任何内容(因为该片段无论如何都被用作检查,因此显示消息似乎是合理的。)

最后,

 moduledir=`dirname $0`

行将变量moduledir中当前正在执行的脚本的目录名称存储起来。您稍后可以像$moduledir一样引用它,例如:echo "The directory is: $moduledir

坦率地说,这两个陈述在你的问题中被隔离,没有多大意义。虽然语法正确,但它们没有更深层含义,所以人们只能推测它们的用途。你可能想考虑另一个问题,问你实际上想要实现什么,而不仅仅是发布(任意)语法。