当前位置: 首页 > news >正文

linux 21的用法

linux中有三种标准输入输出,分别是STDIN,STDOUT,STDERR,对应的数字是0,1,2。STDIN就是标准输入,默认从键盘读取信息;STDOUT是标准输出,默认将输出结果输出至终端,也就是显示器之类的东西;STDERR是标准的错误信息,默认也会显示在终端上。由于STDOUT与STDERR都会默认显示在终端上,为了区分二者的信息,就有了编号的0,1,2的定义,用1表示STDOUT,2表示STDERR。
下面举个例子:以rhce中的例子为例。
1、在系统中创建一个普通用户test;
2、以普通用户登录,或者以root登录 su -test 切换至普通用户test;
3、执行 find /etc -name passwd 命令,默认会将命令的执行结果(STDOUT)与错误信息(STDERR)都输出至终端显示器。
4、体验一下编号1,2的作用,find /etc -name passwd >find.out 2>find.err,这里会将STDOUT与STDERR分别存放至find.out和find.err中,该命令也可以写成下面三种形式,大家可以体会一下编号的意义。
find /etc -name passwd 1>find.out 2>find.err
find /etc -name passwd 2>find.err >find.out
find /etc -name passwd 2>find.err 1>find.out
我个人理解就是find /etc -name passwd的命令的执行结果输出正确的输出(STDOUT)被1接收,错误的信息(STDERR)被2接收。
5、若要将所有的输出及错误信息都显示出来,可以用&表示全部1和2的信息,例如:
find /etc -name passwd &>find.all
6、有时候希望将错误的信息重新定向到输出,就是将2的结果重定向至1中就有了"2>1"这样的思路,如果按照上面的写法,系统会默认将错误的信息(STDERR)2重定向到一个名字为1的文件中,而非所想的(STDOUT)中。因此需要加&进行区分。就有了 2>&1 这样的用法,举例:
find /etc -name passwd 2>&1 |less
7、有时候还能看到这样的用法:
find /etc -name passwd &2>&1 |less
这里可以分解成
find /etc -name passwd & 表示前面的命令放到后台执行。
2>&1 |less 表示将错误信息重定向至标准输出,并用less进行分页显示。

原文:http://blog.csdn.net/zhoubl668/article/details/27657201

这篇文章解释的更清楚:http://www.runoob.com/linux/linux-shell-io-redirections.html

==========================补充==================================

文件描述符及重定向:
文件描述符是与文件输入、输出相关联的整数。它们用来跟踪已打开的文件。最常见的文件描述符是stdin、stdout和stderr。我们甚至可以将某个文件描述符的内容重定向到另一个文件描述符中。
在编写脚本的时候会频繁使用标准输入(stdin)、标准输出(stdout)和标准错误(stderr)。通过内容过滤将输出重定向到文件是我们平日里的基本任务之一。当命令输出文本 时,这些输出文本有可能是错误信息,也可能是正常的(非错误的)输出信息。单靠查看输出的文本本身,我们没法区分哪些是正常,哪些是错误。不过可以通过文件描述符来解决这个问题,将那些与特定描述符关联的文本提取出来。
文件描述符是与某个打开的文件或数据流相关联的整数。文件描述符0、1以及2是系统预留的。
 0 —— stdin(标准输入)。
 1 —— stdout(标准输出)。
 2 —— stderr(标准错误)。
(1) 用下面的方法可以将输出文本重定向或保存到一个文件中:
$ echo "This is a sample text 1" > temp.txt
这种方法通过截断文件的方式,将输出文本存储到文件temp.txt中,也就是说在把echo命令的输出写入文件之前,temp.txt中的内容首先会被清空。
(2) 将文本追加到目标文件中,看下面的例子:
$ echo "This is sample text 2" >> temp.txt
(3) 查看文件内容:
$ cat temp.txt
This is sample text 1
This is sample text 2
(4) 来看看什么是标准错误以及如何对它重定向。当命令输出错误信息时,stderr信息就会被打印出来。
$ ls +
ls: cannot access +: No such file or directory

