zoukankan      html  css  js  c++  java
  • 重定向

    重定向

    熟悉几个特殊符号:

    < :输入重定向
    > :输出重定向
    >> :输出重定向,进行追加,不会覆盖之前内容
    << :标准输入来自命令行的一对分隔号的中间内容.
    

    示例:

     1.cat >file 记录的是键盘输入,相当于从键盘创建文件,并且只能创建新文件,不能编辑已有文件.>是数据重导向,会将你输入的文本内容输出到file中.
    
     cat >file <
    
     两条命令结合起来使用,既记录了键盘输入内容,同时又规定了结束符号之内的内容的范围
     xargs -n 1 < qqq
    
    
    
     <<EOF就是告诉shell脚本现在开始执行命令,当遇到EOF的时候结束命令。
    
     !跟命令指上一次的命令
    

    然后是 1>、 2>、 1>>、 2>>的使用,

    当我们需要把一个文件正确的输出,和错误的输出分开保存的时候就能用到他们啦。让我用一个简单的python脚本来做一个实验

    if __name__ == '__main__':
        print 'gogogog'
        int('qiowjeioqwjeo')
    
    (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>这样的重定向规则,运行结果会被保存成什么样子呢?

    [root@hbl_test houbinglei]# python test.py > log.txt
    Traceback (most recent call last):
      File "test.py", line 4, in <module>
        func()
      File "test.py", line 3, in func
        int("abc")
    ValueError: invalid literal for int() with base 10: 'abc'
    [root@hbl_test houbinglei]# cat log.txt 
    111
    

    那如果我们想让错误和正确的结果都被重定向到同一个文件又应该怎么做呢。

    [root@hbl_test houbinglei]# python test.py 1 > log.txt 2>&1
    [root@hbl_test houbinglei]# cat log.txt 
    111
    Traceback (most recent call last):
      File "test.py", line 4, in <module>
        func()
      File "test.py", line 3, in func
        int("abc")
    ValueError: invalid literal for int() with base 10: 'abc'
    

    如果我们想将错误的和正确的信息重定向追加到同一个文件应该怎么做呢?你可能会想到2>>&1。。。然而现实是,并没有这个语法。

    然而我们却可以使用1>>pp.txt 2>&1的语法实现这个功能

    echo "asd" &>> a.txt &>>就是1跟2 都输入到a.txt

    (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'
    

    那么如果我们想保存正确的结果,错误的结果直接丢向垃圾站,既不保存为文件,也不在标准输出打印又该怎么做呢?

    (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

    My name is 侯冰雷 ~~欢迎转载 ~~欢迎关注 ~~欢迎留言
  • 相关阅读:
    在ASP.NET MVC中使用Redis
    学生管理系统(SSM简易版)总结
    springmvc缓存和mybatis缓存
    解决.NET Web API生成的Help无Controller说明&服务端接收不到请求
    ASP.NET MVC]WebAPI应用支持HTTPS的经验总结
    23 Flutter官方推荐的状态管理库provider的使用
    22 Flutter仿京东商城项目 inappbrowser 加载商品详情、保持页面状态、以及实现属性筛选业务逻辑
    21 Flutter仿京东商城项目 商品详情 请求接口渲染数据 商品属性数据渲染
    16Flutter中的路由 基本路由 基本路由跳转传值(上)
    20 Flutter仿京东商城项目 商品详情 底部弹出筛选属性 以及筛选属性页面布局
  • 原文地址:https://www.cnblogs.com/houbinglei/p/9268873.html
Copyright © 2011-2022 走看看