zoukankan      html  css  js  c++  java
  • Linux命令系列之 文本操作 重定向和管道

    1.标准输入输出

    基本概念:

    • 程序:指令+数据
    • 输入数据:input
    • 输出数据:output
    • 文件描述符fd:打开的文件都有一个描述符 file descriptor

    Linux给程序提供三种IO设备

    • 标准输入 STDIN - 0 默认接受来自终端窗口的输入
    • 标准输出 STDOUT - 1 默认输出到终端窗口
    • 标准错误 STDERR - 2 默认输出到终端窗口

    2.I/O重定向redirect

    IO重定向:将默认的输入,输出或错误对应的设备改变,指向到新的目标

    标准输出和错误重新定向

    #格式:
    命令 操作符号 文件名
    
    #支持的操作符号如下:
    1>  或 >  把STDOUT重定向到文件
    2>        把STDERR重定向到文件
    &>        把标准输出和错误都重定向
    >&        同上
    >>        追加标准输出重定向至文件
    2>>       追加标准错误重定向至文件
    cmd > file.out 2> error.out  标准输出和错误输出各自定向至不同位置
    

    标准输入重定向

    tr命令:转换和删除字符

    标准输入重定向:如cat < file.txt

    多行重定向:

    cat file.txt <<EOF
    context
    EOF
    

    3.管道

    3.1 管道

    管道符:|

    用法:

    cmd1 | cmd2 | cmd3
    #功能说明
    1. 将cmd1的STDOUT发送给cmd2的STDIN,cmd2的STDOUT发送到cmd3的STDIN
    2. 所有命令会在当前shell进程的子shell进程中执行
    3. 可以组合多种工具的功能
    4. STDERR不能通过管道转发,可以利用2>&1或|&实现
    

    3.2 tee命令

    tree命令 - 可以重定向到多个目标,经常配合管道符一起使用
    用法:

    cmd1 | tee [-a] filename | cmd2
    #功能说明
    1. 可以把cmd1的STDOUT保存在文件filename中,作为cmd2的输入
    2. -a选项为追加
    #用途:
    1. 保存不同阶段的输出
    2. 复杂管道的故障排除
    3. 同时查看和记录输出
    

    4.重定向特殊符号 -

    用法举例:

    tar -cvf - /etc | tar -xvf -
    
    #用法说明:
    1. 将/etc文件夹内容打包,把打包的数据不是记录到文件,而是传送给STDOUT;
    2. 经过管道后,将第一个tar的结果传送给后面的tar,第二个tar的'-'则是取前一个tar的STDOUT;
    3. 省去了临时文件file;
    4. 整个过程替代了cp命令功能(打包一个地方文件,解压到另一个指定地方);
    
  • 相关阅读:
    SQL语句中日期相减注意事项
    WinRAR打压缩的几个命令
    SQL中使用WITH AS提高性能-使用公用表表达式(CTE)简化嵌套SQL
    某一列选最大值 其他内容不同要求随机选择的情况下去除重复行的方法
    Datastage里Aggregator的一些注意事项
    几个网络流行词的翻译
    找工作的网站
    WPF版连连看,swing版俄罗斯方块源码
    mirrortankWar
    Delphi著名皮肤控件库横向对比。
  • 原文地址:https://www.cnblogs.com/hony625/p/15042425.html
Copyright © 2011-2022 走看看