shell常用重定向实例讲解

所属分类: 脚本专栏 / linux shell 阅读数: 1145
收藏 0 赞 0 分享

每个打开的文件都会被分配一个文件描述符.stdin (键盘), stdout (屏幕), 和 stderr (错误消息输出到屏幕上)的文件描述符分别是0, 1, 和 2. 对于正在打开的额外文件, 保留了描述符3到9.

文件描述符是文件系统为了跟踪这个打开的文件而分配给它的一个数字。

下面以实例说明

1,>的用法

复制代码 代码如下:

[zhangy@localhost ~]$ echo "11111" > 1.txt
[zhangy@localhost ~]$ cat 1.txt
11111
[zhangy@localhost ~]$ echo "11111" 1> 1.txt    //这个用法和上面的用法是一样
[zhangy@localhost ~]$ cat 1.txt
11111
[zhangy@localhost ~]$ echo "22222" >1.txt
[zhangy@localhost ~]$ cat 1.txt
22222

这种用法我想大家都非常的熟悉,因为这是我经常会用到的。echo "11111" > 1.txt 时,>前面是有一个1的,是默认的。>重定向到文件时,会将文件清空,在写入。

复制代码 代码如下:

[zhangy@localhost ~]$ > 1.txt 
[zhangy@localhost ~]$ :> 1.txt 

上面的这个例子,可以把1.txt文件中的内容清空,其实也很好理解,清空后,不输入内容当然为空了。

2,>>的用法

复制代码 代码如下:

[zhangy@localhost ~]$ echo "2222" >> 2.txt
[zhangy@localhost ~]$ cat 2.txt
2222
[zhangy@localhost ~]$ echo "2222" >> 2.txt
[zhangy@localhost ~]$ cat 2.txt
2222
2222

从上面的这个例子我们可以看出,>>重定向到文件时,会将输出写到文件的结尾。这一点和>完全不同的。

3,0,1,2 到9,以及&

复制代码 代码如下:

[zhangy@localhost ~]$ cat 1.txt
 333
 111
 222
 444
 [zhangy@localhost ~]$ grep "22" 0< 1.txt  //把1.txt中的内容读取出来
 222
 [zhangy@localhost ~]$ ls tank 2>> 1.txt   //将错误信息放到文件的结尾
 [zhangy@localhost ~]$ cat 1.txt
 333
 111
 222
 444
 ls: tank: 没有那个文件或目录                 //这个就是 2>> 1.txt产生的内容
 [zhangy@localhost ~]$ (ls tank ;pwd) &>1.txt   //将错误信息,以及输出内容放到1.txt文件中,&(stderr,stdout)
 [zhangy@localhost ~]$ cat 1.txt
 ls: tank: 没有那个文件或目录
 /home/zhangy

i>&j重定向文件描述符i 到 j.指向i文件的所有输出都发送到j中去. i和j呢是0-9这间的数字

复制代码 代码如下:

[zhangy@localhost ~]$ ls tank 2>&1|egrep \* 1> 2.txt  //在这里我把错误信息重定向到了1,在这里1就会输出错误,根赋值差不多
[zhangy@localhost ~]$ cat 2.txt
ls: tank: 没有那个文件或目录

4,<>的用法
<这个符号是读取,>这个符号是输出,放在一起就打开并且读取,

复制代码 代码如下:

[zhangy@localhost ~]$ echo 123546 > 2.txt
[zhangy@localhost ~]$ exec 4<> 2.txt     //打开2.txt并将内容读取到&4中
[zhangy@localhost ~]$ read -n 4 <&4      //从&4中读取4个字符
[zhangy@localhost ~]$ echo -n . >&4      //在向&4写入一个点
[zhangy@localhost ~]$ exec 4>&-          //关闭输出文件描述符4
[zhangy@localhost ~]$ cat 2.txt
1235.6

能过上面的这个例子,就可以很清楚了解<>他的作用

5,n<&-关闭输入文件描述符n         n>&关闭输出文件描述符n

复制代码 代码如下:

[zhangy@localhost ~]$ ls tank          //会提示错误
ls: tank: 没有那个文件或目录
[zhangy@localhost ~]$ ls tank 2>&-     //我把错误关闭后,什么也不输出了

6,|管理命令

这个命令也是我们常用的,是典型的,把一个命令的输出,当作另一个命令的输入

复制代码 代码如下:

[zhangy@localhost ~]$ echo tank | wc -w
 1

表示tank是一个输出,但它又是wc的输入,不然就不会有统计出现了。

更多精彩内容其他人还在看

linux创建用户useradd命令代码示例

本文通过代码示例给大家介绍了adduser与useradd命令二者的关系 以及使用useradd命令添加用户的方法,需要的朋友参考下吧
收藏 0 赞 0 分享

Linux 中LVS NAT 配置步骤的详解

这篇文章主要介绍了Linux 中LVS NAT 配置步骤的详解的相关资料,这里列出详细的实现步骤,需要的朋友可以参考下
收藏 0 赞 0 分享

Linux中的内核链表实例详解

这篇文章主要介绍了Linux中的内核链表实例详解的相关资料,链表中一般都要进行初始化、插入、删除、显示、释放链表,寻找节点这几个操作,需要的朋友可以参考下
收藏 0 赞 0 分享

Shell中特殊字符的用法总结大全

这篇文章主要给大家总结了关于Shell中特殊字符的相关资料,文中包括分好、&、#、!、$、大于号、单双引号等等一系列特殊字符的用法,通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起看看吧。
收藏 0 赞 0 分享

Shell脚步攻略之管道重定向基础

管道是为了解决进程间通信问题而存在,它可以让两个进程之间的数据进行传递,将一个进程的输出数据传递给另一个进程作为其输入数据
收藏 0 赞 0 分享

Linux shell数组循环的实例详解

这篇文章主要介绍了Linux shell数组循环的实例详解的相关资料,这里举例说明如何实现shell数组循环,需要的朋友可以参考下
收藏 0 赞 0 分享

linux shell内置判断语句

内置判断,成功的时候返回0,不成功返回非零。接下来通过本文重点给大家介绍linux shell内置判断语句,感兴趣的的朋友一起看看吧
收藏 0 赞 0 分享

Linux文件的归档和压缩命令

文件归档命令tar,文件归档有好多好处,方便使用易于管理,接下来通过本文给大家分享linux文件的归档和压缩命令,感兴趣的朋友一起看看吧
收藏 0 赞 0 分享

Linux Shell中curl和wget使用代理IP的方法教程

这篇文章主要给大家介绍了关于在Linux Shell中curl和wget使用代理IP的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面跟着小编来一起学习学习吧。
收藏 0 赞 0 分享

Linux 日常常用指令及应用小结

最近在学习一些基本的Linux指令,在这里总结一下,在搭环境中常用的一些指令,熟悉这些指令就基本能够使用CentOS进行日常操作了
收藏 0 赞 0 分享
查看更多