zoukankan      html  css  js  c++  java
  • shell 重定向 2>&1 2>/dev/null 理解笔记

    // 函数  输入输出重定向    
    
    1、函数     
      
    function hello(){  
      echo '1111'  
    } 
    
    ------- 
    
    hello  
    
    hello(){     // function 可以省略    
      echo '2222'  
    }     
    
    hello     
    
    -------
    
    hello(){
      return 11
    }
    
    hello
    echo $? // 获取函数返回的值   
    
    -------
    
    function hello(){    
      echo $1    
      echo $2    
      echo $3     
      echo "第十个参数${10}"     
      echo "参数个数${#}"      
      echo "输出所有参数${*}"     
      echo "输出所有参数${@}"     
    }     
    
    hello 1 2 3 4 5    
    
    -------  
    
    2、输入输出重定向     
    
    > 
    >>
    < 输入重定向
    << 
    
    cat < ./1.txt // 把1.txt的内容截取出来     
    
    
    标准输入文件(stdin) 0    
    标准输出文件(stdout) 1     
    标准错误文件(stderr) 2    
    
    
    重定向解释:
    2>&1    // 标准错误输出重定向到标准输出     
    /dev/null // 空设备 相当于一个黑洞 吞噬一切信息       
    
    // 标准输出  
    echo 123 > ./1.txt 等同于 echo 123 1> ./1.txt  
    
    // 标准错误输出 
    echo 123 2> ./1.txt  把标准错误输出重定向到1.txt    
     
    ./2.sh    
    hello   // hello 会报错 走标准错误输出   
    date
    
    ./2.sh > 1.txt   // 会看到报错直接在终端上显示,未输出到1.txt,因为这里是标准输出,没有写标准错误输出重定向到1.txt   
    
    ./2.sh 1> 1.txt 2> ./1.txt 这样就把标准错误输出到了1.txt  
     但是有个问题,这个写法相当于,打开了两次1.txt, 标准输出被标准错误输出给覆盖了    
     
    ./2.sh 1> 1.txt 2>&1   // >& 相当于对后面1即标准输出的引用,然后这句话的意思是标准输出重定向到1.txt,标准错误输出也重定向到1.txt,因此 ./1.txt里会显示
    
    ./2.sh:行1: t: 未找到命令    
    2019年 03月 30日 星期六 15:29:38 CST  
    
    ./2.sh 1> 1.txt 2>/dev/null  // 这里标准输出重定向到1.txt, 标准错误输出重定向到空设备,即不输出错误信息,这时./1.txt里会显示    
    2019年 03月 30日 星期六 15:40:58 CST       
              
    
    3、文件引用   
    
    source ./xx.sh   或者 .  ./1.sh   
    

      

  • 相关阅读:
    AtomicLong与LongAdder的区别
    记录Vmware Workstation及Centos6.8 的安装
    java.lang.NoSuchMethodError问题处理
    java读取UTF-8的txt文件发现开头的一个字符问题
    Java多线程之内存可见性和原子性:Synchronized和Volatile的比较
    关于怎么解决java.lang.NoClassDefFoundError错误
    使用SFTP工具相关问题
    resin中关于url rewrite来传递jsessionid的问题
    Linux常用命令
    Jenkins简单安装及配置(Windows环境)
  • 原文地址:https://www.cnblogs.com/leyi/p/10627590.html
Copyright © 2011-2022 走看看