我有一个像这样的shell脚本
cat file1.dat 2> file2.log有人能解释一下。我找了很多东西,但什么也没找到,我查过这个cat文档。但没有找到这个2>。我是一个完全新手在壳牌script.Any帮助是感谢。
发布于 2013-11-07 20:52:51
2>是一个shell结构。YOu在cat文档中找不到它。
通常(在shell上下文中),>和<字符表示重定向。箭头是用来显示流的,在您的情况下,从第一个cmd到file2.txt。shell脚本中也有比较上下文,因此<在其他情况下意味着小于,而>则大于。
在这种情况下,2>意味着将std错误输出重定向到file2.txt。
这似乎是个奇怪的构造。请注意,此代码只捕获错误消息。从cat获取错误消息的通常方法是文件不存在。
这段代码的另一个问题是,单个>表示“创建一个新的文件2.txt”(即使一个文件已经存在)。
为了你的目的,这可能就足够了。在许多情况下,人们希望看到一个活动的历史。在这种情况下,您需要使用重定向的append形式,并使用2>> file2.txt。
需要了解更多关于上下文的信息,以便对您所继承的代码为什么是这样设置做任何有意义的评论。
IHTH
发布于 2013-11-07 20:47:55
2>意味着重定向文件描述符2,这通常是stderr。然而,没有2,它是标准的。
发布于 2013-11-07 20:50:19
这就是说,将cat file1.dat的输出发送到/dev/stderr到file2.log。
本质上,cat file1.dat 2> file2.log将所有打印到STDERR的文本发送到file2.log。
以下是其他一些例子:
cat file1.dat 1> file2.log # send STDOUT to file2.log
cat file1.dat 1>&2 # send STDOUT to STDERR
cat file1.dat &> file2.log # send both STDERR and STDOUT to file2.log
cat file1.dat 2>&1 # send STDERR to STDOUT而且,根据您的shell,可能支持更高级的I/O重定向。
https://stackoverflow.com/questions/19846317
复制相似问题