当前位置: 首页 > news >正文

【Linux】 - Linux中的重定向和管道符

文章目录
重定向

(重定向)和 >>(追加重定向)
标准错误重定向
管道
uniq(报告或忽略文件中重复的行)
wc(打印行数、字数和字节数)
grep(打印匹配项)
tee(从标准输入读取数据,并同时输出到标准输出和文件)
重定向 >(重定向)和 >>(追加重定向)
重定向就是把一个命令的输出保存到一个文件中,而不是直接输出到屏幕上。

例如,ls会将当前目录下的文件名输出到屏幕上:

使用重定向:

ls > /home/test/output.txt
那么,就会把ls在屏幕上输出的内容写到/home/test/output.txt(如果文件不存在会自动创建,但目录必须存在)文件中,屏幕上不会存在输出。

注意:

重定向“>”会自动创建新的文件,不需要提前touch;
重定向“>”会覆盖文件原本的内容。
如果重定向时,不想将原本的内容覆盖,可以使用重定向符“>>”来实现,他会将输出内容添加在文件的尾部,。如果这个文件并不 存在,将与操作符>的作用一样创建这个文件 。

标准错误重定向
所谓标准错误重定向就是把命令执行时的报错信息保存到一个文件中。

标准错误的重定向并不能简单地使用一个专用的重定向符来实现。一个程序可以把生成的输出内容发送到任意文件流中。如果把这些文件 流中的前三个分别对应标准输入文件、标准输出文件和标准错误文件, 那么shell将在内部用文件描述符分别索引它们为0、1和2。shell提供了 使用文件描述符编号来重定向文件的表示法。由于标准错误等同于文件 描述符2,所以可以使用这种表示法来重定向标准错误。

假设不存在/bin/usr目录

  1. “2>”

ls /bin/usr 2> ls-error.txt
文件描述符“2”紧放在重定向符之前,将标准错误重定向到ls-error.txt文件中。
2. “2>&1”

ls /bin/usr > ls-output.txt 2>&1
执行两个重定向操作,首先重定向标准输出到ls- output.txt文件中,然后使用标记符2>&1把文件描述符2(标准错误)重 定向到文件描述符1(标准输出)中。
3. &>

ls /bin/usr &> ls-output.txt
表示把标准输出和标准错误都重 定向到了ls-output.txt文件中。

管道
命令从标准输入到读取数据,并将数据发送到标准输出的能力,是使用 了名为管道的shell特性。使用管道操作符“|”(竖线)可以把一个命令的 标准输出传送到另一个命令的标准输入中。

ls -l /usr/bin | less
这条命令就表示:输出/usr/bin下的所有文件和目录,并以翻页形式查看(less命令)。

下面介绍一些常用的支持管道符的命令。(less命令如上,不在重复)。

uniq(报告或忽略文件中重复的行)
uniq命令经常和sort命令结合使用。
uniq可以接受来自于标准输入或者一 个单一文件名参数对应的已排好序的数据列表。默认情况下,该命令删除列表中的所有重复行。因此,在管道中添加uniq命令,可以确保所有的列表都没有重复行。

ls /bin /usr/bin | sort | uniq | less
uniq -d:要查看重复行的列表
wc(打印行数、字数和字节数)
用来显示文件中包含的行数、字数和 字节数。
wc -l :限制命令只报告行数
grep(打印匹配项)
ls /bin | grep zip
这条命令表示:搜索出/bin目录下包含zip的所有文件。

grep -i:grep在搜索时忽略大小写;
grep -v:输出不匹配的行
tee(从标准输入读取数据,并同时输出到标准输出和文件)
tee命令读取标准输入,再把读到的内容复制到标准输出和一个或更多 的文件中去。

ls /bin | tee output.txt | grep zip

文章转自:【Linux】 - Linux中的重定向和管道符_其他-答学网

作者:答学网,转载请注明原文链接:http://www.dxzl8.com/

相关文章:

  • 金额转大写查询易语言代码
  • Redis——事务,锁机制,秒杀案例 !!!!
  • ECO概念及理解
  • 金字塔思维
  • 青岛大学数据结构与算法——第4章
  • 波场与Valkyrie共同主持纳斯达克敲钟仪式 波场合规化再迎里程碑事件
  • 卷积神经网络的常用改进
  • (附源码)node.js知识分享网站 毕业设计 202038
  • css宽高自适应
  • 测试管理三要素
  • Linux Bond 以及Mode 6实验
  • 今日大盘指数查询
  • 深蓝激光slam理论与实践-第五节笔记(基于滤波器的激光slam方法(Grid-based))
  • 深入理解Spark Streaming流量控制及反压机制
  • firewalld防火墙基础
  • co.js - 让异步代码同步化
  • Date型的使用
  • Golang-长连接-状态推送
  • Python连接Oracle
  • Sublime text 3 3103 注册码
  • 聊聊flink的BlobWriter
  • 前端攻城师
  • 我的zsh配置, 2019最新方案
  • 用element的upload组件实现多图片上传和压缩
  • ​queue --- 一个同步的队列类​
  • #pragma once与条件编译
  • #Ubuntu(修改root信息)
  • $Django python中使用redis, django中使用(封装了),redis开启事务(管道)
  • (+3)1.3敏捷宣言与敏捷过程的特点
  • (8)Linux使用C语言读取proc/stat等cpu使用数据
  • (C++17) std算法之执行策略 execution
  • (TipsTricks)用客户端模板精简JavaScript代码
  • (安卓)跳转应用市场APP详情页的方式
  • (教学思路 C#之类三)方法参数类型(ref、out、parmas)
  • (入门自用)--C++--抽象类--多态原理--虚表--1020
  • (五) 一起学 Unix 环境高级编程 (APUE) 之 进程环境
  • (转)Linq学习笔记
  • (转)Linux NTP配置详解 (Network Time Protocol)
  • .Net 4.0并行库实用性演练
  • .NET Compact Framework 3.5 支持 WCF 的子集
  • .NET微信公众号开发-2.0创建自定义菜单
  • .net中调用windows performance记录性能信息
  • @EventListener注解使用说明
  • @synthesize和@dynamic分别有什么作用?
  • [ web基础篇 ] Burp Suite 爆破 Basic 认证密码
  • [145] 二叉树的后序遍历 js
  • [2021ICPC济南 L] Strange Series (Bell 数 多项式exp)
  • [ACTF2020 新生赛]Upload 1
  • [Android] 240204批量生成联系人,短信,通话记录的APK
  • [ASP.NET 控件实作 Day7] 设定工具箱的控件图标
  • [BUUCTF 2018]Online Tool(特详解)
  • [BZOJ] 2427: [HAOI2010]软件安装
  • [C++进阶篇]STL中vector的使用
  • [Cocoa]iOS 开发者账户,联机调试,发布应用事宜
  • [JavaEE]线程的状态与安全