ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

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

2021-09-20 19:33:24  阅读:132  来源: 互联网

标签:输出 grep 重定向 文件 命令 管道 Linux


系列文章目录

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


@

目录


前言

这一次博客内容主要讲解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中非常灵活,还是那个原则,没事找例子多练练你就啥都会了。

标签:输出,grep,重定向,文件,命令,管道,Linux
来源: https://www.cnblogs.com/chaoge-666/p/15314972.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有