美文网首页
15- Shell脚本基础(三)重定向

15- Shell脚本基础(三)重定向

作者: 熙熙爸爸 | 来源:发表于2017-09-12 15:53 被阅读0次

    在了解重定向之前,我们先来看看linux 的文件描述符。

    linux文件描述符:可以理解为linux跟踪打开文件,而分配的一个数字,这个数字有点类似c语言操作文件时候的句柄,通过句柄就可以实现文件的读写操作。 用户可以自定义文件描述符范围是:3-num,这个最大数字,跟用户的:ulimit –n 定义数字有关系,不能超过最大值。

    linux启动后,会默认打开3个文件描述符,分别是:标准输入standard input 0,正确输出standard output 1,错误输出:error output 2

    标准输入、输出、错误输出

    • 标准输入:从键盘输入数据,即从键盘读入数据。 0

    • 标准输出:把数据输出到终端上。1

    • 标准错误输出:把标准错误输出到终端上。2
      默认的标准输入指的是键盘,默认的标准输出与标准错误输出指的是屏幕或者是终端。
      在Linux系统下,一切皆是文件,对文件的操作,一般要用到文件标识符。它们的文件标识符,分别为0,1,2.

    重定向

    1. 输出重定向
      输出重定向比较好理解,标准输出是输出到屏幕上,我们可以把输出写入到一个指定的文件中。
      下面的命令就是把输出重定向到file文件中,这里需要注意 > 和>>的区别,如果file中有内容,使用>会把file中的内容覆盖,>>会在file的后面追加
    ls -l > file
    ls -a >> file
    
    1. 输入重定向
      下面的命令是一个输入重定向的例子,把file文件的内容作为wc -l命令的输入。
    wc -l < file
    

    这里我有一个疑问就是,如果不使用重定向的话和使用重定向有啥区别呢

    重定向

    看上面的图片
    不使重定向的 输出 5 file,重定向的输出 5
    这是因为,不使用重定向,命令可以获取到输入的文件,使用重定向之后,它仅仅知道从标准输入读取内容。

    1. Here document用法
      这表示一种写法,也算是重定向的一种,还是使用wc命令来演示
    here document cat

    这里的test叫做delimitor,这个意思就是把两个delimitor之间的内容通过重定向传给命令。当然这个delimitor可以使任意字符,只要是首尾相同就可以。

    1. Linux下输出重定向的典型分析
    # &1  &2  分别表示标准输出和 标准错误输出
    ls -l > out 2>&1
    

    意思是把命令 ls -l的标准输出重定向到out文件中,另外标准错误输出重定向到标准输出中,因为标准输出已经重定向到out文件了,所以错误输出也输出到out文件中。

    相关文章

      网友评论

          本文标题:15- Shell脚本基础(三)重定向

          本文链接:https://www.haomeiwen.com/subject/pgufsxtx.html