首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在下一个命令中使用管道将STDOUT和STDERR捕获为单独的参数?

在Unix和类Unix操作系统中,可以使用管道(|)将一个命令的标准输出(STDOUT)传递给另一个命令的标准输入(STDIN)。然而,如果想要将标准输出和标准错误(STDERR)捕获为单独的参数,可以使用以下命令来实现:

代码语言:txt
复制
command 2>&1 | command2

这个命令首先将标准错误重定向到标准输出,然后再使用管道将重定向后的标准输出传递给下一个命令。

解释一下这个命令的每个部分:

  • command: 代表要执行的命令,可以是任意的Unix命令。
  • 2>&1: 将标准错误(文件描述符2)重定向到标准输出(文件描述符1)。>符号表示重定向,&符号表示将文件描述符重定向而不是文件。
  • |: 管道符号,将前一个命令的标准输出传递给后一个命令的标准输入。
  • command2: 下一个要执行的命令。

这样,通过将标准错误重定向为标准输出,就可以将它们一起通过管道传递给下一个命令。

这个技巧在调试和处理命令输出时非常有用,可以方便地将错误信息与正常输出分开处理。

相关搜索:无法使用管道在Windows上的Perl中捕获stdout/stderr将stderr和stdout写入一个文件,但也将stderr写入单独的文件将Linux命令的屏幕输出(stdErr)和输出(stdOut)写入单独的文件如何将源命令中的stdout/stderr捕获/重定向到变量(在bash脚本中)?命令使用-Path参数和$input中的一个还是同时使用?Jenkins -无法使用"build job“命令访问从另一个构建管道中的一个构建管道发送的参数如何使用JavaScript/jQuery将单独的thead和tbody合并到一个表中Cocoa/Objective-C中的简单字符串解析:将命令行解析为命令和参数如何使用"scopt“命令行参数将包含字段的case类解析为另一个case类?如何将objective c中的第一个参数标签设置为在swift中使用?如何在C#中使用csvHelper将两个单独列中的日期和时间合并为一个新的datetime列在Linux bash脚本中,我可以使用什么命令将数字数据的变量行汇总为两个单独的变量并打印出来?如何使用awk将文件中的每个单词替换为另一个单词(这些单词在awk中是作为命令行参数给出的)如何解决‘参数subscribed_fields是必需的’curl facebook post命令错误,为创建一个-x聊天机器人使用node.js和heroku?我正在尝试使用for循环和if函数通过Apps脚本将一个电子表格中的数据过滤到两个单独的电子表格中使用Lambda和Node.JS的亚马逊S3解压程序将内容类型设置为应用程序/八位字节流,压缩包中的最后一个文件不会被提取
相关搜索:
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Python中os.system()、subprocess.run()、call()、check_output()的用法

用作 stdout, stderr 参数的值时,可以从返回值对象中的 stdout 和 stderr 属性中读取输出内容 subprocess.STDOUT: 用作 stderr 参数的值时,相当于把标准错误重定向到标准输入中...: 当设置为 True 时,相当于 stdout 和 stderr 参数都设置为 True 了,可以通过返回值对象访问标准输出和标准错误内容shell: 当设置为 True 时,args 参数会当做一条命令字符串...其格式默认为字节序列,除非 text 参数为 True (此时为文本格式)。stderr: 捕获的标准错误内容(当 stderr 参数为 PIPE 时)。...:这个方法的返回值是命令的退出码,而不是一个对象,所以无法像 subprocess.run() 一样捕获命令输出内容(不要设置 stdout=PIPE 或 stderr=PIPE,否则可能造成命令卡死)...将标准错误重定向到标准输出,但是好像没有办法单独捕获标准错误内容呢!

84320

subprocess:Python中创建子进程

