输入和输出
改变输入或输出的默认路径就叫重定向。
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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。