深入linux上shell重定向详解
时间:2014-08-08 02:09 来源:linux.it.net.cn 作者:it
在linux中重定向,一般这样:
复制代码代码示例:
$ls -la > www.it.net.cn.txt
以上语法形式就是shell的重定向,本来应该输出到bash的数据流,被>重定向到后面的文件www.jbxue.com.txt了。
1、对标准文件描述符的重定向
文件描述符的含义,0代表以一个程序的标准输入,1代表标准输出,2代表标准错误输出,其他的暂时忽略。
对于shell的重定向可以根据文件描述符的不同定向到不同的位置。
简单理解:正确的信息可以定向到A,错误的信息可以定向到B。
例子:
复制代码代码示例:
tar zcvf www.it.net.cn.tar.gz www.it.net.cn >tar.out.txt //把打包文件的记录写到tar.out.txt文件
tar zcvf www.it.net.cn.tar.gz www.it.net.cn >tar.out.txt 2 > tar.error.out.txt //把打包文件的记录写到tar.out.txt文件,并且把错误信息写入tar.error.out.txt文件
tar zcvf www.it.net.cn.tar.gz www.it.net.cn >tar.out.txt 2 >&1 //把打包文件的记录写到tar.out.txt文件,并且把错误信息也写入tar.out.txt 文件,注意 >&语法格式,表示结合两个输出。
2、关于追加模式的说明>>
>>表示对文件的追加,而>是会删除原有内容的
例子:
复制代码代码示例:
free >>free.txt //表示以追加的模式写入free.txt 文件。
3、如何丢弃有效内容
有些shell命令我们是不需要显示在bash上,也不需要重定向到文件中,就需要丢弃这部分有效内容,怎么办呢?
很简单,可以尝试使用linux通用的回收站,/dev/null来解决。
举例:
复制代码代码示例:
kill -1 1111 >/dev/null 2>&1 //返回信息以及错误信息都丢弃
4、文件覆盖与文件不覆盖说明
默认情况下,通过>重定向文件,如果文件已经存在的话,他的内容会被覆盖。如果要改变默认行为,即不覆盖的话,请使用set
复制代码代码示例:
set -o noclobber 或者set -C //阻止文件重定向操作对一个文件的覆盖
set +o noclobber //恢复 文件重定向操作对一个文件的覆盖
5、重定向输入<
举例
复制代码代码示例:
vi < it.net.cn.conf
vi本身就可以接收文件名做参数!
(责任编辑:IT)
在linux中重定向,一般这样:
复制代码代码示例:
$ls -la > www.it.net.cn.txt
以上语法形式就是shell的重定向,本来应该输出到bash的数据流,被>重定向到后面的文件www.jbxue.com.txt了。
1、对标准文件描述符的重定向
例子:
复制代码代码示例:
tar zcvf www.it.net.cn.tar.gz www.it.net.cn >tar.out.txt //把打包文件的记录写到tar.out.txt文件
tar zcvf www.it.net.cn.tar.gz www.it.net.cn >tar.out.txt 2 > tar.error.out.txt //把打包文件的记录写到tar.out.txt文件,并且把错误信息写入tar.error.out.txt文件 tar zcvf www.it.net.cn.tar.gz www.it.net.cn >tar.out.txt 2 >&1 //把打包文件的记录写到tar.out.txt文件,并且把错误信息也写入tar.out.txt 文件,注意 >&语法格式,表示结合两个输出。
2、关于追加模式的说明>>
例子:
复制代码代码示例:
free >>free.txt //表示以追加的模式写入free.txt 文件。
3、如何丢弃有效内容
举例:
复制代码代码示例:
kill -1 1111 >/dev/null 2>&1 //返回信息以及错误信息都丢弃
4、文件覆盖与文件不覆盖说明
复制代码代码示例:
set -o noclobber 或者set -C //阻止文件重定向操作对一个文件的覆盖
set +o noclobber //恢复 文件重定向操作对一个文件的覆盖
5、重定向输入<
复制代码代码示例:
vi < it.net.cn.conf
vi本身就可以接收文件名做参数! (责任编辑:IT) |