Linux输入,输出的重定向以及管道

2021/9/21 7:28:32

本文主要是介绍Linux输入,输出的重定向以及管道,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

系列文章目录

第一章 :red hat linux系统下载安装
第二章:Linux用户和组
第三章:Linux文件管理
第四章:Linux目录管理
第五章:Linux文本编辑器
第六章:Linux文件查找与管理
第七章:Linux输入,输出的重定向以及管道


@

目录
  • 系列文章目录
  • 前言
  • 一、标准输入和标准输出
  • 二、重定向
    • 1.输出重定向
    • 2.输入重定向
  • 三、管道
  • 总结


前言

这一次博客内容主要讲解Linux的输入、输出和重定向以及管道的操作,照例是以实验为主,操作开始前记得抓一张快照。


一、标准输入和标准输出

这个不重要简单提一下就行了,标准输入设备常用的有键盘,从键盘输入数据就可以叫做标准输入,标准输出同理就是屏幕的显示。

二、重定向

1.输出重定向

Linux一般的命令结果都输出在命令行中,我们无法进行修改或者查找等操作,所以要用到重定向
1.重定向符号 >

cat /etc/passwd >/home/chaoge/chao

查看/etc/passwd 并将结构输出到/home/chaoge/chao文件下
在这里插入图片描述
咱们可以看到,结果并没有正常的从屏幕输出,而是被重定向到相应的文件里。
>重定向为强制覆盖
在这里插入图片描述
df -Th为查看磁盘情况,不重要。咱们只看他结果就可以,可以发现之前重定向的内容消失了。
2.追加重定向符>>

在这里插入图片描述
echo 为最简单的保准输出,咱们现在查看重定向结果
在这里插入图片描述
可以看到内容追加到末尾,这个一般可以用于日志记录的收集。
3.错误重定向符号2>/2>>
前面的重定向都是基于前部分命令是正确的重定向,现在咱们尝试命令错误的重定向。
在这里插入图片描述
咱们可以看到命令错误时,错误信息依旧输出在屏幕上,我们希望将错误信息也重定向。

asdwad 2>/home/chaoge/chao

在这里插入图片描述
追加一个道理,不说了。
4.分离重定向
如果输出信息中有错的也有对的怎么办。
例如普通用户查找/tmp目录
在这里插入图片描述
可以看到一部分结果正常,一部分因为权限不够发生错误。

find /tmp/ >yes 2>no

分离,将对的重定向到yes中,错的定向到no中
在这里插入图片描述
在这里插入图片描述
5.强制重定向&>
我也不管对错全部定向到同一个文件

find /tmp/ &>all

在这里插入图片描述
看以看到所有结果都被重定向到了同一个文件。

2.输入重定向

就是把符号方向变一下<,意思基本一样,这个用的比较少。博主也没有找到合适的例子,简单说一下吧。
这个博主觉得可以对比python的使用,python分为文件式和交互式,交互式就和Linux一样一行一行输命令,但命令比较多就写一个文件然后运行。相当于把保准输入命令一行一行重定向到交互式中。

三、管道

管道符号用一个 | 来表示,两边分别两条命令,管道可以将左边命令的结果集作为参数送给右边的命令,理论比较抽象,依旧以实验为例。

cat /etc/passwd | grep root

这两条命令都说过,简单过一下。
左边:查看/etc/passwd
右边:在文件中查看含有root的行
在这里插入图片描述
整行命令的意思就是,先查看文件,得到内容,然后在得到的内容里查找含有root的行。

在做一个简单的实验,也是实际生产中会用要的,提取文件中的运行代码
以/boot/grub2/grub.cfg为例,现在展示出这个文件的部分代码
在这里插入图片描述
很明显这个文件中有很多注释以及空行,在程序运行的时候这些是不参与运行的,现在要求咱们用管道提取参与运行的代码。
为例让效果比较明显咱们,先统计一下源代码的代码量
在这里插入图片描述
wc-l可直接统计行数。
现在开始一步一步过滤,首先是含#的注释不参与运行,因为grep是支持正则表达式的,这就很简单了
先查找到所有#

cat /boot/grub2/grub.cfg | grep ^#

在这里插入图片描述
很容易找到含有#的行,grep有个-v可以用来取反

cat /boot/grub2/grub.cfg | grep -v ^#

在这里插入图片描述
很明显所有#都消失了,下一步去掉空行,依旧可以使用正则表达式^$,然后在取反即可

cat /boot/grub2/grub.cfg | grep -v ^# |grep -v ^$

这里由于#在Markdown有特殊含义,看起来不太正常,可以仔细看一下截图
在这里插入图片描述
可以看到所有空行都消失。
咱们在看一下实际参与运行的行数
在这里插入图片描述
可以看到,少了小一半呢。
这里还可以和重定向继续结合,将提取到的文件输出到文件

cat /boot/grub2/grub.cfg | grep -v ^# |grep -v ^$ >/grub

在这里插入图片描述

总结

这次博客内容基本就到这里,管道的应用在Linux中非常灵活,还是那个原则,没事找例子多练练你就啥都会了。



这篇关于Linux输入,输出的重定向以及管道的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程