linux入门基础——linux多命令协作:管道及重定向

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

不要重复发明轮子

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

管道和重定向

在linux系统中,大多数命令都很简单,很少出现复杂功能的命令,每个命令往往只实现一个或者多个很简单的功能,可以通过将不同功能的命令组合在一起使用,以达到完成某个复杂功能的目的。组合命令的技术是管道和重定向。
linux中,几乎所有命令的返回数据都是纯文本的(因为命令都是运行在CLI下),而纯文本形式的数据又是绝大多数命令的输入格式,这就让多命令协作成为可能。
linux的命令为我们提供了管道和重定向机制,多命令协作就是通过管道和重定向完成的
管道和重定向
命令shell的数据流有以下定义:
名称              说明        编号    默认
STDIN         标准输入    0        键盘
STDOUT    标准输出    1        终端
STDERR    标准错误    2        终端
命令通过STDIN接收参数或数据,通过STDOUT输出结果或通过STDERR输出错误
管道和重定向
通过管道和重定向我们可以控制CLI的数据流
分类        关键字          定义                                                            例子
重定向    >        将标准输出重定向到文件(覆盖)              echo "linux" > outfile
                                                ls > outfile
               >>        将标准输出重定向到文件(追加)             echo "hello" >> outfile
                                                date >> outfile
               2>        将STDERR重定向到文件                           ls nothere 2> errout
               2>&1    将STDERR与STDOUT相结合                  ls nothere 2>&1 allerrout
                <        重定向STDIN                                                 grep liu < /etc/passwd
管道       |            将一个命令的STDOUT作为另一个          ls -l | grep google
                命令的STDIN(这样可以完成多                          cat * | grep hello
                命令的协作)                                                        (查找所有文档中包含hello的行)
管道和重定向
管道通常用来组合不同的命令,以实现一个复杂的功能。
重定向通常用来保存某命令的输出信息或者错误信息,可以用来记录执行结果或者保存错误信息到一个指定文件。


郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。