Linux(16)多命令协作,管道及重定向

2018-01-09  本文已影响0人  极客列侬

不要重复发明轮子

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

  管道和重定向

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

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

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

命令行shell的数据流有以下定义

名称      说明      编号

STDIN      标准输入  0

STDOUT    标准输出  1

STDERR    标准错误  2

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

通过管道和重定向我们可以控制CLI的数据流

分类    关键字          定义                                    例子

                          将STDOUT重定向到                echo "xxx" > 输出文件

                >              文件(覆盖)                          ls >  输出文件

重定向    >>        将STDOUT重定向到             echo "xxx" >>

                          文件(覆盖)                              输出文件 

          2>            将STDERR重定向到文件         ls “xxx” 2>     

                        (覆盖)                                      输出文件

        2>&1          将STDERR与STDOUT结合    ls "xxx" 2>&1

                                                                           输出文件

        <              重定向STDIN                              grep “xxx” < /etc/passwd

管道      |         将一个命令的STDOUT作为          ls-l | grep xxx

                        另一个命令的STDIN                    find / -user xxx

                                                                            | grep video

                                                                            find / -user xxx 2> |grep xxx     

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

重定向通常用来保存某命令的输出信息或错误信息,可以用来记录执行结果或保存错误信息到一个指定文件

上一篇下一篇

猜你喜欢

热点阅读