这里,+是一个非法参数,因此将返回错误信息。
成功和不成功的命令:
当一个命令发生错误并退回时,它会返回一个非0的退出状态;而当命令成功完成后,它会返回数字0。退出状态可以从特殊变量$?中获得(在命令执行之后立刻运行echo $?,就可以打印出退出状态)。

下面的命令会将stderr文本打印到屏幕上,而不是文件中(而且因为并没有stdout的输出,所以out.txt没有内容):
$ ls + > out.txt
ls: cannot access +: No such file or directory

下面的命令中,我们将stderr重定向到out.txt:
$ ls + 2> out.txt #正常运行
你可以将stderr单独重定向到一个文件,将stdout重定向到另一个文件:
$ cmd 2>stderr.txt 1>stdout.txt
还可以利用下面这个更好的方法将stderr转换成stdout,使得stderr和stdout都被重定向到同一个文件中:
$ cmd 2>&1 output.txt
或者这样:
$ cmd &> output.txt    ---这三种方式用得多一些

转载于:https://www.cnblogs.com/rusking/p/6888483.html

相关文章:

  • shell脚本编程30分钟入门上手
  • 跟着实例学习ZooKeeper的用法: Leader选举
  • R语言数据可视化2—ggplot2各种维度的业务量统计根据类型统计不同月份的业务量...
  • 使用InteliJ IDEA导出jar包执行报错:找不到主清单属性
  • Ubuntu14.04下sogou输入法的输入框只显示英文不显示中文的问题
  • CentOS 7 更新源 – 使用国内 163 yum 源
  • Linux 的五个重启命令及具体说明
  • 蓝桥杯练习
  • C# 单元测试,带你快速入门
  • 大数据学习系列----python写MapReduce
  • Centos7下Gitlab迁移数据库mysql过程
  • 后缀数组
  • 深入浅出Zabbix 3.0 -- 第十章 Web 监控
  • PHP中switch语句case后表达式写法记录
  • 【编程简化生活】Deleter,为批量处理而生
  • 【划重点】MySQL技术内幕:InnoDB存储引擎
  • CSS盒模型深入
  • css选择器
  • maya建模与骨骼动画快速实现人工鱼
  • MyEclipse 8.0 GA 搭建 Struts2 + Spring2 + Hibernate3 (测试)
  • MYSQL 的 IF 函数
  • Python进阶细节
  • XML已死 ?
  • 个人博客开发系列:评论功能之GitHub账号OAuth授权
  • 回流、重绘及其优化
  • 前端相关框架总和
  • 前嗅ForeSpider中数据浏览界面介绍
  • 如何优雅的使用vue+Dcloud(Hbuild)开发混合app
  • 使用 5W1H 写出高可读的 Git Commit Message
  • 数据科学 第 3 章 11 字符串处理
  • 腾讯优测优分享 | Android碎片化问题小结——关于闪光灯的那些事儿
  • 延迟脚本的方式
  • 应用生命周期终极 DevOps 工具包
  • 用Visual Studio开发以太坊智能合约
  • 与 ConTeXt MkIV 官方文档的接驳
  • 《码出高效》学习笔记与书中错误记录
  • ​io --- 处理流的核心工具​
  • ​LeetCode解法汇总307. 区域和检索 - 数组可修改
  • ​如何防止网络攻击?
  • # 日期待t_最值得等的SUV奥迪Q9:空间比MPV还大,或搭4.0T,香
  • (10)ATF MMU转换表
  • (8)Linux使用C语言读取proc/stat等cpu使用数据
  • (C#)if (this == null)?你在逗我,this 怎么可能为 null!用 IL 编译和反编译看穿一切
  • (八)光盘的挂载与解挂、挂载CentOS镜像、rpm安装软件详细学习笔记
  • (笔试题)分解质因式
  • (附源码)计算机毕业设计ssm高校《大学语文》课程作业在线管理系统
  • (附源码)计算机毕业设计高校学生选课系统
  • ******之网络***——物理***
  • ***原理与防范
  • .bashrc在哪里,alias妙用
  • .halo勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复
  • .java 指数平滑_转载:二次指数平滑法求预测值的Java代码
  • .net获取当前url各种属性(文件名、参数、域名 等)的方法
  • @GlobalLock注解作用与原理解析
  • [ C++ ] STL---stack与queue