zoukankan      html  css  js  c++  java
  • 管道及I/O重定向

    管道符"|"

    管道符"|":前一个命令的输出,作为后一个命令的输入

    命令1 | 命令2 | 命令3 | ...
    
    # 输出"hello,world."并将小写转换为大写
    [root@localhost ~]# echo "hello,world." | tr 'a-z' 'A-Z'
    HELLO,WORLD.
    
    # 显示passwd文件中按:分割的每行第一个部分并排序并将小写转换为大写
    [root@localhost ~]# cut -d: -f1 /etc/passwd | sort | tr 'a-z' 'A-Z'
    ADM
    APACHE
    BIN
    DAEMON
    DBUS
    FEDORA
    

    I/O重定向

    简单的解释就是捕捉一个文件, 命令, 程序, 脚本, 或者甚至是脚本中的代码块的输出, 然后将这些输出作为输入发送到另一个文件, 命令, 程序, 或脚本中。

    标准输入输出

    执行一个shell命令行时通常会自动打开三个标准文件,即标准输入文件(stdin),通常对应终端的键盘;标准输出文件(stdout)和标准错误输出文件(stderr),这两个文件都对应终端的屏幕。
    进程将从标准输入文件中得到输入数据,将正常输出数据输出到标准输出文件,而将错误信息送到标准错误文件中。
    习惯上,标准输入(standard input)的文件描述符是 0,标准输出(standard output)是 1,标准错误(standard error)是 2。

    I/O重定向符号

    • cmd 1 | cmd 2 把 stdout 重定向到 cmd 2 的 shdin;
    • cmd > file 把 stdout 或者 stderr 重定向到 file 文件中;
    • cmd >> file 把 stdout 或者 stderr 重定向到 file 文件中(追加);
    • cmd > file 2>&1 把 stdout 和 stderr 一起重定向到 file 文件中;
    • cmd >> file 2>&1 把 stdout 和 stderr 一起重定向到 file 文件中(追加);
    • cmd < file >file2 cmd 命令以 file 文件作为 stdin,以 file2 文件作为 stdout;
    • cat <>file 以读写的方式打开 file;
    • cmd < file cmd 命令以 file 文件作为 stdin;
    • cmd << delimiter Here document,从 stdin 中读入,直至遇到 delimiter 分界符;
    • cmd 1 | cmd 2 > file 把多个 stdout 重定向到 file 文件中。

    其中2>&1中的数字代表重定向文件描述符,表示重定向 stderr 到 stdout 。

    关闭文件描述符

    n<&-
    #关闭输入文件描述符n.
    
    0<&-
    <&-
    #关闭stdin.
    
    n>&-
    #关闭输出文件描述符n.
    
    1>&-
    >&-
    #关闭stdout.
    

    set

    set -C:禁止对已经存在文件使用覆盖重定向:
    	强制覆盖输出,则使用 >|
    set +C:关闭上述功能
    
  • 相关阅读:
    Centos 6.9 安装 Redis 3.2.9
    CentOS下安装JDK的三种方法
    centos6.9(Linux系统)安装VMware tools教程
    VMWare安装Centos 6.9
    关于缓存中Cookie,Session,Cache的使用
    MVC控制器获取@Html.DropDownList值
    .net下的跨域问题
    IIS无法加载字体文件(*.woff,*.svg)的解决办法
    jQuery .attr("checked")得undefined 问题解决
    Apache和IIS服务器共存问题来自网上内容
  • 原文地址:https://www.cnblogs.com/shamobus/p/9342217.html
Copyright © 2011-2022 走看看