本文共 1909 字,大约阅读时间需要 6 分钟。
当执行命令之前,它的输入和输出可以使用由shell解释的特殊符号进行重定向。重定向允许命令“文件句柄被复制,打开,关闭,作出涉及到不同的文件,并可以更改命令读取和写入文件。重定向也可用于修改的文件句柄在当前shell执行环境。下列重定向操作符可能先于或一个简单的命令中的任何地方出现或可能遵循的命令。重定向在他们出现,从左至右的顺序处理。
每个可由一个文件描述符号码前面重定向可以代替由表单{VARNAME}的一个字之前。在这种情况下,对于每一个重定向操作符除外>& - 和<& - ,shell将分配一个文件描述符大于或等于10并指定为VARNAME。 如果 >&- 或<&-是{varname}的前面,varname定义的文件描述符被关闭。
在以下的说明中,如果文件描述符被省略,并且重定向操作符的第一字符<,重定向指的是标准输入(文件描述符0)。如果重定向操作符的第一个字符是>,重定向指的是标准输出(文件记述器1)。
按照下面的描述中,重定向操作符的话,除非另有说明,受到括号扩展,波浪线扩展,参数和变量扩展,命令替换,算术扩展,引用删除,路径名扩展,和分词。如果扩展为多个单词,bash报错。
/dev/fd/fd
如果fd是一个有效的整数,文件描述符fd是重复的。 /dev/stdin 文件描述符0被复制。 /dev/stdout 文件描述符1被复制。 /dev/stderr 文件描述符2是重复的。 /dev/tcp/host/port 如果host是一个有效的主机名或Internet地址,port是一个整数端口号或服务名,bash将试图打开相应的TCP套接字。 /dev/udp/host/port 如果host是一个有效的主机名或Internet地址,port是一个整数端口号或服务名,bash将试图打开相应的UDP套接字。使用文件重定向描述符大于9应小心使用,因为它们可能与文件发生冲突的描述符外壳内部使用。
请注意,EXEC内置命令可以重定向采取在当前shell.重定向输入
如果该文件不存在则创建;如果它存在则截断其大小为零。 [n] < word 重定向输出 如果该文件不存在则创建;如果它存在则截断其大小为零。 [n] > word追加重定向的输出
以这种方式输出重定向使他的名字从结果word扩展被打开并追加对文件描述符n,或者如果没有指定n标准输出(文件描述符1)的文件。如果该文件不存在则创建它。 [n]>>word重定向标准输出和标准错误
此构造允许两个标准输出(文件描述符1)和标准误差输出(文件描述符2)被重定向到其名称是字的扩展的文件。 &>word >&word >word 2>&1 当使用第二种形式,词可能不会扩大为数字或 - 。如果是这样,其他的重定向运算符适用(见下文复制文件描述符)出于兼容性原因。追加标准输出和标准错误
word 2>&1
重定向文档
<<[-]word here-document delimiter 无参数和变量扩展,命令替换,算术扩展或者路径扩展是在执行字。如果word中任何字符被引用,分隔符是引用删除对词的结果,而在此文档中的行不会被扩展。如果字是带引号的,在这里文档中的所有行受到参数扩展,命令替换和算术扩展,字符序列\ <换行符>被忽略,\必须使用引用字符\,$,和`。如果重定向操作符是<< - ,那么所有领先的制表符从输入行和包含行分隔符剥离。这使得这里的文档shell脚本中以自然的方式缩进。这个词经过括号扩展,波浪线扩展,参数和变量扩展,命令替换,算术扩展和引用删除。不执行路径名扩展和分词。其结果是作为一个单一字符串的标准输入命令提供。
字符串
在此文件的一个变种, 复制文件描述符 [n]<&word 用于复制的输入文件描述符。如果字扩展为一个或多个数字,用n表示的文件描述符被制成该文件描述符的副本。如果word中的数字并未指定的文件描述符输入,将产生一个重定向错误。如果字计算结果为 - ,文件描述符n关闭。如果没有指定n,将使用标准输入(文件描述符0)被使用。移动文件描述符
[n]<&digit- 移动文件描述符的数字文件描述符n,或者如果没有指定n标准输入(文件描述符0)。数位被复制到n后关闭。 [n]>&digit- 移动文件描述符的数字文件描述符N,或者如果没有指定n标准输入(文件描述符0)。数位被复制到n后关闭。打开文件描述符阅读和写作
[n]<>word 导致其名称是单词的扩张被打开供读取和文件描述符n写入,或者文件描述符0,如果没有指定n的文件。如果该文件不存在,则创建它。转载地址:http://gjwdb.baihongyu.com/