Linux从0到1——输入输出重定向的使用

前言


在之前的学习中,我们已经掌握了Linux中的一些基本指令,已经可以实现自己创建,删除文件目录,复制移动文件等各种操作了,接下来我们将继续深入,从Linux的一切皆文件的思想开始,彻底理解Linux中重定向的概念。

学习本文,还需要一些C语言的基础。如果有C语言的部分看不懂,可以选择性跳过,C语言属于拔高部分。


1.Linux中文件的概念


学习Linux,必须接受一个Linux中的思想:一切皆文件。包括各种硬件:磁盘,键盘,麦克风,显卡,网卡等,尽管他们的物理结构各不相同,但在Linux中均可以看作一个个文件。

这些设备虽然在物理结构上大相径庭,但是他们的操作逻辑是相同的,都是需要输入输出的。所以Linux用大一统的思想把他们都当成了文件。


2.输出重定向


1.引入:

我们想在显示器中输出一些内容,可以使用命令echo

在这里插入图片描述

想输出什么,就在echo面的双括号内写入什么即可。上面的例子中,我们使用echo,在显示器上输出了一个hello world

我们刚刚学到了Linux中的思想,一切皆文件,所以这个命令又可以理解为向显示器这个文件中写入字符内容hello world

那么我们是否可以改变一下输出的方向,让这串字符输出到一个具体的文件中去呢?这就是我们接下来要讲的,输出重定向。

2.将内容输出到具体文件中:

1)输出到不存在的文件中:

在这里插入图片描述

使用>,改变了输出的方向,本来应该输出到显示器中的内容,现在被输出到了一个具体的文件中。如果这个指定文件不存在,那么系统会自己创建一个文件,并向其中写入你输入的内容。

2)输出到存在的文件中:

在这里插入图片描述

发现文件中原有的内容被覆盖了,变成了新的内容。这里有一个规则,每次写入文件之前,先把文件原内容清空,然后再把新内容写入。

我们知道,Linux中大部分的指令都是通过C/C++写的,>这个指令会被解释成一个文件操作。先进行文件内容的清空,再进行写入。

那么如果我们想清空一个文件中的内容,可以这样操作:

在这里插入图片描述

只进行了文件内容的清空,而没有进行写入。

3)通过C语言代码实现文件的写入:

先使用命令vim log.c,编辑一个叫log.c的文件(文件名不可以随意取,后缀需是.c,因为这是gcc编译器只认识.c后缀的文件):

在这里插入图片描述

以w的方式打开文件,会先清空文件原有的内容。

接着编译这个.c文件,执行生成的可执行程序:

在这里插入图片描述

成功将指定内容写入到指定文件中,通过C语言实现了文件的写入。


3.追加重定向

前面,我们学会了向一个文件中写入内容,但是这样的操作会令文件原本的内容清空。那么,如何在保存文件原本内容的前提下,向文件中追加内容呢?下面就让我们来学习一下。


1.使用>>指令,追加内容:

在这里插入图片描述

2.使用语言代码,实现追加:

1)编辑log.c文件:

在这里插入图片描述

以a的方式打开文件,可以向文件中追加内容。

2)重新编译.c文件,同时执行多次可执行程序:

在这里插入图片描述


4.输入重定向


1.引入:

在学习Linux基本指令时,我们已经知道了,如果什么参数都不给,只在命令行输入cat就直接回车,效果是这样的:

在这里插入图片描述

可以发现,我们用键盘输入什么,再按回车,显示器就输出什么。这里,我们可以将cat的作用理解为,从键盘上读入数据,然后直接输出到显示器上

那么,是否可以重定向输入,让cat不再从键盘读取数据,而是从具体的文件中呢?这就是我们接下来学习的内容。

2.用cat从具体文件中读入内容:

在这里插入图片描述

使用命令<,改变输入的方向,从文件test.txt中读取数据,并输出到显示器中。

还可以集合cat的选项来使用输入重定向:

在这里插入图片描述

3.直接cat test.txtcat < test.txt有什么区别呢?

这一点我们暂时不讲,留一个疑问,等学到命令行参数的时候,再具体讲解。


小结


在本文中,我们只是浅浅的认识了一下重定向,知道的如何使用重定向。关于重定向底层原理,和一些更深入的东西,我会在今后的文章中继续讲解,谢谢大家的支持。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

-指短琴长-

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值