作者: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内容的信息
        • 可以做到多命令的协作
    • 管道通常用来组合不同的命令,以实现一个复杂的功能
    • 重定向通常用来保存某命令的输出信息或错误信息,可以用来记录之行结果或保存错误信息到一个指定的文件
GitHub 加速计划 / li / linux-dash
10.39 K
1.2 K
下载
A beautiful web dashboard for Linux
最近提交(Master分支:23 天前 )
186a802e added ecosystem file for PM2 4 年前
5def40a3 Add host customization support for the NodeJS version 4 年前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