1

我是 Unix 中的探针。

我想知道这是什么意思?

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

谢谢。

4

2 回答 2

1

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

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


type基本上告诉你它的论点的类型。在您的情况下,它会输出如下路径antant is /usr/bin/ant

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

在此处阅读有关标准流的更多信息。

type ant 1>/dev/null如果一切正常,finally应该什么都不输出。

于 2012-08-20T05:40:20.570 回答
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

另一个注意事项:使用bashtype 命令永远不会将任何输出写入标准错误流,即即使消息也会... not found写入标准输出。因此,就目前而言,该命令永远不会输出任何内容,即使在出现错误的情况下也是如此(鉴于此片段无论如何都用作检查,因此显示该消息似乎是明智的)。

最后,

 moduledir=`dirname $0`

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

坦率地说,这两个陈述在你的问题中是孤立的,没有什么意义。虽然语法正确,但它们没有更深层次的含义,因此只能推测它们的用途。您可能需要考虑问另一个关于您实际想要实现的目标的问题,而不仅仅是发布(任意)语法。

于 2012-08-20T06:00:17.047 回答