使用>和>>都表示向结果重定向到一个文件中,区别在于>是覆盖式的重定向,会先将内容先清空,然后再将结果输入,而>>是追加式的重定向,是将要输入的内容追加在在已存在的内容后面,并不会清空文件。

实例:

[root@localhost ~]# echo 123456 > a.txt
[root@localhost ~]# cat a.txt
123456
[root@localhost ~]# echo 78910 >> a.txt
[root@localhost ~]# cat a.txt
123456
78910
[root@localhost ~]# echo 2468 > a.txt
[root@localhost ~]# cat a.txt
2468

  重定向符号>之前的数字(0表示标准输入,1表示标准输出,2表示错误输出),如果>之前没有添加数字,则默认为1,表示将 要正常显示的内容重定向到指定文件,如果出现错误,错误信息将显示在屏幕,而不会重定向到文件中,则不会将错误也写入文件中;如果 > 之前写的是2,表示如果出现错误,则将错误信息重定向到文件,而正常的命令的结果内容仍旧正常显示。

比如下面的例子:

ubuntu@ubuntu:~$ echo hello 1> a.txt
ubuntu@ubuntu:~$ cat a.txt
hello
ubuntu@ubuntu:~$ #等价与下面这个语句
ubuntu@ubuntu:~$ echo hello > a.txt
ubuntu@ubuntu:~$ cat a.txt
hello
ubuntu@ubuntu:~$ #当发生错误时,2> 会将错误的信息输出到文件中
ubuntu@ubuntu:~$ #而正常部分的内容仍会正常显示
ubuntu@ubuntu:~$ show 2> a.txt;echo world;
world
ubuntu@ubuntu:~$ #上一条命令中的show出现错误了,但是并没有出现错误信息,因为错误信息重定向到了a.txt中
ubuntu@ubuntu:~$ #第二条命令正常运行,所以结果正常显示。
The program 'show' can be found in the following packages:
* mailutils-mh
* nmh

  

  单独使用>或者2>,只能将错误或者正确的运行结果重定向到指定文件中,而如果要让正常运行的结果和出现异常时的提示信息都重定向到文件中的话,可以使用&>,注意没有&>>这种语法,即不能追加,但是可以通过其他方法实现。如下例:

#!/bin/bash
#test.sh ls
catt /

  执行脚本test.sh

ubuntu@ubuntu:~$ bash test.sh
a.txt Documents examples.desktop Pictures Templates Videos
Desktop Downloads Music Public test.sh
test.sh: line 5: catt: command not found
ubuntu@ubuntu:~$ cat a.txt
a.txt Documents examples.desktop Pictures Templates Videos
Desktop Downloads Music Public test.sh
ubuntu@ubuntu:~$ bash test.sh &>a.txt
ubuntu@ubuntu:~$ cat a.txt
a.txt Documents examples.desktop Pictures Templates Videos
Desktop Downloads Music Public test.sh
test.sh: line 5: catt: command not found

  尝试将输出(包含正确命令的输出和错误命令的提示信息)以追加方式重定向到一个文件中,重点在2>&1 表示将错误输出(2)也重定向到标准输出(1)中的管道中。

ubuntu@ubuntu:~$ bash test.sh 1>a.txt 2>&1 a.txt  #覆盖
ubuntu@ubuntu:~$ cat a.txt
a.txt Desktop Documents Downloads examples.desktop
Music Pictures Public Templates test.sh Videos
test.sh: line 5: catt: command not found
ubuntu@ubuntu:~$ bash test.sh 1>a.txt 2>&1 a.txt  #覆盖
ubuntu@ubuntu:~$ cat a.txt
a.txt Desktop Documents Downloads examples.desktop
Music Pictures Public Templates test.sh Videos
test.sh: line 5: catt: command not found
ubuntu@ubuntu:~$ bash test.sh 1>>a.txt 2>&1 a.txt #追加方式
ubuntu@ubuntu:~$ cat a.txt
a.txt Desktop Documents Downloads examples.desktop
Music Pictures Public Templates test.sh Videos
test.sh: line 5: catt: command not found
a.txt Desktop Documents Downloads examples.desktop
Music Pictures Public Templates test.sh Videos
test.sh: line 5: catt: command not found
ubuntu@ubuntu:~$

  

