• STDIN(0), STDOUT(1), STDERR(2), 2 > &1


    当我们在 shell 中执行命令的时候,每个进程都和三个打开的文件相联系,并使用文件描述符(文件描述符是一个简单的整数,用以标明每一个被进程所打开的文件和socket。第一个打开的文件是0,第二个是1,依此类推)来引用这些文件。由于文件描述符不容易记忆,shell 同时也给出了相应的文件名。 

    STDIN  (0): 标准输入,位置 /dev/stdin, 缺省为键盘,也可以是文件或其他命令的输出
    STDOUT (1): 标准输出,位置 /dev/stdout, 缺省为 Terminal,也可以是文件
    STDERR (2): 标准错误,位置 /dev/stderr, 缺省为 Terminal,也可以是文件

    在执行命令时,可以指定命令的标准输入、输出和错误,要实现这一点就需要使用文件重定向。下面列出了最常用的重定向组合,并给出了相应的文件描述符。 
    在对标准错误进行重定向时,必须要使用文件描述符,但是对于标准输入和输出来说,这不是必需的。

    常用文件重定向命令 

    command > filename 把标准输出重定向到一个新文件中 
    command >> filename 把标准输出重定向到一个文件中(追加) 
    command 1 > fielname 把标准输出重定向到一个文件中 
    command > filename 2>&1 把标准输出和标准错误一起重定向到一个文件中 
    command 2> filename 把标准错误重定向到一个文件中 
    command 2>> filename 把标准输出重定向到一个文件中(追加) 
    command >> filename 2>&1 把标准输出和标准错误一起重定向到一个文件中(追加) 
    command < filename 把 command 命令以 filename 文件作为标准输入 
    command < filename > filename2 把命令 command 以 filename 文件作为标准输入,以 filename2 文件作为标准输出 
    command << delimiter 从标准输入中读入,直至遇到 delimier 分界符 
    command <&m 把文件描述符m作为标准输入 
    command >&m 把标准输出重定向到文件描述符m中 
    command <&- 关闭标准输入  
    

    Note: 有些程序(特别是象bash 、make这样执行了其他程序的程序)的设计者为了省事,把一些正常情况的信息也放在stderr中输出(即使程序本身并无错误),而stdout用来输出被调用程序的执行时信息,在这种情况下如果需要将屏幕中的所有输出输出到文件需要使用 2>&1.

  • 相关阅读:
    毕设进度28
    任务27
    任务26
    任务25
    任务24
    第二次冲刺
    课堂作业-搜狗输入法
    课堂作业-寻找水王
    博客花园典型用户和场景
    第十天
  • 原文地址:https://www.cnblogs.com/tannerBG/p/5164117.html
Copyright © 2020-2023  润新知