Shell 重定向
0:标准输入 1:标准输出 2:标准错误 标准输入特点: 它是默认的输入方法,它被所有命令使用来读取输入。 它用数字0表示 它也被称作stdin 默认的标准输入设备是键盘 操作符"<"是输入重定向操作符。 command < input_filename 标准输出: 它被命令用来写入或显示命令自身的输出 它用数字1表示 它也被称作stdout 默认的标准输出设备是屏幕。 操作符">"是输出重定向操作符。 command > output_filename 标准错误: 它是默认的错误输出方法,它被用于写入所有系统错误信息。 它用数字2表示 它也被成为stderr 默认的标准输出设备是屏幕或显示器。 操作符"2>"是标准错误重定向操作符。 command 2> errors_filename 2.重定向 在linux系统中,总有3个默认的设备文件是打开的,即标准输入、标准输出、标准错误。这三个文件和其他地方被打开的文件,都可以被重定向。重定向简单地说就是从文件、命令、程序、脚本、甚至是脚本中代码块获取输出并把它作为输入发送到另一文件、命令、程序或脚本。 每个打开的文件被指定一个描述。0、1、2分别为标准输入 输出 错误。对于打开的另外的文件,这里余留了文件描述符3-9. 文件重定向: 输出到文件 command > file 从文件输入 command < file { read line1 read line2 }<file while read LINE do commands done < file if true; then read LINE fi < file 从文本或字符串输入 here-documents command <<[-]MARKER here document MARKER - 标识忽略行首的制表符 command <<< WORD tr a-z A-Z <<<"one two three" 例: 空文件创建 >file >logfile 丢弃不需要的输出 command > /dev/null 标准错误重定向 command 2> /tmp/error.log command 2>> /tmp/error.log 标准输出重定向 command > outfile 标准错误和标准输出同时重定向 command &> file command >& file command > file 2>&1 command 2>&1 >file 追加重定向 符号">>" 用于追加重定向输出 command >> filename 单个命令行进行标准输入输出重定向 command < input-file > output-file 3.文件描述符 Shell有时会引用使用文件描述符(fd)的文件。一般fd 0-9 大于9的文件描述符要谨慎使用,因为它们可能与Shell内部使用的文件描述符冲突。 有些文件描述符是在Shell启动时被建立的,这就是我们前面介绍的标准输入、标准输出和标准错误(0,1,2)文件描述符。 使用exec命令 exec 2>errfile 之后的所有命令,标准错误输出都会到errfile里 exec 3<$1 while read -u 3 line do echo $line read -p "Press any key:" -n 1 done #关闭文件描述符3 exec 3&- 指定用于输入的文件描述符 exec [n]<file 其中,[n]即文件描述符,如果不指定n,则标识标准输入(即文件描述符0) 指定后,就可以从文件描述符n上读取此文件的内容。 例: exec 3< /etc/passwd grep root <& 3 操作符"&<",它也是一种重定向操作符,用于复制输入文件描述符。 [n]<&word 如果word是数字,则用n表示文件描述符作为文件描述符word的副本。 指定用于输出的文件描述符 给一个输出文件指定一个文件描述符 exec [n]>file exec 4> /tmp/out.file [n]>&word 操作符">&",复制输出描述符 如果n没指定,则表示标准输出。 关闭文件描述符 [n]<&- 或[n]>&- 打开用于读写的文件描述符 exec [n]<>file (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |