linux:如何将标准错误linux串口输出重定向向到文件

Linux shell编程 13标准输入、输出及文件重定向Linux shell编程 13标准输入、输出及文件重定向kevin杂谈百家号5.6 标准输入、输出和错误当我们在 s h e l l中执行命令的时候,每个进程都和三个打开的文件相联系,并使用文件描述符来引用这些文件。由于文件描述符不容易记忆, s h e l l同时也给出了相应的文件名。下面就是这些文件描述符及它们通常所对应的文件名:文 件 文件描述符输入文件—标准输入 0输出文件—标准输出 1错误输出文件—标准错误 2系统中实际上有1 2个文件描述符,但是正如我们在上表中所看到的, 0、 1、 2是标准输入、输出和错误。可以任意使用文件描述符 3到9。5.6.1 标准输入标准输入是文件描述符0。它是命令的输入,缺省是键盘,也可以是文件或其他命令的输出。5.6.2 标准输出标准输出是文件描述符 1。它是命令的输出,缺省是屏幕,也可以是文件。5.6.3 标准错误标准错误是文件描述符 2。这是命令错误的输出,缺省是屏幕,同样也可以是文件。你可能会问,为什么会有一个专门针对错误的特殊文件?这是由于很多人喜欢把错误单独保存到一个文件中,特别是在处理大的数据文件时,可能会产生很多错误。如果没有特别指定文件说明符,命令将使用缺省的文件说明符(你的屏幕,更确切地说是你的终端)。5.7 文件重定向在执行命令时,可以指定命令的标准输入、输出和错误,要实现这一点就需要使用文件重定向。表5 - 1列出了最常用的重定向组合,并给出了相应的文件描述符。在对标准错误进行重定向时,必须要使用文件描述符,但是对于标准输入和输出来说,这不是必需的。为了完整起见,我们在表 5 - 1中列出了两种方法。表5-1 常用文件重定向命令command & filename 把把标准输出重定向到一个新文件中command && filename 把把标准输出重定向到一个文件中 (追加)command 1 & fielname 把把标准输出重定向到一个文件中command & filename 2&&1 把把标准输出和标准错误一起重定向到一个文件中command 2 & filename 把把标准错误重定向到一个文件中command 2 && filename 把把标准输出重定向到一个文件中 (追加)command && filename 2&&1 把把标准输出和标准错误一起重定向到一个文件中 (追加)command filename2 把c o m m a n d命令以 f i l e n a m e文件作为标准输入,以 f i l e n a m e 2文件作为标准输出command command command command &&m 把把标准输出重定向到文件描述符 m中command 5.7.1 重定向标准输出让我们来看一个标准输出的例子。在下面的命令中,把 / e t c / p a s s w d文件中的用户 I D域按照用户命排列。该命令的输出重定向到 s o r t . o u t文件中。要提醒注意的是,在使用 s o r t命令的时候(或其他含有相似输入文件参数的命令 ),重定向符号一定要离开 s o r t命令两个空格,否则该命令会把它当作输入文件。$ cat passwd | awk -F: '{print $1}' | sort 1&sort.out从表5 - 1中可以看出,我们也可以使用如下的表达方式,结果和上面一样:$ cat passwd | awk -F: '{print $1}' | sort &sort.out可以把很多命令的输出追加到同一文件中。在上面的例子中,所有的目录名和以 a c c o u n t开头的文件名都被写入到 f i l e . o u t文件中。如果希望把标准输出重定向到文件中,可以用 & f i l e n a m e。在下面的例子中, l s命令的所有输出都被重定向到 l s . o u t文件中:$ ls &ls.out如果希望追加到已有的文件中 (在该文件不存在的情况下创建该文件 ),那么可以使用& & f i l e n a m e:如果想创建一个长度为 0的空文件,可以用' & f i l e n a m e ':$ &myfile5.7.2 重定向标准输入可以指定命令的标准输入。在 a w k一章就会遇到这样的情况。下面给出一个这样的例子:$ sort 在上面的命令中, s o r t命令的输入是采用重定向的方式给出的,不过也可以直接把相应的文件作为该命令的参数:$ sort name.txt在上面的例子中,还可以更进一步地通过重定向为 s o r t命令指定一个输出文件 n a m e . o u t。这样屏幕上将不会出现任何信息 (除了错误信息以外):$ sort name.out在发送邮件时,可以用重定向的方法发送一个文件中的内容。在下面的例子中,用户l o u i s e将收到一个邮件,其中含有文件 c o n t e n t s . t x t中的内容:$ mail louise 重定向操作符command 我们将在本书后面的章节深入讨论这一问题。现在只介绍它的功能。 s h e l l将分界符d e l i m i t e r之后直至下一个同样的分界符之前的所有内容都作为输入,遇到下一个分界符, s h e l l就知道输入结束了。这一命令对于自动或远程的例程非常有用。可以任意定义分界符 d e l i m i t e r,最常见的是E O F,而我最喜欢用 M AY D AY,这完全取决于个人的喜好。还可以在 下面给出一个例子,我们创建了一个名为 m y f i l e的文件,并在其中使用了 T E R M和L O G N A M E变量。5.7.3 重定向标准错误为了重定向标准错误,可以指定文件描述符 2。让我们先来看一个例子,因为举例子往往会让人更容易明白。在这个例子中, g r e p命令在文件m i s s i l e s中搜索t r i d e n t字符串:g r e p命令没有找到该文件,缺省地向终端输出了一个错误信息。现在让我们把错误重定向到文件/ d e v / n u l l中(实际就上是系统的垃圾箱 ):$ grep &trident& missiles 2&/dev/null这样所有的错误输出都输送到了 / d e v / n u l l,不再出现在屏幕上。如果你在对更重要的文件进行操作,可能会希望保存相应的错误。下面就是一个这样的例子,这一次错误被保存到 g r e p . e r r文件中:还可以把错误追加到一个文件中。在使用一组命令完成同一个任务时,这种方法非常有用。在下面的例子中,两个 g r e p命令把错误都输出到同一个文件中;由于我们使用了 & &符号进行追加,后面一个命令的错误 (如果有的话)不会覆盖前一个命令的错误。5.8 结合使用标准输出和标准错误一个快速发现错误的方法就是,先将输出重定向到一个文件中,然后再把标准错误重定向到另外一个文件中。下面给出一个例子:我有两个审计文件,其中一个的确存在,而且包含一些信息,而另一个由于某种原因已经不存在了(但我不知道 )。我想把这两个文件合并到 a c c o u n t s . o u t文件中。$ cat account_qtr.doc account_end.doc 1&accounts.out 2&accounts.err现在如果出现了错误,相应的错误将会保存在 a c c o u n t s . e r r文件中。我事先并不知道是否存在 a c c o u n t _ e n d . d o c文件,使用上面的方法能够快速发现其中的错误。5.9 合并标准输出和标准错误在合并标准输出和标准错误的时候,切记 s h e l l是从左至右分析相应的命令的。下面给出一个例子:$ cleanup &cleanup.out 2&&1在上面的例子中,我们将 c l e a n u p脚本的输出重定向到 c l e a n u p . o u t文件中,而且其错误也被重定向到相同的文件中。$ grep &standard&* & grep.out 2&&1在上面的例子中, g r e p命令的标准输出和标准错误都被重定向到 g r e p . o u t文件中。你在使用前面提到的“此处”文挡时,有可能需要把所有的输出都保存到一个文件中,这样万一出现了错误,就能够被记录下来。通过使用 2 & & 1就可以做到这一点,下面给出一个例子:上面的例子演示了如何把所有的输出捕捉到一个文件中。在使用 c a t命令的时候,这可能没什么用处,不过如果你使用“此处”文挡连接一个数据库管理系统 (例如使用 i s q l连接s y b a s e )或使用f t p,这一点就变得非常重要了,因为这样就可以捕捉到所有的错误,以免这些错误在屏幕上一闪而过,特别是在你不在的时候。5.10 exece x e c命令可以用来替代当前 s h e l l;换句话说,并没有启动子 s h e l l。使用这一命令时任何现有环境都将会被清除,并重新启动一个 s h e l l。它的一般形式为:exec command其中的c o m m a n d通常是一个s h e l l脚本。我所能够想像得出的描述 e x e c命令最贴切的说法就是:它践踏了你当前的 s h e l l。当这个脚本结束时,相应的会话可能就结束了。 e x e c命令的一个常见用法就是在用户的. p r o f i l e最后执行时,用它来执行一些用于增强安全性的脚本。如果用户的输入无效,该s h e l l将被关闭,然后重新回到登录提示符。 e x e c还常常被用来通过文件描述符打开文件。记住, e x e c在对文件描述符进行操作的时候(也只有在这时),它不会覆盖你当前的s h e l l。5.11 使用文件描述符可以使用 e x e c命令通过文件描述符打开和关闭文件。在下面的例子中,我选用了文件描述符4,实际上我可以在 4到9之间任意选择一个数字。下面的脚本只是从 s t o c k . t x t文件中读了两行,然后把这两行回显出来。该脚本的第一行把文件描述符 4指定为标准输入,然后打开 s t o c k . t x t文件。接下来两行的作用是读入了两行文本。接着,作为标准输入的文件描述符 4被关闭。最后, l i n e 1和l i n e 2两个变量所含有的内容被回显到屏幕上。上面是一个关于文件描述符应用的简单例子。它看起来没有什么用处。在以后讲解循环的时候,将会给出一个用文件描述符代替 c p命令拷贝文本文件的例子。本文由百家号作者上传并发布,百家号仅提供信息发布平台。文章仅代表作者个人观点,不代表百度立场。未经作者许可,不得转载。kevin杂谈百家号最近更新:简介:要么专业,要么消亡。作者最新文章相关文章Linux重定向:将标准输出stdout和标准错误stderr重定向到一个文件_Linux编程_Linux公社-Linux系统门户网站
你好,游客
Linux重定向:将标准输出stdout和标准错误stderr重定向到一个文件
来源:Linux社区&
作者:bluecloudmatrix
Linux重定向:将标准输出stdout和标准错误stderr重定向到一个文件
1)采用后台作业
使用&&或&&&可以将stdout和stderr一块输出到指定文件。
2)利用文件描述符
先重定向文件描述符A,再用B&&A或B&&&A将文件描述符B重定向到同一文件。
上面例子stderr(2)被重定向到stdout(1)当前的位置(即outerr.txt)。
相关资讯 & & &
& (07/03/:05)
& (12/10/:21)
& (08/26/:03)
& (06/28/:58)
& (09/29/:19)
& (04/16/:28)
   同意评论声明
   发表
