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

Linux多命令协作:管道及重定向

2017-04-30 18:22 357 查看
作者:WenWu_Both

出处:http://blog.csdn.net/wenwu_both/article/

版权:本文版权归作者和CSDN博客共有

转载:欢迎转载,但未经作者同意,必须保留此段声明;必须在文章中给出原文链接;否则必究法律责任

Linux多命令协作:管道及重定向

不要重复发明轮子

开源文化的核心理念之一就是不要重复发明轮子,很多的开源软件都是现有软件、代码、功能的重新组合,就好像通过零件装配机器一样,源代码的开放和共享让这成为了可能,同时也大大的提高了效率和生产力。

管道和重定向

在Linux系统当中,大多数命令都很简单,很少出现复杂功能的命令,每个命令往往只实现和一个或几个很简单的功能,我们可以通过将不同功能的命令组合在一起使用,以达到完成某个复杂功能的目的。

Linux中,几乎所有命令的返回数据都是纯文本的(因为命令都是运行在CLI(命令行)下),而纯文本形势的数据又是绝大多书命令的输入格式,这就让多命令协作成为可能。

Linux的命令行为我们提供了管道和重定向机制,多命令协作就是通过管道和重定向完成的。

命令行shell的数据流有以下定义
方便管理shell中的信息流


STDIN 标准输入 编号0 键盘
用来采集信息


STDOUT 标准输出 编号1 终端
用来输出正常信息


STDERR 标准错误 编号2 终端
用来输出报错信息


命令通过STDIN接收参数或数据,通过STDOUT输出结果或通过STDERR输出错误

通过管道和重定向我们可以控制CLI的数据流
标准输入、标准输出、标准错误


重定向

> 将STDOUT重定向到文件(覆盖),即保存
注意只能保存标准输出信息,错误信息不可以保存


echo “linuxcast.net” > outfile
文件名


>> 将STDOUT重定向到文件(追加)
注意只能保存标准输出信息,错误信息不可以保存


echo “linuxcast.net” >> outfile
文件名


2>
2代表标准错误的编号
将STDERR重定向到文件中

2>&1 将STDERR与STDOUT结合

< 重定向STDIN
不是很常见


grep linuxcast < /etc/passwd
相当于在/etc/passwd中查找含有linuxcast关键字的内容


管道
使用的最多


| 将一个命令的STDOUT作为另一个命令的STDIN

ls -l | grep linuxcast
代表列出含有linuxcast内容的文件


find / -user linuxcast | grep Video
在linuxcast用户中查找含有Video内容的信息


可以做到多命令的协作

管道通常用来组合不同的命令,以实现一个复杂的功能

重定向通常用来保存某命令的输出信息或错误信息,可以用来记录之行结果或保存错误信息到一个指定的文件
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: