﻿<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Ks Home &#187; shell</title>
	<atom:link href="http://www.ksarea.com/articles/tag/shell/feed" rel="self" type="application/rss+xml" />
	<link>http://www.ksarea.com</link>
	<description>King和Sha的小窝</description>
	<lastBuildDate>Fri, 10 Sep 2010 03:39:04 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>管道和重定向的理解</title>
		<link>http://www.ksarea.com/articles/20080125_pipe_redirection.html</link>
		<comments>http://www.ksarea.com/articles/20080125_pipe_redirection.html#comments</comments>
		<pubDate>Fri, 25 Jan 2008 09:24:24 +0000</pubDate>
		<dc:creator>king</dc:creator>
				<category><![CDATA[Linux相关]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[shell]]></category>
		<category><![CDATA[编程]]></category>

		<guid isPermaLink="false">http://www.ksarea.com/articles/20080125_pipe_redirection.html</guid>
		<description><![CDATA[入门Linux确实比上手Windows要不容易。这段时间已经深刻体会。今天Linux程序设计里的一句话有误导了半天，幸好什么有位高手——小胖哈哈！
这里只是简单的介绍下管道和重定向，因为在接下来的shell编程中会深入了解，到时候在详细总结。
管道连接着一个命令的标准输出和另外一个命令的标准输入。在linux下管道连接的进程可以同时运行，并且随着数据流在它们之间的传递可以自动地进行协调。形象的讲：管道就相当于自来水管，而进程或者（程序）相当于水龙头，管道里的水相当于数据，水可以在不同的水龙头间依次流动。
例如：..#ps -aux &#124; sort
其中的ps可以看作是“水龙头1”，‘｜’看作是“水管”， sort看作是“水龙头2”，ps -aux运行的结果看作是“水”
重定向对标准输入输出进行重定向。将“水”从一处运往另外一处。
例如：ls -a &#62; lsoutput.txt
将程序ls的标准输出流重定向到文本文件中。也就是说，‘&#62;’的左端必须有输出流。例子中ls -a输出的结果本来是显示在屏幕上的，但是经过重定向将其输出到了文件中。
书中的一个例子：
cat lsoutput.txt &#124; sort &#124; uniq &#124; &#62; output.txt
这样最终得到的output.txt是一个空文件。 为什么?因为最后一个‘｜’后面没有跟“水龙头”，怎么可能把“水”从“管子”里放出来，运到另外一个地方呢？
解决方法至少有两种：
cat lsoutput.txt &#124; sort &#124; uniq &#124; tee&#62; output.txt
或者
cat lsoutput.txt &#124; sort &#124; uniq &#62; output.txt
通过形象的比喻，以上两种方式都能很少的理解！！
]]></description>
			<content:encoded><![CDATA[<p>入门Linux确实比上手Windows要不容易。这段时间已经深刻体会。今天Linux程序设计里的一句话有误导了半天，幸好什么有位高手——<a href="http://bluecurve.spaces.live.com/" target="_blank">小胖</a>哈哈！</p>
<p>这里只是简单的介绍下管道和重定向，因为在接下来的shell编程中会深入了解，到时候在详细总结。</p>
<p>管道连接着一个命令的标准输出和另外一个命令的标准输入。在linux下管道连接的进程可以同时运行，并且随着数据流在它们之间的传递可以自动地进行协调。形象的讲：管道就相当于自来水管，而进程或者（程序）相当于水龙头，管道里的水相当于数据，水可以在不同的水龙头间依次流动。</p>
<p>例如：..#ps -aux | sort</p>
<p>其中的ps可以看作是“水龙头1”，‘｜’看作是“水管”， sort看作是“水龙头2”，ps -aux运行的结果看作是“水”</p>
<p>重定向对标准输入输出进行重定向。将“水”从一处运往另外一处。</p>
<p>例如：ls -a &gt; lsoutput.txt</p>
<p>将程序ls的标准输出流重定向到文本文件中。也就是说，‘&gt;’的左端必须有输出流。例子中ls -a输出的结果本来是显示在屏幕上的，但是经过重定向将其输出到了文件中。</p>
<p>书中的一个例子：</p>
<p>cat lsoutput.txt | sort | uniq | &gt; output.txt</p>
<p>这样最终得到的output.txt是一个空文件。 为什么?因为最后一个‘｜’后面没有跟“水龙头”，怎么可能把“水”从“管子”里放出来，运到另外一个地方呢？</p>
<p>解决方法至少有两种：</p>
<p>cat lsoutput.txt | sort | uniq | tee&gt; output.txt</p>
<p>或者</p>
<p>cat lsoutput.txt | sort | uniq &gt; output.txt</p>
<p>通过形象的比喻，以上两种方式都能很少的理解！！</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ksarea.com/articles/20080125_pipe_redirection.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
