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

如何在OS X上的bash上捕获stdout和stderr

在OS X上的bash上捕获stdout和stderr可以通过重定向符号和管道来实现。

  1. 捕获stdout: 要捕获命令的标准输出,可以使用重定向符号">"将stdout重定向到文件或者变量中。例如:command > output.txt这将把命令的输出保存到名为output.txt的文件中。

如果想要将stdout保存到一个变量中,可以使用命令替换的方式:

代码语言:txt
复制
output=$(command)

这将把命令的输出保存到名为output的变量中。

  1. 捕获stderr: 要捕获命令的标准错误输出,可以使用重定向符号"2>"将stderr重定向到文件或者变量中。例如:command 2> error.txt这将把命令的错误输出保存到名为error.txt的文件中。

如果想要将stderr保存到一个变量中,可以使用命令替换的方式:

代码语言:txt
复制
error=$(command 2>&1 >/dev/null)

这将把命令的错误输出保存到名为error的变量中。

  1. 捕获stdout和stderr: 如果想要同时捕获命令的标准输出和错误输出,可以使用重定向符号"2>&1"将stderr重定向到stdout。例如:command > output.txt 2>&1这将把命令的输出和错误输出都保存到名为output.txt的文件中。

如果想要将stdout和stderr保存到不同的文件中,可以使用不同的重定向符号。例如:

代码语言:txt
复制
command > output.txt 2> error.txt

这将把命令的输出保存到output.txt文件中,将错误输出保存到error.txt文件中。

希望这些信息对您有所帮助!如果您对云计算或其他相关主题有更多问题,请随时提问。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

pythonsubprocess模块

当然,python本身也提供了许多类似shell特性实现,glob、fnmatch、os.walk()、os.path.expandvars()、os.expanduser()shutil等。 ​...类实例stdoutstderr属性或捕获相应内容; ​ call()check_call()函数返回是命令执行状态码,而不是CompletedProcess类实例,所以对于它们而言,stdout...stderr不适合赋值为subprocess.PIPE; ​ check_output()函数默认就会返回命令执行结果,所以不用设置stdout值,如果我们希望在结果中捕获错误信息,可以执行stderr...如果run()函数被调用时指定 ​ ​stderr=subprocess.STDOUT,那么stdoutstderr将会被整合到这一个属性中,且stderr将会为None stderr: 从子进程捕获...通过为stdin, stdoutstderr传递不同参数。 subprocess.Popen(): 在一些复杂场景中,我们需要将一个进程执行输出作为另一个进程输入。

2.9K20

Python模块学习:subprocess模块详解

这个模块目的在于替换几个旧模块方法,os.systemos.spawn*1.subprocess模块中常用函数函数 描述subprocess.run()Python 3.5中新增函数。...当然,python本身也提供了许多类似shell特性实现,glob、fnmatch、os.walk()、os.path.expandvars()、os.expanduser()shutil等。...run()函数默认不会捕获命令执行结果正常输出错误输出,如果我们向获取这些内容需要传递subprocess.PIPE,然后可以通过返回CompletedProcess类实例stdoutstderr...属性或捕获相应内容;call()check_call()函数返回是命令执行状态码,而不是CompletedProcess类实例,所以对于它们而言,stdoutstderr不适合赋值为subprocess.PIPE...如果run()函数被调用时指定stderr=subprocess.STDOUT,那么stdoutstderr将会被整合到这一个属性中,且stderr将会为Nonestderr: 从子进程捕获stderr

30340

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

1.os.system()os.system() 是对 C 语言中 system() 系统函数封装,允许执行一条命令,并返回退出码(exit code),命令输出内容会直接打印到屏幕,无法直接获取..., stderr: 用于指定标准IO文件句柄,可以是: subprocess.PIPE: 用作 stdout, stderr 参数值时,可以从返回值对象中 stdout stderr...stderr 参数值时,相当于把输出内容重定向到 /dev/null 用户已经打开文件对象或描述符(整型数字)capture_output: 当设置为 True 时,相当于 stdout ..., ret.stdout) assert re.match("stderr output", ret.stderr) # 如果 cmd 中命令不存在,这里也是可以捕获,内容可能是 xxx...:这个方法返回值是命令退出码,而不是一个对象,所以无法像 subprocess.run() 一样捕获命令输出内容(不要设置 stdout=PIPE 或 stderr=PIPE,否则可能造成命令卡死)

47420

正确使用python调用shell姿势

python天生优势,用它来开发一些devops自动化作业是非常方便,当然在linux,一般我们用shell就能写一些简单自动化脚本,但如果自动化作业复杂的话,使用shell脚本就很难搞定了,...一方面shell脚本量变大就会比较难以工程化,维护阅读,另外一个重要原因是shell不具备正经编程语言所具备丰富一些类库,比如说map类型必须得bash版本4.x以上才有,或者有序list什么也没有...输出123 我们可以看到popen方法可以获取命令执行后到输入结果,但这还是有缺陷,我们知道在linux里面,有标准0,1,2来代表标准输入,输出错误,现在只有stdout没有其他两个变量还是有限制...具体点:popen 支持 stdout popen2 支持stdin, stdout popen3 支持stdin, stdout, stderr popen4 支持stdin, stdout and...stderr 方式三:看到上面这些这么繁琐调用,后面就又有了最强大subprocess模块,subprocess模块出现是用来替代OS模块中system()popen()方法,官方推荐是只用

7.4K20

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

将命令输出重定向到文件或将其通过管道传递到另一个命令时,你可能会注意到错误消息已打印在屏幕。 在Bash其他Linux Shell中,执行程序时,它使用三个标准I/O流。...默认情况下,输入流错误流都打印在屏幕。 重定向标准输出流 重定向是一种从程序捕获输出并将其作为输入发送到另一个程序或文件方法。 流可以使用n>运算符重定向,其中n是文件描述符。...command > file command 1> file 要重定向标准错误流(stderr),请使用2>运算符: command 2> file 你可以将stderrstdout都写到两个单独文件中...在Bash中,&>与2>&1含义相同: command &> file 结论 在命令行上工作时,了解重定向和文件描述符概念非常重要。...要重定向stderrstdout,请使用2>&1或&>构造。 如果你有任何问题或反馈,请随时发表评论。

3.2K20

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

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

84310

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

也可以通过使用stderr=subprocess.STDOUT在结果中捕获标准错误。...stdin, stdoutstderr分别指明了被执行程序标准输入,标准输出标准错误处理文件句柄。可选值PIPE,DEVNULL,已存在文件描述符(一个正整数),已存在文件对象,None。...类似在Unix使用os.execvp(),Windows使用CreateProcess()函数。 args 参数值为字符串、序列。默认,如果args是个序列,程序会执行args中第一项。...\"被当作是字面字符 ",即转义字符 除非\后面跟了双引号,\",否则还是被解释为字面字符 \ \\被解释为\,\\\"则被解释为一个 \一个 " 字符 shell参数用于指明是否使用...stdin, stdout stderr 分别指定被执行程序标准输入,标准输出,标准错误文件句柄。

3.8K20
领券