常用的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
<&- 把关闭标准输入