常用的3个FD

  标准输入        描述符: 0

  标准输出        描述符: 1

  标准错误        描述符: 2

重定向命令

命令:"  > "  ">> "  "< "  "<<"  "<&" ">&" "< >"

">" 将命令输出写入文件或设备,而不是命令提示符或句柄

cmd > file  将一个stdout 重定向到 file 文件中

            cmd 1>file 将一个stdout 重定向到 file 文件中

           命令的默认是 1   即  1> 和 > 是一样的

           例如:ls -l > a.txt  

          # 将命令ls -l 的执行结果重定向到文件a.txt中,若当前没有a.txt这个文件则自动新创建,若有则将执行结果覆盖该文件的内容  

''>>" 将命令输出添加到文件末尾而不删除文件中已有的信息

          cmd >>file 将一个stdout 重定向到file文件中

          例如:ls -l >>a.txt

          #将命令ls执行的结果重定向到文件a.txt中,若当前没有a.txt则自动创建,若有则将执行结果追加在该文件尾部

"<" 从文件而不是从键盘或句柄读入命令输入

          cmd < file 将file文件的内容当作命令的输入(stdin)

例如:cat < a.txt  >b.txt  或 cat >b.txt <a.txt

          # 此时是将a.txt 里内容读入并覆盖b.txt的内容(有点像复制a.txt的内容粘贴到b.txt且完全覆盖)

            cat <a.txt >>b.txt   如果将上例中的输出重定向改成 >>  这时就是 复制a.txt的内容粘贴且追加到b.txt尾部,不改变原文件里的内容

"<<"  从 stdin 中读入,直至遇到 delimiter 分界符

          # 此命令类似直接插入内容

"<&" 如     <&n   将描述符n 作为标准输入

" >&" 如 m >&n   重定向描述符m到描述符n中

        # 指定为m文件所有输出发送到n

"< >" 如  n < > file  打开file文件并将描述符n分配给它

        #如果file文件不存在,则新创建,如果描述符n没有指定,则默认为stdin

<&-    把关闭标准输入