首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >什么是猫filename1 2> filename2?

什么是猫filename1 2> filename2?
EN

Stack Overflow用户
提问于 2013-11-07 20:45:00
回答 4查看 2.3K关注 0票数 0

我有一个像这样的shell脚本

代码语言:javascript
复制
cat file1.dat 2> file2.log

有人能解释一下。我找了很多东西,但什么也没找到,我查过这个cat文档。但没有找到这个2>。我是一个完全新手在壳牌script.Any帮助是感谢。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 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

票数 1
EN

Stack Overflow用户

发布于 2013-11-07 20:47:55

2>意味着重定向文件描述符2,这通常是stderr。然而,没有2,它是标准的。

票数 2
EN

Stack Overflow用户

发布于 2013-11-07 20:50:19

这就是说,将cat file1.dat的输出发送到/dev/stderrfile2.log

本质上,cat file1.dat 2> file2.log将所有打印到STDERR的文本发送到file2.log

以下是其他一些例子:

代码语言:javascript
复制
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重定向。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19846317

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档