专栏首页大闲人柴毛毛Linux数据流重定向

Linux数据流重定向

1 什么是数据流重定向?

Linux中,数据流的重定向被分为输入重定向 和 输出重定向。

  • 输出重定向 将原本应该输出到屏幕上的信息输出到文件中。 当执行一个命令后,该命令输出的结果本应该显示在屏幕上。但输出重定向能让命令的执行结果保存到文件中去。 此外,由于Linux中的设备都是以文件的形式存在,因此输出重定向还可以将命令执行的结果输出到指定设备上去。
命令 > 文件

命令的执行结果将会保存到>后面的文件中去,而不会在屏幕上显示。

  • 输入重定向 将原本应该从键盘输入数据的方式改为从文件中读取。
命令 < 文件

当执行命令时,如果命令需要读取数据,那么就会从<后面的文件中读取。

2 标准输出 和 标准错误输出

  • 标准输出 当一条命令执行成功时,输出的结果称为标准输出。 标准输出在Linux中用1表示,因此:1> 和 1>>表示标准输出,一般1可以省略。
  • 标准错误输出 当一条命令执行失败时,输出的结果称为标准错误输出。 标准错误输出在Linux中用2表示,因此2> 和 2>>表示标准错误输出,2不能省略!

3 输出重定向举例

3.1 例1

将正确结果输出到success中,将错误结果输出到error中去

cd chai > success 2> error

3.2 例2

将错误信息直接忽略

cd chai 2> /dev/null

PS:/dev/null称为垃圾黑洞,类似于垃圾箱。

3.3 例3

将成功和错误信息输出到一个文件中

cd chai >log 2> log

上述方式会产生巨大的bug!因为标准输出和标准错误输出会交替执行,输入到同一个文件会产生数据混为一潭,为了避免这种情况可使用如下方式:

cd chai &> log

4 输入重定向举例

4.1 例1

创建一个新文件,并从键盘输入文件数据:

cat > 文件名

该命令执行后会要求你输入文件内容,按ctr+d结束输入:

chai bo zhou is a baby

然后一个含有内容的文件就会被创建。 PS:不要问我为什么,我也不知道为什么!

4.2 例2

创建一个新文件,从指定文件中读取数据:

cat > 文件名 < 指定文件

上述命令执行后指定文件中的数据将会拷贝到新建的文件中去。

4.3 例3

创建一个新文件,从指定文件中读取数据,并以EOF作为结束符:

cat > 文件名 

5 命令连接符

命令连接符用于连接多个命令,能够控制命令的执行次序。

命令连接符1:;

分号连接的两个命令只有先后次序而没有关联性,第一个命令执行结束后便会执行第二个命令。

5.1 命令连接符2:&&

命令1 && 命令2

若第一个命令执行成功才会执行第二个命令; 若第一个命令执行失败,则不会执行第二个命令。

5.2 命令连接符3:||

命令1 || 命令2

若第一个命令执行成功,则不执行第二个命令; 若第一个命令执行失败,才会执行第二个命令。

5.3 例1

若./chai不存在则创建该命令,若存在则不作任何操作:

ls ./chai || mkdir chai

5.4 例2

若./chai存在则显示“存在”,若不存在则显示“不存在”:

方法一:
ls ./chai && echo "存在" || echo "不存在"

方法二:
ls ./chai || echo "不存在" && echo "存在"

这两者等价。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 服务器性能优化基础知识

    性能调优整体思路 空间换时间 对热点数据缓存,减少数据查询时间。 分而治之 将大任务切片,分开执行。HDFS、MapReduce就是这个原理。 异步处...

    大闲人柴毛毛
  • 数据库三大范式

    第一范式 第一范式(1NF)要求数据库表的每一列都是不可分割的基本数据项,同一列中不能有多个值。 若某一列有多个值,可以将该列单独拆分成一个实体,新实体和原实...

    大闲人柴毛毛
  • 剑指offer代码解析——面试题15求链表中倒数第K个结点

    算法的分析过程均在代码注释中: /** * 题目:输入一个单链表,输出该链表从后往前的第k个数。 * PS:从后往前数时从1开始计数。 * @author...

    大闲人柴毛毛
  • Linux常用shell语法和命令

    判断/home/oicq/script/get_random_shm_key.sh是否存在

    chain
  • 【初学Linux】常用命令和自用记忆方法 持续更新

    最近在补习linux 相关知识,为Kali做准备,虽然以前接触过linux但是基本跟小白没什么区别,现在开始从最简单的开始学起,一个一个认命令。欢迎各位萌新跟我...

    紫旭Blog - blog.zixutech.cn
  • 使用java8API遍历过滤文件目录及子目录及隐藏文件

    本文中为大家介绍使用java8 Stream API逐行读取文件,以及根据某些条件过滤文件内容

    字母哥博客
  • 文本文件逐行处理–用java8 Stream流的方式

    本文中为大家介绍使用java8 Stream API逐行读取文件,以及根据某些条件过滤文件内容

    字母哥博客
  • 【Android XML】Android XML 转 Java Code 系列之 style(3)

    最近一个月把代码重构了一遍, 感觉舒服多了, 但总体开发进度没有变化.. 今天聊聊把style属性转换成Java代码的办法

    sickworm
  • JS函数的属性

    3.prototype:在创建自定义引用类型以及实现继承时,该属性的作用极为重要,该属性不可枚举,因此使用for-in 无法发现

    大道七哥
  • 【Android XML】Android XML 转 Java Code 系列之 Selector(2)

    今天我们要把drawable下的selector的XML文件转换成Java代码。(打包进jar,不依赖apk)

    sickworm

扫码关注云+社区

领取腾讯云代金券