Linux shell的标准输入、输出和错误

版权声明:本文为博主原创文章,未经博主允许不得转载。
1.文件描述符
在linux shell执行命令时,每个进程都和三个打开的文件相联系,并使用文件描述符来引用这些文件。由于文件描述符不容易记忆,shell同时也给出了相应的文件名:
| 文件 | 文件描述符 |
| 输入文件—标准输入 | 0(缺省是键盘,为0时是文件或者其他命令的输出) |
| 输出文件—标准输出 | 1(缺省是屏幕,为1时是文件) |
| 错误输出文件—标准错误 | 2(缺省是屏幕,为2时是文件) |
系统中实际上有12个文件描述符,我们可以任意使用文件描述符3到9.
2.文件重定向:改变程序运行的输入来源和输出地点
2.1.输出重定向:
| Command > filename | 把标准输出重定向到一个新文件中 |
| Command >> filename | 把标准输出重定向到一个文件中(追加) |
| Command > filename | 把标准输出重定向到一个文件中 |
| Command > filename 2>&1 | 把标准输出和错误一起重定向到一个文件中 |
| Command 2 > filename | 把标准错误重定向到一个文件中 |
| Command 2 >> filename | 把标准输出重定向到一个文件中(追加) |
| Command >> filename2>&1 | 把标准输出和错误一起重定向到一个文件(追加) |
2.2.输入重定向:
| Command < filename > filename2 | Command命令以filename文件作为标准输入,以filename2文件作为标准输出 |
| Command < filename | Command命令以filename文件作为标准输入 |
| Command << delimiter | 从标准输入中读入,知道遇到delimiter分界符 |
2.3.绑定重定向
| Command >&m | 把标准输出重定向到文件描述符m中 |
| Command < &- | 关闭标准输入 |
| Command 0>&- | 同上 |
3.shell重定向的一些高级用法
3.1.重定向标准错误
例子1:
command 2> /dev/null
如果command执行出错,将错误的信息重定向到空设备
例子2:
command > out.put 2>&1
将command执行的标准输出和标准错误重定向到out.put(也就是说不管command执行正确还是错误,输出都打印到out.put)。
3.2.exec用法
exec命令可以用来替代当前shell;换句话说,并没有启动子shell,使用这一条命令时任何现有环境变量将会被清除,并重新启动一个shell(重新输入用户名和密码进入)。
exec command
其中,command通常是一个shell脚本。
对文件描述符操作的时候用(也只有再这时候),它不会覆盖你当前的shell
例子1:
#!/bin/bash
#file_desc
exec 3<&0 0<name.txt
read line1
read line2
exec 0<&3
echo $line1
echo $line2
其中:
首先,exec 3<&0 0<name.txt的意思是把标准输入重定向到文件描述符3(0表示标准输入),然后把文件name.txt内容重定向到文件描述符0,实际上就是把文件name.txt中的内容重定向到文件描述符3。然后通过exec打开文件描述符3;
然后,通过read命令读取name.txt的第一行内容line1,第二行内容line2,通过Exec 0<&3关闭文件描述符3;
最后,用echo命令输出line1和line2。最好在终端运行一下这个脚本,亲自尝试一下。
例子2:
exec 3<>test.sh;
#打开test.sh可读写操作,与文件描述符3绑定
while read line<&3
do
echo $line;
done
#循环读取文件描述符3(读取的是test.sh内容)
exec 3>&-
exec 3<&-
#关闭文件的,输入,输出绑定
参考:
http://http://blog.csdn.net/cjfeii/article/details/10084343
http://zqwt.012.blog.163.com/blog/static/1204468420103272857116/
http://www.cnblogs.com/chengmo/archive/2010/10/20/1855805.html
Linux shell的标准输入、输出和错误的更多相关文章
- Linux系统教程 标准输入/输出和重定向
1. 标准输入与输出 我们知道,执行一个shell命令行时通常会自动打开三个标准文件,即标准输入文件(stdin),通常对应终端的键盘:标准输出文件(stdout)和标准错误输出文件(stderr), ...
- Linux Shell 下的输出重定向
linux 环境中支持输入输出重定向,用符号<和>来表示. 0.1和2分别表示标准输入.标准输出和标准错误信息输出, 可以用来指定需要重定向的标准输入或输出,比如 2>a.txt 表 ...
- 有关linux标准输出、标准输入、标准错误的重定向问题
1.简单的命令行重定向问题. 例:ls -al test test1 test2 1>out.txt 2>err.tx 这里ls这句命令行命令之后将标准输入重定向到out ...
- 学习笔记之Shell脚本的输出重定向
shell http://baike.baidu.com/link?url=qN3THt5ZJhQtwRJJkakWdz5-vZp4V9H3OmNP97XNhaoL-dqU-6rrFrYfHXmYv6 ...
- Linux shell标准输入,标准输出,错误输出
shell中可能经常能看到:1>/dev/null 2>&1 eg:sudo kill -9 `ps -elf |grep -v grep|grep $1|awk '{prin ...
- Linux标准输入、输出和错误和文件重定向(转) --- good
标准输入.输出和错误 当我们在shell中执行命令的时候,每个进程都和三个打开的文件相联系,并使用文件描述符来引用这些文件.由于文件描述符不容易记忆,shell同时也给出了相应的文件名.下面就是这些文 ...
- [转帖]Linux的标准输入 标准输出和错误输出
Linux标准输入.输出和错误和文件重定向 专题 https://www.cnblogs.com/softidea/p/3965093.html 感觉自己对 这一块的理解一直不好 昨天同事给了一个 b ...
- Linux标准输入、输出和错误和文件重定向 专题
当我们在shell中执行命令的时候,每个进程都和三个打开的文件相联系,并使用文件描述符来引用这些文件.由于文件描述符不容易记忆,shell同时也给出了相应的文件名. 下面就是这些文件描述符及它们通常所 ...
- [转]linux shell数据重定向(输入重定向与输出重定向)详细分析
在了解重定向之前,我们先来看看linux 的文件描述符. linux文件描述符:可以理解为linux跟踪打开文件,而分配的一个数字,这个数字有点类似c语言操作文件时候的句柄,通过句柄就可以实现文件 ...
随机推荐
- WPS2013三合一全套精品视频教程-【word,excel,powerpoint】
WPS2013三合一全套精品视频教程-[word,excel,powerpoint]教程目录: 下载地址:http://www.fu83.cn/thread-184-1-1.html
- 20135328信息安全系统设计基础第一周学习总结(Linux应用)
学习计时:共xxx小时 读书: 代码: 作业: 博客: 一.学习目标 1. 能够独立安装Linux操作系统 2. 能够熟练使用Linux系统的基本命令 3. 熟练使用Linux中用户管理命令/ ...
- c#上利用NPlot实现动态曲线图需要的dll文件
这儿暂时只提供我之间根据网上的方法编译出来的dll文件,大家如果需要直接在vs项目上导入就行了,然后在工具箱里就会自动添加一项,大家添加上去就知道了. 下载地址:http://pan.baidu.co ...
- 20145208《Java程序设计》第3周学习总结
20145208 <Java程序设计>第3周学习总结 教材学习内容总结 认识对象 类类型 在第三章的学习中,我了解到JAVA可区分为基本类型和类类型两种类型,在上周的学习中我学习了JAVA ...
- 从Lumia退役看为什么WP走向没落
前段时间决定将自己用了三年多的Lumia 800正式退役,这是我用的时间最长的手机,虽然系统上有缺陷,但是好不妨碍他成为我最有感情的一部手机.由于之前是WinPhone 开发者的关系,这部手机是微软送 ...
- 【开源】XPShadow, 用阴影让UWP更有层次感
UWP采用的是纯扁平化的设计,个人感觉极端了点,整个世界都是平的,导致App分不清层次,看不出重点.其实扁平化是趋势,android, ios都在搞,问题是android, ios都可以很轻松的实现阴 ...
- 怎样写 OpenStack Neutron 的 Extension (三)
通过上几章的介绍,我们现在的 myplugin 文件夹看上去应该是这样的: - neutron/ - plugins/ - myplugin/ - __init__.py - plugin.py - ...
- Andriod Studio Clear Project或Rebuild Project出错
以前在Eclipse中出现过类似的错误:在编译工程时,提示无法删除bin目录下的某个jar. 想不到Android Studio中也会有. Clear Project或Rebuild Project, ...
- Javascript基础系列之(三)数据类型 (数值 Number)
javascript中想限定一个数的数值,无需限定它是整数还是浮点数型 var num1 = 80 ; var num2 = 55.51; var num3 = -34; var num4 = 9e5 ...
- iOS开发小技巧--设置按钮圆角
方法一:代码设置 方法二:通过图形化界面