linux中的标准输出和输入
===============1.有些人经常问我这个问题问题===========
经常在脚本里面看到这个 2>&1 表示什么意思啊?
==============2.理论==========================
在linux中,每个进程都会有三个文件,并且这三个文件会进行重定向处理:
/dev/stdin ----->/proc/self/fd/0 //表示标准输入,即键盘输入
/dev/stdout ----->/proc/self/fd/1 //表示标准输出,即显示屏,屏幕
/dev/stderr ----> /proc/self/fd/2 //表示标准错误输出,有些脚本运行时会报错,就会输入到这。
你看到的2>&1中的数字就是上面重定向后的数字。
0: 表示键盘输入
1:将信息输入到屏幕(一般linux命令都是默认为1)
2:将信息输入到错误输出
===================3.举个栗子====================
在终端中写一个sh文件
>>>>>>>>>>>>>>
$cat demo.sh
#!/bash/bin
xxxx
date
<<<<<<<<<<<<<<
执行这个sh文件,并将输出到demo.log中
./demo.sh > demo.log
./demo.sh: line 2: xxxx: command not found
由于xxxx不是linux命令会报错,并且将错误信息输出到屏幕(标准输出),而date是linux
命令,会正确输出,并将正确的信息输出到demo.log文件中
cat demo.log
Sat Mar 5 09:49:11 HKT 2016
==============4.再回头看最开始的问题============
2>&1 意思就很明了了,就是讲执行linux命令时的错误信息也输出到屏幕上。
./demo.sh 2>&1
./demo.sh: line 2: xxxx: command not found
Sat Mar 5 09:57:09 HKT 2016
===============收工======================
linux中的标准输出和输入的更多相关文章
- linux中Shell标准输出错误 >/dev/null 2>&1 分析【转】
Shell中可能经常能看到:>/dev/null 2>&1 eg:sudo kill -9 `ps -elf |grep -v grep|grep $1|awk '{print ...
- linux中的输入从定向和输出重定向
linux的标准的输入和输出为如下 我们在 linux中执行命令时,命令默认输出到console中,很多时候我们需要将命令输出到其他设备上如最常见的就文件中去,或者重文件中输入.那这时候就需要用到li ...
- 在Linux中输入命令时打错并按了enter
今天在Linux中输入命令时,打错一个单词了,之后出现一串串的~,按ESC也没用, 并在底部出现:quit<enter> to exit vim 解决办法: 按几下 esc 确保 vim ...
- Linux中检索文件
1 , Use locate command It is a fast way to find the files location, but if a file just created ,it w ...
- [转]linux shell数据重定向(输入重定向与输出重定向)详细分析
在了解重定向之前,我们先来看看linux 的文件描述符. linux文件描述符:可以理解为linux跟踪打开文件,而分配的一个数字,这个数字有点类似c语言操作文件时候的句柄,通过句柄就可以实现文件 ...
- <实训|第十一天>学习一下linux中的进程,文件查找,文件压缩与IO重定向
[root@localhost~]#序言 在今后的工作中,运维工程师每天的例行事务就是使用free -m,top,uptime,df -h...每天都要检查一下服务器,看看是否出现异常.那么今天我们就 ...
- linux中socket的理解
对linux中socket的理解 一.socket 一般来说socket有一个别名也叫做套接字. socket起源于Unix,都可以用“打开open –> 读写write/read –> ...
- Linux中exec命令相关
Linux中exec命令相关 exec和source都属于bash内部命令(builtins commands),在bash下输入man exec或man source可以查看所有的内部命令信息. b ...
- Linux就这个范儿 第15章 七种武器 linux 同步IO: sync、fsync与fdatasync Linux中的内存大页面huge page/large page David Cutler Linux读写内存数据的三种方式
Linux就这个范儿 第15章 七种武器 linux 同步IO: sync.fsync与fdatasync Linux中的内存大页面huge page/large page David Cut ...
随机推荐
- linux中kill命令
Linux中的kill命令用来终止指定的进程(terminate a process)的运行,是Linux下进程管理的常用命令.通常,终止一个前台进程可以使用Ctrl+C键,但是,对于一个后台进程就须 ...
- OpenGL中各种坐标系的理解
转载:https://blog.csdn.net/meegomeego/article/details/8686816 OPENGL坐标系可分为:世界坐标系和当前绘图坐标系. 世界坐标系以屏幕中心为原 ...
- iOS:自定义字体
转自: <iOS tips: Custom Fonts> Post by Steve Vlaminck My good friend google told me that using a ...
- Run ASP.NET MVC site on mac (mono/xamarin studio)
我们选择用xamarin studio来测试,如果你直接进xamarin的官网,那么会有一个更好看的网站和更复杂的流程(比如需要注册),我们直接到mono项目找mac的支持吧,点此进入 相关sdk和a ...
- bat 变量作用域
set answer=one if true equ true ( set answer=two echo %answer% ) echo Argument is %answer% pause
- C#爬网页时“远程服务器返回错误: (403) 已禁止”解决方法
HttpWebRequest myReq = (HttpWebRequest)WebRequest.Create(uri); //这个一定要加上,在某些网站没有会发生"远程服务器返回错误: ...
- js中push()的用法
定义和用法 push() 方法可向数组的末尾添加一个或多个元素,并返回新的长度. 语法 arrayObject.push(newelement1,newelement2,....,newelement ...
- Sublime text2插件
Sublime插件: Sublime有好几种安装插件的方法,但是最好用也是最长用的是ctrl+shift+p. 第一步: 使用ctrl+` 调出Sublime控制台,在控制台中输入 import ur ...
- c++友元函數---16
原创博文,转载请标明出处--周学伟http://www.cnblogs.com/zxouxuewei/ 有些情况下,允许特定的非成员函数访问一个类的私有成员,同时仍阻止一般的访问,这是很方便做到的.例 ...
- SpringMVC -- 梗概--源码--壹--springMVC json处理
附:实体类 Class : User package com.c61.entity; import java.text.SimpleDateFormat; import java.util.Date; ...