电脑技术学习

对话 UNIX: !$#@*%

dn001

  清单 6. 把消息重定向到一个 TTY

# for _TTY in 'who | grep "cormany" | awk '{print $2}''
> do
>  _TTY="/dev/${_TTY}"
>  echo "Sending message to cormany on ${_TTY}"
>  echo "Test Message to cormany@${_TTY}" > ${_TTY}
> done
Sending message to cormany on /dev/pts/13
Test Message to cormany@/dev/pts/13
Sending message to cormany on /dev/pts/14

  stdin 而不是 stdout

  尽管使用 > 和 >> 对于大多数人是一个相当容易掌握的概念,但是有的人在使用小于号(< 和 <<)时常常有困难。在考虑 > 和 >> 时,认为它们把左边命令的输出数据流移动到右边的目标文件中,这样最容易理解。同样的方法也适用于 < 和 <<。在使用 < 时,本质上是用一个已经提供的 stdin 执行一个命令。也就是说,把已经提供的数据提供给左边的命令作为 stdin(即 <cmd> <- <data>)。

  例如,假设希望把一个包含 ASCII 文本文件的电子邮件发送给另一个用户。可以使用管道把 cat 的 stdout 重定向到 mail 的 stdin(即 cat mail_file.out | mail –s "Here's your E-mail!" acormany@yahoo.com),也可以把文件的内容重定向到 mail 命令的 stdin:

# mail –s "Here's your E-mail!" acormany@yahoo.com < mail_file.out

  使用 <<(也称为 here-document)可以节省格式化时间,并且使命令执行的处理更容易。通过使用 <<,文本字符串被重定向到执行的命令作为 stdin,但是可以继续输入信息,直到到达终止标识符。只需输入命令,输入 << 和终止标识符,然后输入需要的任何内容,最后在一个新行上输入终止标识符。通过使用 here-document,可以保留空格、换行等。

标签: