Linux bash 中,如何将正常信息和错误信息输出到文件

问题描述:

$ command 2>> error

$ command 1>> output

是否有方法,在bash同一行,实现输出stderr到error文件,输出stdout到output文件?

也就是,如何在bash的同一行,实现stderr和stdout重定向到不同的文件?

解决方法:

将它们放入同一行,command 2>> error 1>> output

然而,注意 >> 是如果文件有数据,会在文件尾部添加内容。而 > 将会重写文件中已经存在的数据。

只是为了完成目的,你可以写 1> 为 > , 因为其默认的文件描述符是输出。所以1> 和 > 是同样的东西。

所以,

command 2> error 1> output 成为 command 2> error > output

command 2>> error 1>> output 成为 command 2>> error >> output

或者如果你想要把输出(stdout & stderr)混合到同一个文件,可以使用命令:

command > merged-output.txt 2>&1

更简单的用法:command &> merged-output.txt

其中

2>&1 表示 stderr(文件描述为2) 重定位到stdout(文件描述符为1),也就是标准错误信息发送到与标准输出信息的相同位置。

补充说明:

在bash中,0, 1, 2...9 是文件描述符。0代表stdin,1代表stdout,2代表stderror。3~9未使用,可用于其他临时用法。

任何文件描述符能通过使用操作符符 > 或 >>(append) ,重定向为其他文件描述符或文件。

用法:<file_descriptor> > <filename | &file_descriptor>

更多内容,请参考

http://www.tldp.org/LDP/abs/html/io-redirection.html

 

技巧:

Linux make时,可能会出现很多调试信息,若出现错误,由于输出信息过多,在bash下,无法查找到第一个出错的位置的错误信息。此时,就可以采取上面的方法,先将其输出到文件,然后,在文件中,查找第一个出错信息的位置。

参考资料:

1、How to redirect stderr and stdout to different files in the same line of bash?

http://stackoverflow.com/questions/7901517/how-to-redirect-stderr-and-stdout-to-different-files-in-the-same-line-of-bash

时间: 2024-11-05 17:48:13

Linux bash 中,如何将正常信息和错误信息输出到文件的相关文章

获得Unix/Linux系统中的IP、MAC地址等信息

获得Unix/Linux系统中的IP.MAC地址等信息 中高级  |  2010-07-13 16:03  |  分类:①C语言. Unix/Linux. 网络编程 ②手册  |  4,471 次阅读 作者:diaoyf  |  文章来源:http://programmerdigest.cn 实际环境和特殊需求往往会将简单问题复杂化,比如计算机IP地址,对于一个连接中socket,可以直接获得本端和对端的IP.端口信息.但在一些特殊场合我们可能需要更多的信息,比如系统中有几块网卡,他们的Mac地

在linux系统中,如何使用【find】命令精确查找文件?

[find]是文件查找工具,它会遍历指定目录下所有文件的,所以使用该命令,查找文件的速度比较慢.但是它能够文件类根据型.文件的各做为条查件,找显示符合条件的文件目录. 一.既然,[find]是根据文件的特点来查看文种属性件的.那么先了解,文件有啥特点. 1.文件特点有很多,它们是分类的.find 命令如何表示文件特点的类别的: [find]命令是如何标识文件特点的类别的:              文件名称                   -name              文件类型   

[Linux]Bash中的任务(job)管理

?? 本来不准备写这篇博客的,因为任务管理(job管理)非常非常常用,以至于觉得根本没有必要去写这样一个东西.但想了下,还是记录一下吧,也许有人会用到呢. 不知你是否碰到过这样的情况,当你兴致勃勃的打开VIM,写代码写到正酣时,运营MM或者产品MM气喘吁吁的跑过来:"赶紧帮我跑一下xx的数据,一会做PPT要用".可是不想直接关闭当前的VIM,而且某些系统下,又不能新开tty(如设置了maxlogins参数)去执行这些任务,这可怎么办?这其实就涉及到了任务(job)管理. 那么什么是任务

使用spring webflow,在前台页面中如何显示后端返回的错误信息

刚刚接触spring webflow,相关的资料并不是很多,并且大都是那种入门的 .xml文件的配置. 用到的CAS 最新的4.0版本用的就是web-flow流,前台页面使用的是表单提交.于是我就碰到了一个问题,问题描述如下: 第一次输入错误的用户名密码提示用户名密码错误,第二次输入了正确的用户名和密码仍然报错,校验不通过. 在使用cas之前的登录页面如果输入用户名和密码错误的话,会弹出alert提示框,这个是使用ajax请求实现的.而ajax请求的一般都是那种spring mvc的contro

Linux bash中的变量分类

1.本地变量 VAR=XYZ 2.局部变量 local VAR=XYZ 3.环境变量 在子shell中可以起作用 export VAR=XYZ 4.位置变量 $0 脚本名本身 $1 第一个参数 $2 第二个参数 ... ${10} 第十个参数 ${11} 第十一个参数 shift 依次向后移动参数 比如:分别显示第一.二.三个参数 !#/bin/bash echo $1 shift echo $1 shift echo $1 5.特殊变量 $? 脚本执行状态(0--正确,1-255错误,1/2/

linux bash 中的重定向

在 linux 中,这些重定向都是等价的 $ file command arg1 arg2 arg3 $ command > file arg1 arg2 arg3 $ command arg1 > file arg2 arg3 $ command arg1 arg2 > file arg3 $ command arg1 arg2 arg3 > file

在Linux系详解Linux bash中的变量

(大讲台:国内首个it在线教育混合式自适应学习) 统中进行日常运维或者是编写脚本时,变量是再熟悉不过的了,但这些变量都有哪些类型,具体的用法又有哪些差异呢?本文整理分享给大家: 一.bash变量类型: 本地变量 局部变量 环境变量 位置变量 特殊变量(内置) 二.本地变量: varname=value:作用域为整个bash进程可以使用: 变量命名规范: 1. 只能含字母.数字和下划线,并且以字母和下划线开头 2. 最好不要跟系统已有的环境变量重名 3. 见名知意 三.局部变量: local va

Linux日志中如何查找关键字及其前后的信息

在日常工作中,我们经常需要查看日志,比如可以通过 tail 命令实时查看日志,也可以通过 cat 等命令查看日志信息. 但现在我们要讨论的是,如何从日志中通过关键字过滤出我们想要的内容,方法有多种,今天我们主要以 cat 命令来进行学习. 假设存在日志文件 hrun.log,查询的关键字为"新增用户": 根据关键字查看日志 cat hrun.log | grep "新增用户" 根据关键字查看后10行日志 cat hrun.log | grep "新增用户&

Vs2013在Linux开发中的应用(23):信息输出

快乐虾 http://blog.csdn.net/lights_joy/ 欢迎转载,但请保留作者信息 有时候,我们需要往VS的信息输出窗口输出一些调试信息,此时只要向SDM发送通知: Send(new AD7DebugOutputStringEvent2(e.Output), AD7DebugOutputStringEvent2.IID, thread); 利用此功能,很容易就可以把gdb的输出导向VS的信息输出窗口: ??