• linux之重定向命令


    1、shell重定向概念:shell重定向包含输出重定向和输入重定向

    何为输入输出方向?何为标准输入输出方向?

         标准输入方向:从键盘读取用户输入的数据,然后再把数据拿到程序(C语言程序、Shell 脚本程序等)中使用;这就是标准的输入方向,也就是从键盘到程序。

         标准输出方向:相反,程序运行产生的数据一般都是直接呈现到显示器上,这就是标准的输出方向,也就是从程序到显示器。

    其实,输入输出方向就是数据流动的方向,那么

       输入重定向就是改变程序数据的来源的

       输出重定向就是改变程序输出屏幕到其他地方

    2、硬件设备和文件描述符

             计算机硬件有很多,常见的输入设备有键盘、鼠标、麦克风、手写板等,输出设备有显示器、投影仪、打印机等。不过,在 Linux 中,标准输入设备指的是键盘,标准输出设备指的是显示器

           同时,Linux 中一切皆文件,包括标准输入设备(键盘)和标准输出设备(显示器)在内的所有计算机硬件都是文件,为了表示和区分已经打开的文件,Linux 会给每个文件分配一个 ID,这个 ID 就是一个整数,被称为文件描述符(File Descriptor)。

    与输入输出有关的文件描述符
    文件描述符文件名类型硬件
    0 stdin 标准输入 键盘
    1 stdout 标准输出 显示器
    2 stderr 标准错误输出 显示器

    Linux 程序在执行任何形式的 I/O 操作时,都是在读取或者写入一个文件描述符。一个文件描述符只是一个和打开的文件相关联的整数,它的背后可能是一个硬盘上的普通文件、FIFO、管道、终端、键盘、显示器,甚至是一个网络连接

    3、Shell输出重定向

    表2:Bash 支持的输出重定向符号
    类 型符 号作 用
    标准输出重定向 命令 > 文件 以覆盖的方式,把命令的正确输出结果输出到指定的文件或设备中。
    命令 >> 文件 以追加的方式,把命令的正确输出结果输出到指定的文件或设备中。
    标准错误输出重定向 命令 2> 文件 以覆盖的方式,把命令的错误信息输出到指定的文件或设备中。
    命令 2>> 文件 以追加的方式,把命令的错误信息输出到指定的文件或设备中。
    正确输出和错误信息同时保存 命令 > 文件 2> &1 以覆盖的方式,把正确输出和错误信息同时保存到同一个文件中。
    命令 >> 文件 2> &1 以追加的方式,把正确输出和错误信息同时保存到同一个文件中。
    命令 &> 文件 以覆盖的方式,把正确输出和错误信息同时保存到同一个文件中。
    命令 &>> 文件 以追加的方式,把正确输出和错误信息同时保存到同一个文件中。
    命令 >> 文件1  2>> 文件2 把正确的输出追加到文件1中,把错误信息追加到文件2中。

    在输出重定向中,>代表的是覆盖,>>代表的是追加。

    注意,在类似命令 2> 文件这样的写法中,2是文件描述符,它对应的是 stderr。


    对于重定向中的标准输出文件,可以省略文件描述符 1 不写,而标准错误输出文件,必须要写上文件描述如 2。如果你愿意,也可以将命令 > 文件写作命令 1> 文件,但这样做是多此一举。

    另外还要注意,2>之间不能有空格,也就是说,不能将命令 2> 文件写作命令 2 > 文件

    使用案例可查看https://www.cnblogs.com/clarenceyang/p/9837352.html

    4、Shell输入重定向

    输入重定向就是改变输入的方向,不再使用键盘作为命令输入的来源,而是使用文件作为命令的输入

    Bash 支持的输出重定向符号
    符号说明
    命令 < 文件 将指定的文件作为命令的输入。
    命令 << 分界符 从标准输入(键盘)中读取数据,直到遇见分界符才停止。
    命令 < 文件1 > 文件2 将文件1作为命令的输入,并将命令的处理结果输出到文件2。
    统计 readme.txt 文件中有多少行文本:
    [c.biancheng.net]$ cat readme.txt  #预览一下文件内容
    C语言中文网
    http://c.biancheng.net/
    成立7年了
    日IP数万
    [c.biancheng.net]$ wc -l < readme.txt  #输入重定向
    4

    实例1

    #!/bin/bash
    
    while read str; do
        echo $str
    done < readme.txt
    运行结果:
    C语言中文网
    http://c.biancheng.net/
    成立7年了
    日IP数万

    实例2

    我们使用输入重定向符号<<,这个符号的作用是使用特定的分界符作为命令输入的结束标志,而不使用 Ctrl+D 键。

    [c.biancheng.net]$ wc -l << END
    > 123
    > 789
    > abc
    > xyz
    > END
    4
    wc 命令会一直等待用输入,直到遇见分界符 END 才结束读取

  • 相关阅读:
    'abbdsjjtb',找出该字符串中最后一个只出现一次的字符,并且得到这个字符的位置
    2.jira的测试人员使用流程
    jmeter41: singn接口md5签名接口
    jmeter40:RandomDate+Random实现随机日期+随机时间
    5排序函数,sort一般只能对列表进行排序,sorted函数可以对列表或者字典排序
    u盘重装系统时提示“我们找不到任何驱动器,要获取存储设备驱动程序”解决方案
    TCL数组——array
    TCL 笔记
    Ubuntu使用一周感想
    ④ vue 中的动画
  • 原文地址:https://www.cnblogs.com/clarenceyang/p/9837574.html
Copyright © 2020-2023  润新知