入门Linux确实比上手Windows要不容易。这段时间已经深刻体会。今天Linux程序设计里的一句话有误导了半天,幸好什么有位高手——小胖哈哈!
这里只是简单的介绍下管道和重定向,因为在接下来的shell编程中会深入了解,到时候在详细总结。
管道连接着一个命令的标准输出和另外一个命令的标准输入。在linux下管道连接的进程可以同时运行,并且随着数据流在它们之间的传递可以自动地进行协调。形象的讲:管道就相当于自来水管,而进程或者(程序)相当于水龙头,管道里的水相当于数据,水可以在不同的水龙头间依次流动。
例如:..#ps -aux | sort
其中的ps可以看作是“水龙头1”,‘|’看作是“水管”, sort看作是“水龙头2”,ps -aux运行的结果看作是“水”
重定向对标准输入输出进行重定向。将“水”从一处运往另外一处。
例如:ls -a > lsoutput.txt
将程序ls的标准输出流重定向到文本文件中。也就是说,‘>’的左端必须有输出流。例子中ls -a输出的结果本来是显示在屏幕上的,但是经过重定向将其输出到了文件中。
书中的一个例子:
cat lsoutput.txt | sort | uniq | > output.txt
这样最终得到的output.txt是一个空文件。 为什么?因为最后一个‘|’后面没有跟“水龙头”,怎么可能把“水”从“管子”里放出来,运到另外一个地方呢?
解决方法至少有两种:
cat lsoutput.txt | sort | uniq | tee> output.txt
或者
cat lsoutput.txt | sort | uniq > output.txt
通过形象的比喻,以上两种方式都能很少的理解!!
支持linux,反对windows