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

来源:互联网 发布:c语言实现arp欺骗 编辑:程序博客网 时间:2024/06/05 11:15

Linux课程学习笔记来源于网易云课堂:Linux 入门基础

1 不要重复发明轮子

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

2. 管道和重定向

  •   在Linux系统当中,大多数命令都很简单,很少出现复杂功能的命令,每个命令往往只实现和一个或几个很简单的功能,我们可以通过将不同功能的命令组合在一起使用,以达到完成某个复杂功能的目的。
  •   Linux中,几乎所有命令的返回数据都是纯文本的(因为命令都是运行在CLI(命令行)下),而纯文本形式的数据又是绝大多书命令的输入格式,这就让多命令协作成为可能。
  •   Linux的命令行为我们提供了管道和重定向机制,多命令协作就是通过管道和重定向完成的。
  •   命令行shell的数据流有以下定义方便管理shell中的信息流

                   名称       说明      编号             默认

              *STDIN     标准输入   0           键盘--用来采集信息

              *STDOUT 标准输出    1           终端--用来输出正常信息

              *STDERR 标准错误    2           终端--用来输出报错信息

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

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

(一) 重定向

(1)>  功能:将标准输出(STDOUT)重定向到文件(覆盖)【只能保存标准输出信息,错误信息(STDERR)不可以保存】。例如:

echo “linuxcast” > outfile  //将ehco的输出保存到outfile文件中;

ls -l >outside  //后面可以跟路径

(2)>>  功能:将标准输出(STDOUT)重定向到文件(追加到原有文件的内容之后)【只能保存标准输出信息,错误信息(STDERR)不可以保存】。

(3)2>  功能:仅将标准输出错误(STDERR)重定向到文件,不再将标准输出(STDOUT)重定向到文件。例如:

ls -l 2> outside  //这条命令只保存报错信息

(4)2>&1  功能:将标准输出和标准错误结合在一起。例如:

ls nothere 2>&1 alloutput

(5)<  功能:重定向标准输入例如:

grep linuxcast< /etc/passwd  //将/etc/passwd输入给grep linuxcast,这种命令不太常用。相当于在/etc/passwd中查找含有linuxcast关键字的内容

(二)管道

  •  将一个命令的标准输出作为另一个命令的标准输入,可以做到多命令的协作。例如:

ls -l | grep linuxcast  //将ls -l的输出结果传给grep,对ls –l输出的信息进行grep操作

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

  •   管道通常用来组合不同的命令,以实现一个复杂的功能
  •   重定向通常用来保存某命令的输出信息或错误信息,可以用来记录之行结果或保存错误信息到一个指定的文件


原创粉丝点击