zoukankan      html  css  js  c++  java
  • Linux19_流、管道和重定向

    重定向:

    把本来要显示在终端中的命令结果,输送到别的地方去;

    到文件中或者作为其他命令的输入(命令的链接,或者叫命令管道);

    把两个命令连接起来使用,一个命令的输出作为另一个命令的输入;

    管道的英语是pipeline;

    可以想象一个个水管,连接起来;

    流:

    这个概念不好理解;

    流的简单定义,流是时间上可用的一系列数据元素。可以把流比喻成传送带上的物件,每个时间点传输一个,而不是多个打包传输;

    重定向:

    哪里:文件或者另一个命令的输入

    如何实现:通过在命令间插入特定的符号

    特定的符号被称为重定向流符号;

    重定向流:

    从Unix时代起就是很重要的概念;

    重定向流会改变我们看待终端命令行的方式;

    ==================================================

    先谈cut命令的进阶:

    根据分隔符来剪切

    了解一下CSV格式的文件

    Comma Separated Values的缩写

    中文意思是:都好分隔值

    后缀名是.csv

    -d 参数  delimiter的缩写,是英语“分隔符”的缩写

    用于指定用什么分隔符(逗号、分号、双引号)

    -f 参数 field的缩写,英语“区域”的意思

    表示剪切下用分隔符分隔的哪一块或哪几块区域;

    ==================================================

    >和>>   : 重定向到文件

    >可以将命令的输出结果重定向到你选择的文件中

    使用>符号要小心

      如果此文件不存在,则新建一个文件;

      如果此文件已经存在,那就会把文件内容覆盖掉;

      而且是不会征求用户确认的;

    黑洞文件  /dev/null

    这是一个特殊的文件,不是目录;

    它能够使得发送到/dev/null的任何数据作废

    >> 重定向到文件末尾

    会将重定向内容写入到文件末尾,起到追加的作用;

    如果文件不存在,则创建文件;

    ==================================================

    stdinstdoutstderr

    标准输入   stdin 键盘输入 ,对应文件描述符0

    标准输出   stdout 终端中的输出,对应文件描述符1

    标准错误输出  stderror 终端的错误输出,对应文件描述符2

    上面这三个可以被看成是

    文件描述符:

    形式上是非负整数,实际上是一个索引值,指向从中系统内核为每个进程所维护的该进程打开文件的记录表;

    当程序打开一个现有文件或者创建一个新文件时,内核向进程返回一个文件描述符;

    在Windows中称为“句柄”;

    =================================================

    2>符号

    2 标准错误输出的描述符是2;

    如果没有2,单独的>符号就是重定向标准输出(文件描述符为1)

    >和>>只是将标准输出重定向到文件,但是无法将标准错误输出重定向;

    合并输出 2>&1

    将标准错误输出重定向到和标准输出一样的地方;

    追加式的

    ====================================================

    标准输出不一定要显示在屏幕上,可以存放到文件里;

    >   重定向到文件

    >> 可以追加内容到文件末尾

    2>  重定向标准错误输出到文件

    2>&1   将标准错误输出重定向与标准输出一样

    ====================================================

    接下来讨论的是重定向输入

    命令的输入可以来自键盘,还可以来自文件;

    命令有时候有输出、有时候有输入;有时候不一定有输入,不一定有输出;

    < 从文件中读取;用于指定命令的输入

    cat < notes.csv 和 cat notes.csv 运行结果是一样的

    但是原理是不一样的;

    cat notes.csv      接受的输入是notes.csv这个文件名,那么它要先打开notes.csv文件;打印文件内容;

    cat < notes.csv   cat命令接受的输入是notes.csv这个文件的内容,cat命令只负责将其内容打印,打开文件并将文件内容传递给cat命令的工作则交给终端完成;

    <<  从键盘读取

    <<符号的作用是将键盘的输入重定向为某个命令的输入;

    sort -n <<END

    输入这条命令之后,按下回车,终端就进入了键盘输入模式;

     

    ==================================================

    | 管道

    管道符号 |

    其作用是建立命令管道;

    管道也算是重定向流的一种;

    将两个命令连成管道,使得linux命令的威力倍增;

  • 相关阅读:
    If you want the rainbow, you have to deal with the rain.
    Yesterday is history, tomorrow is a mystery, but today is a gift.
    .bashrc修改环境变量文件后ls之类的不能用了
    Flask项目中使用mysql数据库启动项目是发出警告
    flask 编码问题
    flask 密钥问题
    Flask 数据库连接
    查看cpu核的相关信息
    top命令常用
    gluster设置日志级别
  • 原文地址:https://www.cnblogs.com/grooovvve/p/12445308.html
Copyright © 2011-2022 走看看