linux命令重定向>、>>、 1>、 2>、 1>>、 2>>、 <
重定向命令其实用得不少吧,只是重来都没有仔细看过,这波正好又用到 又有空总结一波。
先看>和>>:
他们俩其实唯一的区别就是>是重定向到一个文件,>>是追加内容到文件。两个命令都是如果文件不存在则创建文件。举个例子来看看:
(thrift_rpc)piperck➜ Desktop ᐅ ll >> .txt
(thrift_rpc)piperck➜ Desktop ᐅ ll | grep .txt
-rw-r--r-- piperck staff .8K Dec : .txt
可以看到可以将ll的输出 重定向到123.txt中, >也是同样的效果。只是如果使用>执行重定向的位置没有这个文件
(thrift_rpc)piperck➜ Desktop ᐅ ls > /poweqpikp/
zsh: no such file or directory: /poweqpikp/
(thrift_rpc)piperck➜ Desktop ᐅ ls >> /poweqpikp/
zsh: no such file or directory: /poweqpikp/
(thrift_rpc)piperck➜ Desktop ᐅ ls >
(thrift_rpc)piperck➜ Desktop ᐅ ls >>
但是如果你重定向的是没有的文件夹里面的文件,那么文件夹他是不会帮你创建的,所以会报出错误,这点要注意。
然后是 1>、 2>、 1>>、 2>>的使用,
当我们需要把一个文件正确的输出,和错误的输出分开保存的时候就能用到他们啦。让我用一个简单的python脚本来做一个实验
python脚本如下
# coding: utf-8 if __name__ == '__main__':
print 'gogogog'
int('qiowjeioqwjeo')
该脚本会正确执打印gogogog 然后 报出下面强转的错误。
(thrift_rpc)piperck➜ py_pra ᐅ python pp.py 1> right.txt 2> wrong.txt
(thrift_rpc)piperck➜ py_pra ᐅ ls
NS8A_client gevent pp.py starcraft2
baidu_phoneassist laplace_pra right.txt wrong.txt
(thrift_rpc)piperck➜ py_pra ᐅ cat right.txt
gogogog
(thrift_rpc)piperck➜ py_pra ᐅ cat wrong.txt
Traceback (most recent call last):
File "pp.py", line 6, in <module>
int('qiowjeioqwjeo')
ValueError: invalid literal for int() with base 10: 'qiowjeioqwjeo'
可以看到,正确的输出被保存进了right.txt 而错误的输出被重定向到了wrong.txt 。
那么如果我们不区分1>2>这样的重定向规则,运行结果会被保存成什么样子呢?
(thrift_rpc)piperck➜ py_pra ᐅ python pp.py > pp.txt
Traceback (most recent call last):
File "pp.py", line 6, in <module>
int('qiowjeioqwjeo')
ValueError: invalid literal for int() with base 10: 'qiowjeioqwjeo'
(thrift_rpc)piperck➜ py_pra ᐅ cat pp.txt
gogogog
可以看到只保存了正确的结果,错误的信息被打印到标准输出上面。
那如果我们想让错误和正确的结果都被重定向到同一个文件又应该怎么做呢。
(thrift_rpc)piperck➜ py_pra ᐅ python pp.py 1> ppp.txt 2>&1
(thrift_rpc)piperck➜ py_pra ᐅ cat ppp.txt
gogogog
Traceback (most recent call last):
File "pp.py", line 6, in <module>
int('qiowjeioqwjeo')
ValueError: invalid literal for int() with base 10: 'qiowjeioqwjeo'
可以看到,我们将错误也重定向到和1相同的文件 就实现了这个需求。
同理1>> 2>>其实也就是追加数据到文件中,和前面介绍的> >>没有什么不同,需要提到的一点是,如果我们想将错误的和正确的信息重定向追加到同一个文件应该怎么做呢?你可能会想到2>>&1。。。然而现实是,并没有这个语法。
然而我们却可以使用1>>pp.txt 2>&1的语法实现这个功能
(thrift_rpc)piperck➜ py_pra ᐅ python pp.py 1>> pp.txt 2>&1
(thrift_rpc)piperck➜ py_pra ᐅ cat pp.txt
gogogog
gogogog
Traceback (most recent call last):
File "pp.py", line 6, in <module>
int('qiowjeioqwjeo')
ValueError: invalid literal for int() with base 10: 'qiowjeioqwjeo'
gogogog
Traceback (most recent call last):
File "pp.py", line 6, in <module>
int('qiowjeioqwjeo')
ValueError: invalid literal for int() with base 10: 'qiowjeioqwjeo'
可见看似1> 1>> 2> 2>>是相一一对应的,但是其实不是,他们可以混用,比方说正确的结果想追加,错误的结果我想覆盖。
(thrift_rpc)piperck➜ py_pra ᐅ python pp.py 1>>right.txt 2>wrong.txt
(thrift_rpc)piperck➜ py_pra ᐅ cat right.txt
gogogog
(thrift_rpc)piperck➜ py_pra ᐅ cat wrong.txt
Traceback (most recent call last):
File "pp.py", line 6, in <module>
int('qiowjeioqwjeo')
ValueError: invalid literal for int() with base 10: 'qiowjeioqwjeo'
(thrift_rpc)piperck➜ py_pra ᐅ python pp.py 1>>right.txt 2>wrong.txt
(thrift_rpc)piperck➜ py_pra ᐅ cat right.txt
gogogog
gogogog
(thrift_rpc)piperck➜ py_pra ᐅ cat wrong.txt
Traceback (most recent call last):
File "pp.py", line 6, in <module>
int('qiowjeioqwjeo')
ValueError: invalid literal for int() with base 10: 'qiowjeioqwjeo'
类似这种组合混用的情况,相对来说也不少见。也可以看出重定向标识的灵活性。
那么如果我们想保存正确的结果,错误的结果直接丢向垃圾站,既不保存为文件,也不在标准输出打印又该怎么做呢?
(thrift_rpc)piperck➜ py_pra ᐅ python pp.py 1>>right.txt 2>/dev/null
(thrift_rpc)piperck➜ py_pra ᐅ cat right.txt
gogogog
gogogog
gogogog
直接将错误输出重定向到/dev/null 就好了,他就像一个无底洞,丢进去的东西就不见了。
那么<又是什么意思呢?<可以将原本由标准输入改为由指定地方输入举个例子就明白了:
(thrift_rpc)piperck➜ py_pra ᐅ vi hh
(thrift_rpc)piperck➜ py_pra ᐅ >> txt.py < hh
(thrift_rpc)piperck➜ py_pra ᐅ cat txt.py
qwejqwoijeoq
灵活使用重定向标识符 将极大方便我们日常对系统的操作,和灵活控制脚本的运作,所以一定要掌握哟!
Reference:
http://blog.chinaunix.net/uid-298599-id-2443108.html Linux - 命令重定向
linux命令重定向>、>>、 1>、 2>、 1>>、 2>>、 <的更多相关文章
- Linux - 命令重定向
命令重定向, 就是将目前得到的数据转移到指定的地方.分为以下几种: >>>1>2>1>>2>>< 1. > 与 >>先看一 ...
- linux命令重定向>、>>、 1>、 2>、 1>>、 2>>、 <(转)
原文章地址:https://www.cnblogs.com/piperck/p/6219330.html >和>>: 他们俩其实唯一的区别就是>是重定向到一个文件,>&g ...
- LINUX常用命令--重定向、管道篇(四)
一.Linux重定向 重定向能够实现Linux命令的输入输出与文件之间重定向,以及实现将多个命令组合起来实现更加强大的命令.这部分涉及到的比较多的命令主要有: 涉及到的比较多的命令主要有: cat:连 ...
- Linux输入输出重定向和文件查找值grep命令
Linux输入输出重定向和文件查找值grep命令 一.文件描述符Linux 的shell命令,可以通过文件描述符来引用一些文件,通常使用到的文件描述符为0,1,2.Linux系统实际上有12个文件描述 ...
- linux 命令 htop & 重定向 top, bashrc文件
最近在用linux服务器跑程序,有几条linux命令还蛮重要的,总结一下: 1. 直接跑代码: python test.py 2. 若想程序在后台跑,即使本地和服务器断开也能运行: nohup pyt ...
- Linux命令之文件重定向2
linux中重定向用符号“>”表示,语法一般是 源文件 > 目标文件 1)创出.txt文件touch 1.txt 注意:创建文件夹用mkdir 2)向.txt文件中写入内容 注意:①cat ...
- Linux命令- echo、grep 、重定向、1>&2、2>&1的介绍
最近笔试遇到一道题,关于Linux命令的,题目如下 下面两条命令分别会有怎样的输出 echo hello 1>&2 |grep aaa echo hello 2>&1 ...
- Linux入门之常用命令(6)Bash命令重定向 管线命令
命令重定向 将目前所得数据转移到其他地方 > 将输出结果导入文件 如 ls -l / >test (1)若test文件不存在则创建 (2)若test文件存在 清空后写入 > ...
- Linux实战教学笔记04:Linux命令基础
第四节:Linux命令基础 标签(空格分隔):Linux实战教学笔记 第1章 认识操作环境 root:当前登陆的用户名 @分隔符 chensiqi:主机名 -:当前路径位置 用户的提示符 1.1 Li ...
随机推荐
- jsp 进度条
<html> <head> <title>进度条</title> <style type="text/css"> ...
- Docker容器常用命令
容器是镜像的一个运行实例.两者不同的是,镜像是静态的只读文件,而容器带有运行时需要的可写文件层. 一.创建容器 1.新建容器 docker create:新建一个容器 create命令命令支持的选项十 ...
- [Oracle,2018-03-01] oracle常用函数
最近经常用到一些oracle中的函数,今天就总结一些常用的: 一.单行函数 只处理单个行,并且为每行返回一个结果. 1.字符函数 (1)concat(str1,str2)字符串拼接函数 select ...
- 阿里云 配置ssl 在nginx上
写给自己的备忘录: 很乱 如果你也是 配置nginx ssl 可以给我留言 ,我是为了 捣鼓微信小程序后台 需要https 阿里云有免费一年的 ssl服务 链接 https://www.aliyun. ...
- 网页编程工具:EditPlus
字体:Consolas EditPlus,很土很简单很强大的网页编程工具 http://www.editplus.com/download.html 下载 http://www.cnblogs.co ...
- Redis使用及工具类
原地址:https://www.cnblogs.com/wyy123/p/6078593.html [学会安装redis] 从redis.io下载最新版redis-X.Y.Z.tar.gz后解压,然后 ...
- hadoop 二次排序的思考
name sorce jx 10 gj 15 jx 20 gj 30 1. 二次排序 key如何定义 2. grouping 是不是一定要实现,不实现可以吗? 3. 二次排序的本质是什么 4. 如果以 ...
- GDI+_SavePic
Option Explicit Private Const EncoderQuality As String = "{1D5BE4B5-FA4A-452D-9CDD-5DB35105E7EB ...
- Delphi TXLSReadWriteII 导出EXCEL
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms ...
- unity编程心得
1. 不要通过public变量 从工程面板 直接 拖 GameObjct 的引用, 当这样的public变量很多 ,子物体很多,又没有做成预制体,,别人重新移植这段功能会很麻烦,,应该用GameOb ...