shell之重定向的更多相关文章

  1. Linux Shell系列教程之(十六) Shell输入输出重定向

    本文是Linux Shell系列教程的第(十六)篇,更多Linux Shell教程请看:Linux Shell系列教程 Shell中的输出和输入的重定向是在使用中经常用到的一个功能,非常实用,今天就为 ...

  2. shell 数据流重定向操作符总结

    最近看了鸟哥私房菜关于shell数据流重定向的内容,总结一下. 操作符: 1.标准输入(stdin):代码为0,符号:< 或者<< 2.标准输出(stdout):代码为1,符号:&g ...

  3. [转]linux shell数据重定向(输入重定向与输出重定向)详细分析

      在了解重定向之前,我们先来看看linux 的文件描述符. linux文件描述符:可以理解为linux跟踪打开文件,而分配的一个数字,这个数字有点类似c语言操作文件时候的句柄,通过句柄就可以实现文件 ...

  4. Linux——模拟实现一个简单的shell(带重定向)

    进程的相关知识是操作系统一个重要的模块.在理解进程概念同时,还需了解如何控制进程.对于进程控制,通常分成1.进程创建  (fork函数) 2.进程等待(wait系列) 3.进程替换(exec系列) 4 ...

  5. Shell中重定向&lt;&lt;EOF注意事项

    作者:iamlaosong 我们常常在shell脚本程序中用<<EOF重定向输入.将我们输入的命令字符串作为一个运行程序的输入,这样,我们就不须要在那个程序环境中手工输入命令,以便自己主动 ...

  6. linux shell数据重定向

    标准输入 (stdin) :代码为 0 ,使用 < 或 << :标准输出 (stdout):代码为 1 ,使用 > 或 >> :标准错误输出(stderr):代码为 ...

  7. shell日志重定向到null

    用输出重定向符号> 即可,格式如下:shell命令 >/dev/null 若要将标准错误输出也一并重定向,如下:shell命令 >/dev/null 2>&1这样就不管 ...

  8. 【Shell脚本学习24】Shell输入输出重定向:Shell Here Document,/dev/null文件

    Unix 命令默认从标准输入设备(stdin)获取输入,将结果输出到标准输出设备(stdout)显示.一般情况下,标准输入设备就是键盘,标准输出设备就是终端,即显示器. 输出重定向 命令的输出不仅可以 ...

  9. Linux shell之重定向输入,输出

    shell是一个命令解释器,它在操作系统的最外层,负责直接与用户对话,把用户的输入解释给操作系统,并处理各种各样的操作系统的输出结果,输出到屏幕返回给用户.这种对话方式可以是交互的方式(从键盘输入命令 ...

  10. shell 输入输出重定向

    1. 命令列表: command > file 将输出重定向到file command < file 将输入重定向到file command >> file 将输出以追加的方式 ...

随机推荐

  1. 控件布局_RelativeLayout

    android:layout_above 将该控件的底部至于给定ID的控件之上 android:layout_below 将该控件的顶部至于给定ID的控件之下 android:layout_toLef ...

  2. python五十七课——正则表达式(边界字符)

    演示匹配锚字符(边界字符)^:从字符串头部开始匹配,在开启多行模式下(re.M),可以尝试匹配每一行的头部数据$:从字符串尾部开始匹配,在开启多行模式下(re.M),可以尝试匹配每一行的尾部数据A:从 ...

  3. [WC2011]最大XOR和路径

    嘟嘟嘟 不愧是WC的题,思维真的很妙(虽然代码特别简单). 首先暴力找出所有路径肯定不行. 题中说可以经过重复的边,并且边权也会被计算多次.那么就是说,如果经过一条边再沿这条边回来,这条边的贡献就是0 ...

  4. luogu P4146 序列终结者

    嘟嘟嘟 这是一道splay基础题. 最坑的一点是,因为有些节点可能没有左儿子或右儿子,所以必须把t[0].Max赋成-INF! 因为这个调了半天,看来回头复习复习splay是对的-- #include ...

  5. 【转】这五种方法前四种方法只支持IE浏览器,最后一个方法支持当前主流的浏览器(火狐,IE,Chrome,Opera,Safari)

    <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...

  6. curl实例-通过新浪股票接口获取股票信息

    在学习curl的过程中,我们知道curl是相当于一个简单的浏览器,通过往对应的服务上面发送数据信息,返回服务器的响应结果,这个在Java里面主要是使用封装好的httpclient来进行操作,但是自己认 ...

  7. http://blog.csdn.net/pipisorry/article/details/51471222

    这个博主很有意思 机器学习之用Python从零实现贝叶斯分类器 参数估计:贝叶斯思想和贝叶斯参数估计

  8. the security of smart contract- 1

    https://blog.zeppelin.solutions/the-hitchhikers-guide-to-smart-contracts-in-ethereum-848f08001f05 这个 ...

  9. day14 Python函数之可变长参数

    函数参数 1.形参变量只有在被调用时才分配内存单元,在调用结束时,即刻释放所分配的内存单元.因此,形参只在函数内部有效.函数调用结束返回主调用函数后则不能再使用该形参变量 2.实参可以是常量.变量.表 ...

  10. [转]Python shutil 模块

    转自: https://www.cnblogs.com/wuzhiblog/p/6535527.html https://www.cnblogs.com/caibao666/p/6433864.htm ...