shell之重定向和管道

来源:互联网 发布:知名网络玄幻小说作家 编辑:程序博客网 时间:2024/05/08 14:07

在linux中,输入源主要有两个:键盘和文件,输出源也对应有两个:文件和屏幕。在shell中,>代表输出,<代表输入。

1:重定向

重定向包含改变shell标准输入的来源和标准输出的去向的各种方式。默认情况下shell将命令的标准输入关联到键盘标准输出关联到屏幕

 1.1:重定向输出

eg:cat  > sample.txt

这句话的意思在于把键盘的输入输出到sample.txt文件中,当你输入上面的话后,键盘输入“HELLO WORLD”,然后退出,查看sample.txt,你可以发现在文件中有“HELLO WORLD”几个字。

当然,重定向使用“>”符号,会把原来文件中的内容销毁,也就是重写,如果想避免被重写,要使用noclobber命令。

1.2:重定向输入

通过标准输入符号“<”可以重定向输入来自指定的文件。

eg:cat < sample.txt

这句话的意思是吧sample.txt的内容作为标准输入输出内容到屏幕上。当你的文件中有“HELLO WORLD”几个字时,你可以看到屏幕输出了“HELLO WORLD”几个字。

1.3:关于追加

向文件中追加标准输出(>>)可以避免文件被重写。

比如orange这个文件中有一句话:this is an orange.peer这个文件有一句话:this is a peer

那么cat peer >> orange

输出

this is an orange

this is a peer。


2:管道

管道( | )是将一条命令的标准输出连接到另一个命令的标准输入。管道不产生中间文件。

语法为:command_a [arguments] | command_b [arguments]

与下面的命令结果相同

command_a [arguments] > temp

command_b [arguments] < temp

rm temp

第一条命令是吧命令a的结果重定向到中间文件temp,第二条命令是把temp作为命令b的输入,最后删除temp文件。


tr(translate)替换,比如 tr string1 string2就是把string1的每个字符依次替换为string2中的字符。

cat abstract | tr abc ABC

tr abc ABC < abstarct

上面两条命令都是把abstract中的a、b、c替换为A、B、C,是等价的。

 在看一个利用管道实现过滤器功能的例子

who | sort | lpr

who是得到文件名 ,sort进行排序,最后按顺序打印,中间的sort实现了过滤器的功能


tee:实现双向输出

who | tee who.out

这个命令把who的结果分别送至标准输出和送至who.out文件保存。




0 0
原创粉丝点击