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命令的威力倍增;

原文地址:https://www.cnblogs.com/grooovvve/p/12445308.html