linux >&的作用

linux重定向中&>和>&是一个意思,是“复制一个文件描述符”的意思。

一、linux重定向的设备代码

  1.   标准输入(stdin) 代码为 0 ,实际映射关系:/dev/stdin -> /proc/self/fd/0 

  2.   标准输出(stdout)代码为 1 , 实际映射关系:/dev/stdout -> /proc/self/fd/1

  3.  标准错误输出(stderr)代码为 2 ,实际映射关系: /dev/stderr ->/pro/self/fd/2


二、linux重定向的符号意义

    1.  > 和 < 分别代表重定向的方向,是从左到右还是从右到左

    2.  >> 和 << 代表追加,也就是不改变重定向目标文件原有的内容,追加在后面。

   3.  >&n 使用系统调用 dup (2) 复制文件描述符 n 并把结果用作标准输出;

    4.  <&n 标准输入复制自文件描述符 n;

   5.  n<&- 表示将 n 号输入 关闭   
   6.  <&- 表示关闭标准输入(键盘)  
   7.  n>&- 表示将 n 号输出关闭
   8.  >&- 表示将准输出关闭
例如命令:
$ ./bin/run-example SparkPi 
结果如下:
Using Spark's default log4j profile: org/apache/spark/log4j-defaults.properties
17/06/27 10:23:16 INFO SparkContext: Running Spark version 2.0.2
17/06/27 10:23:17 WARN NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
17/06/27 10:23:17 WARN Utils: Your hostname, localhost.localdomain resolves to a loopback address: 127.0.0.1; using 192.168.41.129 instead (on interface eno16777736)
17/06/27 10:23:17 WARN Utils: Set SPARK_LOCAL_IP if you need to bind to another address;;;;;;;;

执行时会输出非常多的运行信息,输出结果不容易找到,可以通过 grep 命令进行过滤(命令中的 2>&1 可以将所有的信息都输出到 stdout 中,否则由于输出日志的性质,还是会输出到屏幕中)

命令:
$ ./bin/run-example SparkPi 2>&1 | grep "Pi is roughly"
结果如下:
Pi is roughly 3.1434757173785868


你可能感兴趣的:(Linux学习)