对于run()函数启动的进程,它的标准输入输出通道会绑定到父进程的输入输出。这说明调用程序无法捕获命令的输出。不过,我们可以通过为stdout和stderr参数传入PIPE来捕获输出,以备以后处理。...('gbk')) 运行之后,效果如下: 这里我们输入了一个错误的命令,可以看到因为命令错误,并没有输出命令的执行结果,0和64中间就是completed.stdout,为空。...而命令将错误消息返回了。这是因为我们设置了stdout与stderr为subprocess.PIPE,表明这些通道要开放。这样我们才能获取子shell运行的结果获取所运行的错误提示。...) print(repr(stdout_value)) 至于如果命令行错误需要捕获错误消息,可以直接将stderr也设置为PIPE。...连接管道段 在Linux系统中,我们可以将多个命令连接成一个管线,即可以把它们的输入输出串联在一起。

54770
  • python 标准类库-并行执行之subprocess-子进程管理

    也可以通过使用stderr=subprocess.STDOUT在结果中捕获标准错误。...函数stdin,stdout或者stderr参数的指特定值,表示必须打开一个指向标准流的管道。...此外,stderr还可以是STDOUT,表明子进程的错误数据应该被放进相同的文件句柄stdout 如果universal_newlines为True,文件对象stdin,stdout,stderr将按...\"被当作是字面字符 ",即转义字符 除非\后面跟了双引号,如\",否则还是被解释为字面字符 \ \\被解释为\,\\\"则被解释为一个 \和一个 " 字符 shell参数用于指明是否使用...合法值为PIPE,DEVNULL,已存在文件描述符(一个正整数),已存在文件对象和None。 PIPE表示应该创建通往子进程的管道。DEVNULL表示应该使用指定文件os.devnull。

    4.2K20

    3分钟阅读 | 最难用的 Bash ,最常用的输入输出重定向

    引言 将命令的输出重定向到文件,或将其通过管道传递到另一个命令时,你可能会注意到错误消息会被打印在屏幕上。 ? 在Bash和其他Linux Shell中,执行程序时,它使用三个标准 I/O 流。...默认情况下,输入流和错误流都打印在屏幕上。 重定向输出 重定向是一种捕获程序输出并将其作为输入发送到另一个程序或文件的方法。 可以使用n>运算符重定向流,其中n为文件描述符号。...command > file command 1> file 要重定向标准错误(stderr),请使用2>运算符: command 2> file 你可以同时写入stderr和写入stdout两个单独的文件...到stdout 将程序的输出保存到文件中时,重定向stderr到 stdout很常见,因此你可以将所有内容都保存在一个文件中。...要重定向stderr和stdout,请使用2>&1或&>构造。

    91410

    python的subprocess模块

    check: 如果check参数的值是True,且执行命令的进程以非0状态码退出,则会抛出一个CalledProcessError的异常,且该异常对象会包含 参数、退出状态码、以及stdout和stderr...和stderr不适合赋值为subprocess.PIPE; ​ check_output()函数默认就会返回命令执行结果,所以不用设置stdout的值,如果我们希望在结果中捕获错误信息,可以执行stderr...universal_newlines: 该参数影响的是输入与输出的数据格式,比如它的值默认为False,此时stdout和stderr的输出是字节序列;当该参数的值设置为True时,stdout和stderr...如果run()函数被调用时指定 ​ ​stderr=subprocess.STDOUT,那么stdout和stderr将会被整合到这一个属性中,且stderr将会为None stderr: 从子进程捕获的...直接使用Popen会对如何运行命令以及如何处理其输入输出有更多控制。如通过为stdin, stdout和stderr传递不同的参数。

    3.1K20

    python中的subprocess

    python2.7 源码中的注释(由于能力有限,翻译的不太准确): 这个模块允许您开启进程、连接输入、输出和错误的管道,并获取他们的返回代码。...如果参数是一个序列,第一项指定命令字符串,其他的将被视为附加的shell命令的参数。 在Windows:Popen类通过使用CreateProcess()执行这个子进程来对字符串操作。...一个负bufsize意味着使用这个系统默认情况下,这通常意味着完全缓冲。默认值为bufsize是0(无缓冲的)。 stdin、stdout和stderr分别指定执行程序的标准输入,标准输出和标准错误。...PIPE创建一个新的子管道。None,没有重定向;子管道将会继承父管道的文件句柄。此外,标准错误可以用STDOUT来定义,表明应用程序应该从STDOUT捕获到相同的文件句柄的标准错误数据。...如果shell是True,将通过shell执行指定的命令。

    1.6K30

    Linux如何在Bash中将标准错误stderr重定向到stdout标准输出

    将命令的输出重定向到文件或将其通过管道传递到另一个命令时,你可能会注意到错误消息已打印在屏幕上。 在Bash和其他Linux Shell中,执行程序时,它使用三个标准I/O流。...默认情况下,输入流和错误流都打印在屏幕上。 重定向标准输出流 重定向是一种从程序捕获输出并将其作为输入发送到另一个程序或文件的方法。 流可以使用n>运算符重定向,其中n是文件描述符。...command > file command 1> file 要重定向标准错误流(stderr),请使用2>运算符: command 2> file 你可以将stderr和stdout都写到两个单独的文件中...重定向到stdout 将程序的输出保存到文件中时,通常会将stderr重定向到stdout,以便将所有内容都保存在一个文件中。...要将stderr重定向到stdout并将错误消息发送到与标准输出相同的文件,请使用以下命令: command > file 2>&1 > file将stdout重定向到file,2>&1将stderr重定向到

    3.7K20

    深入理解Node.js的进程与子进程

    从文档出发,管中窥豹,进一步认识和学习 process 模块:如何处理命令参数?如何处理工作目录?如何处理异常?如何处理进程退出?...process 的标准流对象深入理解 process.nextTick如何处理命令参数?命令行参数指的是 2 个方面:传给 node 的参数。...不推荐直接使用 process.exit(),这会导致事件循环中的任务直接不被处理,以及可能导致数据的截断和丢失(例如 stdout 的写入)。...默认情况下,子进程的 stdin、 stdout 和 stderr 会被重定向到 ChildProcess 对象上相应的 subprocess.stdin、subprocess.stdout 和 subprocess.stderr..."pipe", // 把子进程的 stdout 通过管道传到父进程 。 fs.openSync("err.out", "w") // 把子进程的 stderr 定向到一个文件。

    2K21

    sh: 在Python中直接调用shell命令的库

    它允许你像调用Python函数一样调用shell命令,并且具有一些额外的功能,如命令链式调用、管道、捕获输出等。...一、简介sh库提供了一种方便的方式来在Python脚本中执行shell命令,并且无需手动处理输入/输出流或错误。这使得在Python中执行复杂的shell任务变得更加简单和直观。...在这个例子中,我们导入了ls、cat和grep命令。...捕获输出和错误你可以使用stdout和stderr属性来捕获命令的输出和错误:# 捕获输出result = ls('-l').stdout.strip()print(result)# 捕获错误(如果命令执行失败...• 当你需要执行复杂的shell脚本或需要更多的控制时,考虑使用subprocess模块或编写一个shell脚本来完成任务,并通过sh库或subprocess模块在Python中调用它。

    6510

    Shell脚本攻略04-玩转文件描述符及重定向

    理论知识 在编写脚本的时候会频繁使用标准输入(stdin)、标准输出(stdout)和标准错误(stderr)。 通过内容过滤将输出重定向到文件是我们平日里的基本任务之一。...,将stdout重定向到另一个文件 你可以将stderr单独重定向到一个文件,将stdout重定向到另一个文件: [root@entel1 Templates]# ls + 1> 1.txt 2>2.txt...和stdout重定向到同一个文件中 还可以利用下面这个更好的方法将stderr转换成stdout,使得stderr和stdout 都被重定向到同一个文件中 $ cmd >output.txt 2...这是因为这些 信息属于stderr,而tee只能从stdin中读取。 ---- 使用stdin作为命令参数。只需要将-作为命令的文件名参数即可 我们可以使用stdin作为命令参数。...类似地,使用 /dev/stderr代表标准错误, /dev/stdout代表标准输出。 这些特殊的设备文件分别对应stdin、 stderr和stdout。

    87810

    python模块之subprocess类与常量

    stdin, stdout, stderr参数的特殊值,意味着使用管道重定向输入输出 subprocess.STDOUT:可传递给stderr参数的特殊值,表示重定向标准错误到标准输出 Popen 在一个新的进程中执行子程序...shell:指定是否使用shell作为要执行的程序。如果设置为True,更推荐和字符串类型的args参数使用。 在POSIX系统,shell=True默认使用/bin/sh作为shell。...如果args为字符串,该字符串表示要通过shell执行的命令;如果args为序列,第一个元素指定要执行的程序,其他元素视为参数。...bufsize:创建stdin/stdout/stderr管道文件对象时作为对应的参数传递给open()函数。...但如果指定了encoding/errors或者text为True,将使用指定的encoding和errors以文本模式打开stdin/stdout/stderr。

    2.5K10

    python与s

    文件对象可读写,但只能进行读或写 底层通过os的 管道技术 实现 单向管道(只能读或写) import os #使用读通道 f = os.popen("ls -l")# 执行此语句后,将创建子shell...运行参数中指定的命令,但是不阻塞父进程 f.read()# 执行读取操作时,将阻塞父进程 #使用写管道 #需要提前写好echo文件 ''' #echo.py while True: in = input...(如果命令返回码为0,返回运行结果;否则,直接抛出CalledProcessError异常) 不阻塞父进程 不支持stdout的管道 指定参数:stderr = STDOUT 可捕获错误信息 支持参数:...) 功能:获取子进程中执行命令的返回码和结果 返回值:(retcode, stdout)元组 不阻塞父进程 不支持管道 命令执行错误时,不引发异常 run(args, *, stdin = None..., errors = None) 功能:开启子进程运行命令 不阻塞父进程 支持双向管道 参数check为True时,可能会引发异常 run函数是对Popen类封装后形成的简单函数

    93010

    Python模块学习:subprocess模块详解

    shell: 如果shell为True,那么指定的命令将通过shell执行。如果我们需要访问某些shell的特性,如管道、文件名通配符、环境变量扩展功能,这将是非常有用的。...属性或捕获相应的内容;call()和check_call()函数返回的是命令执行的状态码,而不是CompletedProcess类实例,所以对于它们而言,stdout和stderr不适合赋值为subprocess.PIPE...universal_newlines: 该参数影响的是输入与输出的数据格式,比如它的值默认为False,此时stdout和stderr的输出是字节序列;当该参数的值设置为True时,stdout和stderr...如果run()函数被调用时指定stderr=subprocess.STDOUT,那么stdout和stderr将会被整合到这一个属性中,且stderr将会为Nonestderr: 从子进程捕获的stderr...shell: 该参数用于标识是否使用shell作为要执行的程序,如果shell值为True,则建议将args参数作为一个字符串传递而不要作为一个序列传递。

    1.1K40

    python模块之subprocess模块级方法

    capture_output:如果设置为True,表示重定向stdout和stderr到管道,且不能再传递stderr或stdout参数,否则抛出异常。...非None的input参数不能和stdin参数一起使用,否则将抛出异常,构造Popen实例的stdin参数将指定为subprocess.PIPE。...调用call()函数不要使用stdout=PIPE或stderr=PIPE,因为如果子进程生成了足量的输出到管道填满OS管道缓冲区,子进程将因不能从管道读取数据而导致阻塞。...要在返回值中捕获标准错误,设置stderr=subprocess.STDOUT;也可以将标准错误重定向到管道stderr=subprocess.PIPE,通过CalledProcessError异常的stderr...,output(包含stderr和stdout)是使用locale encoding解码的字符串,并删除了结尾的换行符。

    2.4K20

    【module】subprocess

    使用方法: 运行外部命令:subprocess.call(command) subprocess的call方法可以用于执行一个外部命令,但该方法不能返回执行的结果,只能返回执行的状态码: 成功(0) 或...直接使用Popen会对如何运行命令以及如何处理其输入输出有更多控制。如通过为stdin, stdout和stderr传递不同的参数。...与进程的单向通信:通过Popen()方法调用命令后执行的结果,可以设置stdout值为PIPE,再调用communicate()获取结果,返回结果为tuple....stdout_value (b'hello world', None) # 输出结果 # 在需要进行相互交互的输入输出过程也可以使用shtin来实现 # 以下实现打开python3的终端,执行一个print...:发送数据到stdin,并从stdout和stderr读数据,直到收到EOF。

    1.9K40
    领券