以下是针对每种重定向语法的例子:
1. n>&:将标准输出复制到文件描述符n
# 重定向标准输出和标准错误到同一个文件 command 1>&2 log.txt
2. n<&:将标准输入从文件描述符n复制
# 从文件描述符3读取输入 command <&3
3. n>&m:将文件描述符n复制为输出文件描述符m的副本
# 从文件描述符3写入输出 command 3>&1 1>&2 2>&3 | tee log.txt
4. n<&m:将文件描述符n复制为输入文件描述符m的副本
# 复制标准输入到文件描述符3 command 3<&0
5. &>file:将标准输出和标准错误都重定向到文件
# 重定向标准输出和标准错误到log.txt文件 command &> log.txt
6. <&-:关闭标准输入
# 从标准输入读取输入并关闭标准输入 command <&0 -
7. >&-:关闭标准输出
# 将输出写入文件,然后关闭标准输出 command > log.txt >&-
8. n>&-:关闭文件描述符n的输出
# 关闭文件描述符3的输出 command 3>&-
9. n<&-:关闭文件描述符n的输入
# 关闭文件描述符3的输入 command 3<&-
10. n>&word:如果未指定n,则使用标准输出(文件描述符1)。如果word中的数字未指定打开用于输出的文件描述符,则会出现重定向错误。因为特殊情况,如果省略n并且word没有扩展为一个或多个数字,则标准输出和标准错误将被重定向为上述所述。
# 将输出和错误都重定向到log.txt文件 command &>log.txt # 将标准输出和标准错误分别重定向到log.txt和error.txt文件 command >log.txt 2>error.txt # 等同于上一行命令 command >&log.txt 2>error.txt
11. n<&word:如果word扩展为一个或多个数字,则表示由n表示的文件描述符将成为该文件描述符的副本。如果word中的数字未指定打开用于输入的文件描述符,则会出现重定向错误。如果word的值是“-”,则关闭文件描述符n。如果未指定n,则使用标准输入(文件描述符0)。
# 将文件描述符3的输入复制为文件描述符4 command 4<&3
12. n>&digit-:将文件描述符digit移动到文件描述符n,或者如果n未指定,则移动到标准输出(文件描述符1)。
# 将文件描述符3的输出复制为文件描述符4,并关闭文件描述符3 command 4>&3- 3>&-
13. n<&digit-:将文件描述符digit移动到文件描述符n,或者如果n未指定,则移动到标准输入(文件描述符0)。在复制到n后,会关闭digit。
# 将文件描述符3的输入复制为文件描述符4,并关闭文件描述符3 command 4<&3- 3<&-
希望这些例子能够帮助你更好地理解每种重定向语法的用法。
此内容为ChatGPT回答,如果胡说八道,请不要理会
如果对你有帮助,请设置一个最佳答案! |