标签: stderr

如何在Python中打印到stderr?

有几种方法可以写入stderr:

# Note: this first one does not work in Python 3
print >> sys.stderr, "spam"

sys.stderr.write("spam\n")

os.write(2, b"spam\n")

from __future__ import print_function
print("spam", file=sys.stderr)
Run Code Online (Sandbox Code Playgroud)

这似乎与Python#13 †的禅宗相矛盾,那么这里有什么区别,这种方式有哪些优点或缺点?应该使用哪种方式?

应该有一个 - 最好只有一个 - 显而易见的方法.

python printing stderr zen-of-python

1246
推荐指数
13
解决办法
77万
查看次数

如何管stderr,而不是stdout?

我有一个程序可以将信息写入stdoutstderr,并且我需要grep通过什么来到stderr,而忽略了stdout.

我当然可以分2步完成:

command > /dev/null 2> temp.file
grep 'something' temp.file
Run Code Online (Sandbox Code Playgroud)

但我宁愿能够在没有临时文件的情况下做到这一点.有没有任何智能管道技巧?

bash grep stdout pipe stderr

933
推荐指数
8
解决办法
38万
查看次数

如何将stdout和stderr重定向到文件

我正在运行一个bash脚本,它创建一个日志文件来执行命令

我使用以下内容

Command1 >> log_file
Command2 >> log_file
Run Code Online (Sandbox Code Playgroud)

这仅发送标准输出,而不是终端上显示的标准错误.

我可以记录记录到文件的stderr和stdout吗?

bash stdout stderr

277
推荐指数
4
解决办法
19万
查看次数

对stdin,stdout和stderr感到困惑?

我对这三个文件的目的感到困惑.如果我的理解是正确的,stdin程序写入其在进程中运行任务的请求stdout的文件是内核写入其输出stderr的文件,并且请求它的进程从中访问信息,并且是文件到输入所有例外情况.在打开这些文件以检查这些文件是否确实发生时,我发现似乎没有任何建议!

我想知道的是这些文件的目的究竟是什么,用非常少的技术术语绝对愚蠢地回答!

linux stdin stdout stderr

199
推荐指数
7
解决办法
23万
查看次数

如何在变量中存储标准错误

假设我有一个如下脚本:

useless.sh

echo "This Is Error" 1>&2
echo "This Is Output" 
Run Code Online (Sandbox Code Playgroud)

我有另一个shell脚本:

alsoUseless.sh

./useless.sh | sed 's/Output/Useless/'
Run Code Online (Sandbox Code Playgroud)

我想将"This Is Error"或者useless.sh中的任何其他stderr捕获到变量中.我们称之为ERROR.

请注意,我正在使用stdout.我想继续使用stdout,因此在这种情况下将stderr重定向到stdout是没有用的.

所以,基本上,我想做

./useless.sh 2> $ERROR | ...
Run Code Online (Sandbox Code Playgroud)

但这显然不起作用.

我也知道我能做到

./useless.sh 2> /tmp/Error
ERROR=`cat /tmp/Error`
Run Code Online (Sandbox Code Playgroud)

但那是丑陋和不必要的.

不幸的是,如果没有答案出现在这里,那就是我将要做的事情.

我希望还有另一种方式.

有没有更好的想法?

variables bash shell redirect stderr

164
推荐指数
8
解决办法
18万
查看次数

用bash管道stdout和stderr?

似乎较新版本的bash具有&>运算符,如果我理解正确的话,将stdout和stderr重定向到一个文件(&>>改为附加到文件,就像Adrian澄清的那样).

实现相同目标的最简单方法是什么,而是管道到另一个命令?

例如,在这一行:

cmd-doesnt-respect-difference-between-stdout-and-stderr | grep -i SomeError
Run Code Online (Sandbox Code Playgroud)

我希望grep能够匹配stdout和stderr中的内容(实际上,将它们组合成一个流).

注意:这个问题是询问管道,而不是重定向 - 因此它不是它当前标记为重复的问题的副本.

bash stdout stderr piping

141
推荐指数
2
解决办法
8万
查看次数

使用bash,如何将标准错误传递到另一个进程?

众所周知如何将流程的标准输出管道传输到另一个流程标准输入:

proc1 | proc2
Run Code Online (Sandbox Code Playgroud)

但是如果我想将proc1的标准错误发送到proc2并将标准输出保留到当前位置呢?你会认为bash会有一个命令:

proc1 2| proc2
Run Code Online (Sandbox Code Playgroud)

但是,唉,没有.有没有办法做到这一点?

bash pipe stderr

124
推荐指数
4
解决办法
6万
查看次数

如何在cmd.exe中将stderr重定向到null

我有一个应用程序,它会将大量噪音记录到stderr,并且真的会减慢应用程序的执行速度.我想将该输出重定向到null.这可能与cmd.exe一起使用吗?

redirect cmd stderr

113
推荐指数
1
解决办法
11万
查看次数

我什么时候应该使用perror("...")和fprintf(stderr,"......")?

阅读手册页和一些代码并没有真正帮助我理解它们之间的区别 - 或者更好,当我应该使用 - perror("...")或者fprintf(stderr, "...").

c stderr

97
推荐指数
3
解决办法
7万
查看次数

我如何在C中打印到stderr?

在C中,使用printffrom 来打印到标准输出很容易stdio.h.

但是,如何打印到stderr?我们可以fprintf用来实现它,但它的语法似乎很奇怪.也许我们可以printf用来打印到stderr?

c printf stderr

97
推荐指数
5
解决办法
18万
查看次数

标签 统计

stderr ×10

bash ×5

stdout ×4

c ×2

pipe ×2

redirect ×2

cmd ×1

grep ×1

linux ×1

piping ×1

printf ×1

printing ×1

python ×1

shell ×1

stdin ×1

variables ×1

zen-of-python ×1