第5章shell输入与输出
时间:2006-07-27 来源:oychw
本章我们将讨论以下内容:
• 使用标准输入、标准输出及标准错误。
• 重定向标准输入和标准输出。
本章全面讨论了s h e l l对数据和信息的标准输入、标准输出,对重定向也做了一定的介绍。
5.1 echo
一般形式为:echo string
具体使用略
5.2 read
可以使用r e a d语句从键盘或文件的某一行文本中读入信息,并将其赋给一个变量。如果只
指定了一个变量,那么r e a d将会把所有的输入赋给该变量,直至遇到第一个文件结束符或回车。
它的一般形式为:
read varible1 varible2 ...
5.3 cat
cat命令最有用的选项就是:
-v 显示控制字符
5.4 管道
5.5 tee
tee命令作用可以用字母T来形象地表示。它把输出的一个副本输送到标准输出,另一个
副本拷贝到相应的文件中。
tee -a files
其中,- a表示追加到文件末尾。
当执行某些命令或脚本时,如果希望把输出保存下来, tee命令非常方便。
5.6 标准输入、输出和错误
5.6.1 标准输入
标准输入是文件描述符0。它是命令的输入,缺省是键盘,也可以是文件或其他命令的输出。
5.6.2 标准输出
标准输出是文件描述符1。它是命令的输出,缺省是屏幕,也可以是文件。
5.6.3 标准错误
标准错误是文件描述符2。这是命令错误的输出,缺省是屏幕,同样也可以是文件。你可
能会问,为什么会有一个专门针对错误的特殊文件?这是由于很多人喜欢把错误单独保存到一个文件中,特别是在处理大的数据文件时,可能会产生很多错误。
如果没有特别指定文件说明符,命令将使用缺省的文件说明符(你的屏幕,更确切地说
是你的终端)。
5.7 文件重定向
表5-1 常用文件重定向命令
command > filename 把把标准输出重定向到一个新文件中
command >> filename 把把标准输出重定向到一个文件中(追加)
command 1 > fielname 把把标准输出重定向到一个文件中
command > filename 2>&1 把把标准输出和标准错误一起重定向到一个文件中
command 2 > filename 把把标准错误重定向到一个文件中
command 2 >> filename 把把标准输出重定向到一个文件中(追加)
command >> filename 2>&1 把把标准输出和标准错误一起重定向到一个文件中(追加)
command < filename >filename2 把command命令以filename文件作为标准输入,以filename2文件
作为标准输出
command < filename 把command命令以filename文件作为标准输入
command << delimiter 把从标准输入中读入,直至遇到delimiter分界符
command <&m 把把文件描述符m作为标准输入
command >&m 把把标准输出重定向到文件描述符m中
command <&- 把关闭标准输入
grep命令没有找到该文件,缺省地向终端输出了一个错误信息。现在让我们把错误重定
向到文件/dev/null中(实际就上是系统的垃圾箱):
grep "trident" missiles 2>/dev/null
结合使用标准输出和标准错误:cat account_qtr.doc account_end.doc 1>accounts.out 2>accounts.err
合并标准输出和标准错误:grep "standard"* > grep.out 2>&1
5.10 exec
环境都将会被清除,并重新启动一个shell
• 使用标准输入、标准输出及标准错误。
• 重定向标准输入和标准输出。
本章全面讨论了s h e l l对数据和信息的标准输入、标准输出,对重定向也做了一定的介绍。
5.1 echo
一般形式为:echo string
具体使用略
5.2 read
可以使用r e a d语句从键盘或文件的某一行文本中读入信息,并将其赋给一个变量。如果只
指定了一个变量,那么r e a d将会把所有的输入赋给该变量,直至遇到第一个文件结束符或回车。
它的一般形式为:
read varible1 varible2 ...
5.3 cat
cat命令最有用的选项就是:
-v 显示控制字符
5.4 管道
5.5 tee
tee命令作用可以用字母T来形象地表示。它把输出的一个副本输送到标准输出,另一个
副本拷贝到相应的文件中。
tee -a files
其中,- a表示追加到文件末尾。
当执行某些命令或脚本时,如果希望把输出保存下来, tee命令非常方便。
5.6 标准输入、输出和错误
5.6.1 标准输入
标准输入是文件描述符0。它是命令的输入,缺省是键盘,也可以是文件或其他命令的输出。
5.6.2 标准输出
标准输出是文件描述符1。它是命令的输出,缺省是屏幕,也可以是文件。
5.6.3 标准错误
标准错误是文件描述符2。这是命令错误的输出,缺省是屏幕,同样也可以是文件。你可
能会问,为什么会有一个专门针对错误的特殊文件?这是由于很多人喜欢把错误单独保存到一个文件中,特别是在处理大的数据文件时,可能会产生很多错误。
如果没有特别指定文件说明符,命令将使用缺省的文件说明符(你的屏幕,更确切地说
是你的终端)。
5.7 文件重定向
表5-1 常用文件重定向命令
command > filename 把把标准输出重定向到一个新文件中
command >> filename 把把标准输出重定向到一个文件中(追加)
command 1 > fielname 把把标准输出重定向到一个文件中
command > filename 2>&1 把把标准输出和标准错误一起重定向到一个文件中
command 2 > filename 把把标准错误重定向到一个文件中
command 2 >> filename 把把标准输出重定向到一个文件中(追加)
command >> filename 2>&1 把把标准输出和标准错误一起重定向到一个文件中(追加)
command < filename >filename2 把command命令以filename文件作为标准输入,以filename2文件
作为标准输出
command < filename 把command命令以filename文件作为标准输入
command << delimiter 把从标准输入中读入,直至遇到delimiter分界符
command <&m 把把文件描述符m作为标准输入
command >&m 把把标准输出重定向到文件描述符m中
command <&- 把关闭标准输入
grep命令没有找到该文件,缺省地向终端输出了一个错误信息。现在让我们把错误重定
向到文件/dev/null中(实际就上是系统的垃圾箱):
grep "trident" missiles 2>/dev/null
结合使用标准输出和标准错误:cat account_qtr.doc account_end.doc 1>accounts.out 2>accounts.err
合并标准输出和标准错误:grep "standard"* > grep.out 2>&1
5.10 exec
环境都将会被清除,并重新启动一个shell
相关阅读 更多 +