首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在stderr上打印消息的Bash命令

在stderr上打印消息的Bash命令
EN

Stack Overflow用户
提问于 2010-04-15 14:27:38
回答 6查看 21.4K关注 0票数 13

我想知道是否有内置的BASH命令可以在stderr上打印一些文本,就像在stdout上打印文本的echo命令一样。我不想使用临时的io-redirection。我使用一个内置命令在stderr上生成一个错误,比如ls --asdf (ls:不可识别的选项'--asdf'),但我想要更简洁的命令。

编辑

实际上,我正在尝试演示stderr/stdout重定向,我的示例如下所示:

代码语言:javascript
复制
sh test.sh >test-out.txt 2>test-err.txt

为了清楚起见,我希望保持test.sh文件尽可能简单和整洁,这意味着避免在文件中使用>操作符。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2010-04-15 19:20:35

echo something >&2是做你想做的事情的正确方式。

然而..。

这将创建一个小程序,该程序将其参数回显到stderr

代码语言:javascript
复制
gcc -o echoerr -x c - <<'EOF'
#include <stdio.h>
#include <stdlib.h>
void main(int argc, char **argv) {
    int i;
    for (i = 1; i < argc; i++) {
        fprintf(stderr, "%s ", argv[i]);
    }
    fprintf(stderr, "\n");
    exit(0);
}
EOF

你可以这样使用它:

代码语言:javascript
复制
$ ./echoerr this is an error message
this is an error message
$ ./echoerr this is an error message 2>error.out
$ cat error.out
this is an error message
票数 14
EN

Stack Overflow用户

发布于 2014-08-19 05:45:48

没有人提到这一点,但你也可以这样做:

echo An error message > /dev/stderr

它可能比>&2更具可读性,但我猜这取决于你是谁。

票数 5
EN

Stack Overflow用户

发布于 2010-04-15 14:41:59

没有内置,你可以使用:

代码语言:javascript
复制
function echo-err { echo "$@" >&2; }
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2643165

复制
相关文章

相似问题

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