尊重网上道德,遵守中华人民共和国的各项有关法律法规
承担一切因您的行为而直接或间接导致的民事或刑事法律责任
本站管理人员有权保留或删除其管辖留言中的任意内容
本站有权在网站内转载或引用您的评论
参与本评论即表明您已经阅读并接受上述条款1.想要把make输出的全部信息,输出到某个文件中,最常见的办法就是:make xxx & build_output.txt此时默认情况是没有改变2=stderr的输出方式,还是屏幕,所以,如果有错误信息,还是可以在屏幕上看到的。2.只需要把make输出中的错误(及警告)信息输出到文件中ing,可以用:make xxx 2& build_output.txt相应地,由于1=stdout没有变,还是屏幕,所以,那些命令执行时候输出的正常信息,还是会输出到屏幕上,你还是可以在屏幕上看到的。3.只需要把make输出中的正常(非错误,非警告)的信息输出到文件中,可以用:make xxx 1& build_output.txt相应地,由于2=stderr没有变,还是屏幕,所以,那些命令执行时候输出的错误信息,还是会输出到屏幕上,你还是可以在屏幕上看到的。4.想要把正常输出信息和错误信息输出到分别的文件中,可以用:make xxx 1& build_output_normal.txt 2&build_output_error.txt即联合使用了1和2,正常信息和错误信息,都输出到对应文件中了。5. 所有的信息都输出到同一个文件中:make xxx & build_output_all.txt 2&&1其中的2&&1表示错误信息输出到&1中,而&1,指的是前面的那个文件:build_output_all.txt 。注意:上面所有的1,2等数字,后面紧跟着大于号'&' ,中间不能有空格。
linux shell数据重定向(输入重定向与输出重定向)详细分析
nohup后台运行以及重定向标准输出和标准异常
ubuntu (标准输出)重定向& 及 等同于 & 的用法
etc:1&/dev/null 2&&1
文件IO---标准输入、标准输出和标准错误
没有更多推荐了,Linux输入输出重定向详细使用说明
转载 &更新时间:日 15:18:55 & 投稿:wdc
Linux标准输入、输出设备主要是键盘和显示器,输出重定向是改变程序运行的输入来源和输出地点
1、Linux标准输入输出
Linux标准输入、输出设备主要是键盘和显示器,详细介绍如下表所示。
Linux标准输入输出
设备文件名
文件描述符
/dev/stdin
0(缺省是键盘,为0时是文件或者其他命令的输出)
/dev/stdout
1(缺省是屏幕,为1时是文件)
/dev/stderr
2(缺省是屏幕,为2时是文件)
标准错误输出
注:其中一个&表示:覆盖原文件中的内容;如果文件不存在,就创建文件;如果文件存在,就将其清空;一般我们备份清理日志文件的时候
两个&即&&表示:追加到原文件中的内容之后;果文件不存在,就创建文件;如果文件存在,则将新的内容追加到那个文件的末尾,该文件中的原有内容不受影响
2、Linux输出重定向
输出重定向:改变程序运行的输入来源和输出地点。
主要的适用方法如下表所示:
输出重定向
标准输出重定向
命令 &文件
以覆盖方式,把命令的正确输出内容输出到指定的文件或设备当中
命令 &&文件
以追加方式,把命令的正确输出内容输出到指定的文件或设备当中
标准错误输出重定向
错误命令 2&文件
以覆盖方式,把命令的错误输出内容输出到指定的文件或设备当中
错误命令 2&&文件
以追加方式,把命令的错误输出内容输出到指定的文件或设备当中
正确/错误输出同时保存
命令 & 文件 2&&1
以覆盖方式,把命令的正确输出和错误输出内容保存到同一个文件当中
命令 && 文件 2&&1
以追加方式,把命令的正确输出和错误输出内容保存到同一个文件当中
命令 && 文件
以覆盖方式,把命令的正确输出和错误输出内容保存到同一个文件当中
命令 &&& 文件
以追加方式,把命令的正确输出和错误输出内容保存到同一个文件当中
命令 &&文件1 2&文件2
以追加方式,把命令的正确输出保存在文件1中;以覆盖方式,把命令的错误输出内容保存到文件2中
3、Linux输入重定向
输入重定向
命令 &文件1
命令把文件1的内容作为标准输入
标识符限定输入
命令 &&标识符
命令从标准输入中读入内容,直到遇到“标识符”分界符位置
输入输出重定向
命令 &文件1 &文件2
命令把文件1的内容作为标准输入,把文件2作为标准输出
总结一五Linux的输入输出重定向:
1、重新设置命令的默认输入,输出,指向到自己文件(文件,文件描述符,设备其实都是文件,因为linux就是基于设备也是文件,描述符也指向是文件)
2、扩展自己新的描述符,对文件进行读写操作
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具1)采用后台作业
使用&&或&&&可以将stdout和stderr一块输出到指定文件。
2)利用文件描述符
先重定向文件描述符A,再用B&&A或B&&&A将文件描述符B重定向到同一文件。
上面例子stderr(2)被重定向到stdout(1)当前的位置(即outerr.txt)。
作者:BlueCloudMatrix 发表于 20:14:12
阅读:54 评论:0
相关 [linux 重定向 标准输出] 推荐:
- CSDN博客系统运维推荐文章
使用&>或&>>可以将stdout和stderr一块输出到指定文件. 先重定向文件描述符A,再用B>&A或B>>&A将文件描述符B重定向到同一文件. 上面例子stderr(2)被重定向到stdout(1)当前的位置(即outerr.txt). 作者:BlueCloudMatrix 发表于 20:14:12
- CSDN博客系统运维推荐文章
> :以覆盖的方法将『所有的数据』输出到指定的文件或装置上. 1> :以覆盖的方法将『正确的数据』输出到指定的文件或装置上. 1>>:以累加的方法将『正确的数据』输出到指定的文件或装置上. 2> :以覆盖的方法将『错误的数据』输出到指定的文件或装置上. 2>>:以累加的方法将『错误的数据』输出到指定的文件或装置上.
- Kindy - A Geek's Page
偶然在 dracut 的代码中发现一个使用重定向很巧妙的地方. 见 modules.d/90kernel-modules/module-setup.sh 文件.
$_f) =~ $_blockfuncs ]] && echo "$_f" ;;.
- 企业架构 - ITeye博客
(1)我在后台一个controller跳转到另一个controller,为什么有这种需求呢,是这样的. 我有一个列表页面,然后我会进行新增操作,新增在后台完成之后我要跳转到列表页面,不需要传递参数,列表页面默认查询所有的.
方式一:使用ModelAndView.
这样可以重定向到toList这个方法.
- rockmaple - Shellex's Blog
牛逼到暴的大拿 Fabrice Bellard,用Javascript实现了一个x86 PC 模拟器,然后成功在这个模拟器里面跑Linux(请用Firefox 4 / Google Chrome 11打开,Chome 12有BUG). 关于这个东西… 伊说 “I did it for fun“,大大啊大大啊….
- Syn - DBA Notes
Oracle 在 7 月份收购了 Ksplice. 使用了 Ksplice 的 Linux 系统,为 Kernel 打补丁无需重启动,做系统维护的朋友应该明白这是一个杀手级特性. 现在该产品已经合并到 Oracle Linux 中. 目前已经有超过 700 家客户,超过 10 万套系统使用了
Ksplice (不知道国内是否已经有用户了.
- hl - C++博客-首页原创精华区
在讲述这个Makefile之前,还是让我们先来粗略地看一看Makefile的规则. target也就是一个目标文件,可以是Object File,也可以是执行文件. prerequisites就是,要生成那个target所需要的文件或是目标. command也就是make需要执行的命令. 这是一个文件的依赖关系,也就是说,target这一个或多个的目标文件依赖于prerequisites中的文件,其生成规则定义在 command中.
- 圣斌 - Adam's
VDSO(Virtual Dynamically-linked Shared Object)是个很有意思的东西, 它将内核态的调用映射到用户态的地址空间中, 使得调用开销更小, 路径更好.. 开销更小比较容易理解, 那么路径更好指的是什么呢. 拿x86下的系统调用举例, 传统的int 0×80有点慢, Intel和AMD分别实现了sysenter, sysexit和syscall, sysret, 即所谓的快速系统调用指令, 使用它们更快, 但是也带来了兼容性的问题.
- CSDN博客推荐文章
wget是linux最常用的下载命令,
一般的使用方法是: wget + 空格 + 要下载文件的url路径. 例如: # wget
http://www.linuxsense.org/xxxx/xxx.tar.gz. 简单说一下-c参数, 这个也非常常见, 可以断点续传, 如果不小心终止了, 可以继续使用命令接着下载.
- DBA Blog
2:如何限制用户的最小密码长度. 修改/etc/login.defs里面的PASS_MIN_LEN的值. 比如限制用户最小密码长度是8:. 3:如何使新用户首次登陆后强制修改密码. 4:更改Linux启动时用图形界面还是字符界面. 将id:5:initdefault: 其中5表示默认图形界面. 改id:3: initdefault: 3表示字符界面.
--> 坚持分享优质有趣的原创文章,并保留作者信息和版权声明,任何问题请联系:itarea.。

我要回帖

更多关于 linux输出重定向 的文章

 

随机推荐