您的位置:首页 > 运维架构 > Shell

shell输入与输出

2012-11-22 14:08 274 查看
如果是LINUX系统,那么......

必须使用- n选项来禁止echo命令输出后换行:





如果你希望列出系统中所有的文件系统,可以使用管道把 d f命令的输出传递给 a w k命令,

a w k显示出其中的第一列。你还可以再次使用管道把 a w k的结果传递给 g r e p命令,去掉最上面

的题头f i l e s y s t e m

当然,你没准还会希望只显示出其中的分区名,不显示 / d e v / 部分,这没问题;我们只要

在后面简单地加上另一个管道符号和相应的 s e d 命令即可。



5.5 tee

t e e命令作用可以用字母 T来形象地表示。它把输出的一个副本输送到标准输出,另一个

副本拷贝到相应的文件中。如果希望在看到输出的同时,也将其存入一个文件,那么这个命

令再合适不过了。

它的一般形式为:

tee -a files

其中,- a表示追加到文件末尾。

当执行某些命令或脚本时,如果希望把输出保存下来, t e e命令非常方便。

下面我们来看一个例子,我们使用 w h o命令,结果输出到屏幕上,同时保存在 w h o . o u t文

件中:

$ who | tee who.txt

在对标准错误进行重定向时,必须要使用文件描述符,但是对于标准输入和输出来说,

这不是必需的。为了完整起见,我们在表 5 - 1中列出了两种方法。

表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 把c o m m a n d命令以 f i l e n a m e文件作为标准输入,以 f i l e n a m e 2文件

作为标准输出

command < filename 把c o m m a n d命令以f i l e n a m e文件作为标准输入

command << delimiter 把从标准输入中读入,直至遇到 d e l i m i t e r分界符

command <&m 把把文件描述符 m作为标准输入

command >&m 把把标准输出重定向到文件描述符 m中

command <&- 把关闭标准输入

重定向标准错误

g r e p命令没有找到该文件,缺省地向终端输出了一个错误信息。现在让我们把错误重定

向到文件/ d e v / n u l l 中(实际就上是系统的垃圾箱 ):

$ grep "trident" missiles 2>/dev/null

这样所有的错误输出都输送到了 / d e v / n u l l,不再出现在屏幕上

$ cleanup >cleanup.out 2>&1

在上面的例子中,我们将 c l e a n u p脚本的输出重定向到 c l e a n u p . o u t 文件中,而且其错误也

被重定向到相同的文件中。

$ grep "standard"* > grep.out 2>&1

5.10 exec

e x e c命令可以用来替代当前 s h e l l ;换句话说,并没有启动子 s h e l l。使用这一命令时任何现

有环境都将会被清除,并重新启动一个 s h e l l 。它的一般形式为:

exec command

其中的c o m m a n d通常是一个 s h e l l 脚本
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: