linux tee 重定向_快乐的linux命令行-重定向

整理自《快乐的linux命令行一书》。

linux系统版本: Ubuntu 17.04

本章,我们将介绍命令行最酷的特性,叫做I/O重定向,通过这个工具,可以重定向命令的输入输出,命令的输入来自文件,而输出也存到文。也可以把多个命令连接起来组成一个强大而命令管道。我们将介绍以下命令:

cat:连接文件

sort : 排序文本行

uniq : 报到或省略重复行

grep : 打印匹配行

wc : 打印文件中的换行符,字和字节个数

head : 输出文件第一部分

tail : 输出文件最后一部分

1、标准输入、输出和错误

程序,比方说ls,实际上把他们的运行结果输送到一个叫做标准输出(stdout)的特殊文件,而他们的状态信息则送到另一个叫做标准错误的文件(stderr)。默认情况下,标准输出和标准错误都连接到屏幕,而不是保存到磁盘文件。除此之外,许多程序从一个叫做标准输入(stdin)的设备得到输入,默认情况下,标准输入连接到键盘。

2、重定向标准输出

重定向标准输出到另一个文件除了屏幕,我们使用“>”重定向符,其后跟文件名,例如:

重定向输出.png

我们将ls的输出重定向到ls-output.txt文件中。现在 ,我们把目录换成一个不存在的目录:

重定向2.png

可以看到,我们输出了一个错误信息,这条错误信息没有重定向到文件中而是输出到了屏幕上,因为“>”只是重定向了标准输出,而没有重定向标准错误,所以错误出现在了屏幕上,但此时我们的文件已经变了:

重定向3.png

可以发现文件大小变为了0.因为使用“>”重定向符重定向输出结果时,目标文件总是从开头被重写。所以导致文件内容删除,那么我们怎么能把重定向结果追加到文件内容后面呢,使用“>>”重定向符:

重定向4.png

可以看到,即使出现错误,我们的文件大小仍然没有变为0.

3、重定向标准错误

我们使用如下的方式重定向标准错误:

重定向错误.png

可以看到,我们的错误被写入了文件:

重定向错误.png

4、重定向标准输出和错误到同一个文件

如果说2代表标准错误,那么我们可以用1代表标准输出,比如:

重定向5.png

如果我们希望捕捉一个命令的所有输出到一个文件,即同时重定向标准输出和标准错误,有两种方法来完成任务,首先是传统的方法:

重定向5.png

我们在最后添加了2>&1参数,根据大小文件大小可以看出,输出和错误都被重定向到ls-output.txt文件中了。

第二种方法更加精简:

重定向输出和错误2.png

5、处理不需要的输出

有时候我们不想要一个命令的输出结果,我们只想把它扔掉,我们只需要重定向输出结果到一个特殊的叫做“dev/null”的文件。这个文件是系统设备,叫做位存储桶,它可以接受输入,并且对输入不做任何处理:

处理不需要的输出.png

6、cat --连接文件

cat命令读取一个或多个文件,然后复制他们到标准输出:

cat命令1.png

cat还可以用来连接文件,比如我们下载了一个大型文件,这个文件被分为好多部分,我们想把他们连接起来,用如下的命令:

cat连接文件.png

如果cat命令没有接受任何参数,它会从标准输入读入数据,而标准输入默认是键盘,所以它会等待我们输入数据:

cat命令2.png

使用快捷键ctrl+d结束我们的输入,由于没有重定向输出,所以它会将原话输出到屏幕上,如下图:

cat输出.png

我们也可以将cat接受的输入重定向到文件中,并用cat查看:

cat输出2.png

7、管道线

命令可以从标准输入读取数据,然后再把数据送到标准输出,命令的这种能力被一个shell特性所利用,这个特性叫做管道线,一个命令的标准输出可以管道到另一个命令的标准输入:

command1 | command2

比如我们将ls的的输出结果当做标准输入输送到less命令:

管道线1.png

8、过滤器

管道线经常用来对数据完成复杂的操作,有可能会把几个命令放在一起组成管道线。通常,以这种方式使用的命令称为过滤器。过滤器接受输入,以某种方式改变它,然后输出它。比如sort过滤器,把目录/bin和/usr/bin中的可执行程序联合在一起,再把它们排序:

过滤器.png

另一个过滤器是uniq,可以报道或者忽略重复行,默认情况下,从数据列表中删除任何重复行,如果我们想得到重复的数据列,在uniq命令上加上“-d ”选项:

uniq.png

9、wc--打印行、字和字节数

wc命令用来显示文件所包含的行,字和字节数:

wc命令1.png

10、打印匹配行

grep是个很强大的程序,用来找到文件中的匹配文本。这样使用grep命令:

grep pattern [file...]

这里的pattern指匹配模式,grep能够匹配的模式很复杂, 可以是正则表达式,不过这里只展示一个基本的文本匹配,找到文件名中包含zip的所有文件:

grep.png

11、head/tail 打印文件的开头结尾

head命令默认打印文件的前10行,也可以用-n指定打印的行数

而tail命令默认打印文件的后10行,也可以用-n指定打印的行数

head-tail.png

12、tee命令

linux提供了一个tee命令,允许我们保存管道线中的中间结果,并且使数据继续顺着管道线流动:

tee.png

上面的命令使我们在进行grep匹配之前,首先将中间结果,即ls的结果保存到ls.txt中。

如果你喜欢我写的文章,可以帮忙给小编点个赞或者加个关注,我一定会互粉的!

如果大家对linux感兴趣,欢迎跟小编进行交流,小编微信为sxw2251,加我要写好备注哟!

我的微信

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/443265.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java 诊断工具 Arthas 常见命令

基本概念 云原生这么多微服务,当然需要一个诊断利器来排查问题。 Arthas 是阿里开源的 Java 诊断工具,深受开发者喜爱。在线排查问题,无需重启;动态跟踪 Java 代码;实时监控 JVM 状态。Arthas 支持 JDK 6&#xff0c…

28和lba48命令格式区别_编译Sass(命令行)

本文作者:开课吧无忧图文编辑:开三金sass编译有很多种方式,如命令行编译模式、编辑器自动编译、编译软件koala、sass-loader等。今天我们就先来看第一种:命令行编译刚才我在test文件夹里面已经建立了一个style.scss文件&#xff0…

JAVA基础编程代码50个

【程序1】 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子对数为多少? 程序分析: 兔子…

爬虫软件python功能_Python 网络爬虫程序详解

#!/usr/bin/python #调用pythonfrom sys import argv #导入sys是导入python解释器和他环境相关的参数from os import makedirs,unlink,sep  #os主要提供对系统路径,文件重命名和删除文件所需的函数#makedirs是创建递归文件夹的函数。#比如说我们要创建一个新的目录…

价钱转换python_如何在python中转换货币?

我正在做一个虚拟助手项目。我想让它告诉我其他货币的美元汇率。我用beauthoulsoup编写了以下代码,它从给定的网站获取数据,对其进行解析并在命令行中打印结果供我阅读。但这只是美元对巴基斯坦卢比。如何修改程序,使其接受任何货币并告诉我该…

char qt 转unicode_Qt QString 中文 char* UTF-8 QByteArray QTextCodec unicode gb2312 GBK 乱码与转码问题...

2012-03-22 14:00175人阅读评论(0)代码如下:如果不不设全局的字符集是utf-8,那么网上一般的方法是可以转的。如下程序中 #define DD 1的情况下;但是如果设置了全局的utf-8,再用以前的方法:QByteArraybaaaa.toLatin1();…

计算机图形学考试题及答案_计算机图形学考试题及答案

3、在图形文件中,常用来描述图形元素(点,线,圆,弧等);而在光栅扫描图形显示器中,采用显示所有图形。4、当三维物体用透视变换方程投影到观察平面上,物体中不与观察平面平行任一簇平行线投影成收…

子窗体中组合框联动_一张表实现组合框联动

嗨,大家中午好!最近,有网友给我私信,想要一个联动的示例,一个有关于部门联动的操作。其实关于联动的操作有很多,可以是组合框的联动,列表框联动,组合框与列表框也可以联动&#xff0…

中如何实现文字转语音_录音转文字、文字转语音,学会这一招就够了!手把手教你如何操作...

阅读文章时候想着有人可以把文章读给我听就好了,写作时想着语音直接可以转换成文字就好了,大家是不是有时会突然冒出这样的想法?七十这些看似天真的想法,还真的有办法解决,这里就手把手教你如何操作才能将的文字转换成…

图像 理想低通滤波_图像处理之滤波(下)

[toc]目录一、常规滤波低通高通带通带阻二、非局部均值滤波三、维纳滤波四、卡尔曼滤波前言所谓滤波,其实就是从混合在一起的诸多信号中提取出所需要的信号。信号的分类:确定型信号,可以表示为确定的时间函数,可确定其在任何时刻的…

泰山行宫碧霞元君祠_临清市泰山行宫碧霞元君祠5月4号(农历三月三十日)举行大型泰山奶奶接驾法会...

临清是泰山奶奶的娘家,每年的四月泰山奶奶要回临清省亲临清市道教协会定于2019年农历三月三十(5月4号星期六)于临清桑树园泰山行宫碧霞元君祠举行大型泰山奶奶迎鸾接驾庙会。届时,将有架鼓会、云龙会、狮胞会、钢叉会、高跷会、天音会、彩船会、秧歌会等…

充分条件反过来是必要条件吗_“充分必要条件”引发的现实思考

昨天看了一篇文章是介绍“充分条件和必要条件”,大致就是A能直接推导出B,那A就是B的充分条件。A不一定能推导出B,但是没A一定推导不出B,那A就是B必要条件。举个简单的例子:对你好(A)与喜欢你&am…

手机游戏降低游戏延迟的软件_怎么降低手机网络延迟(减少网络延迟的5个小技巧)...

在过去的几十年里,用户或开发人员并不担心延迟。在上世纪90年代和本世纪初,个人互联网连接速度要慢得多,因此发送请求和接收响应之间的延迟要远远小于下载完成所需的时间。如今,更高的带宽连接使下载速度更快,因此延迟…

mysql常用的开发软件下载_强烈推荐!14款经典的MySQL客户端软件

【IT168 评论】不用我说,大家都知道MySQL是一个怎么样的数据库。虽然它的命运比较坎坷,但是丝毫没有影响到我们对MySQL的热情。不论是个人程序或者网站,还是企业数据库,MySQL的身影无处不在。无论做什么数据库的开发,一…

mysql最大值最小值_mysql最大值,最小值,总和查询与计数查询

1、最大值查询:mysql> select max(score) from 4a;------------| max(score) |------------| 93 |------------1 row in set (0.06 sec)2、最小值查询:mysql> select max(4a.score),min(4inall.score) from 4a,4inall;-------------------…

阿里云 centos mysql_在阿里云的CentOS环境中安装配置MySQL的教程

1 常规错误的yum安装方法:在前文中记述了CentOS 6.5系统中通过yum方式快速地搭建了LNMP环境,那么是否也能在CentOS 7或CentOS 7.1系统中依葫芦画瓢安装MySql5.6.24呢?答案是否定的。[roottypecodes ~]# yum -y install mysql mysql-server my…

mysql文件脱机_SQL数据库的脱机与联机操作

online : 可对数据库进行访问offline:数据库无法使用1、使用查询语句select state_desc from sysdatabases where name 数据库名 2、使用databasepropertyex( database,property)函数select databasepropertyex( 数据库 ,’ status )分离数据库:EXEC…

dockerfile 安装mysql_dockerfile构建mysql镜像

使用dockerfile构建mysql,镜像构建完成后,运行容器后,启动mysql服务总是报错Fatal error: Cant open and lock privilege tables: Table storage engine for db doesnt have this optionmysql安装使用的官方的压缩包mysql-5.7.20-linux-glibc…

ubunt11 安装mysql_ubuntu 11.10安装mysql

1. 安装devadmdevserver:~$ sudo apt-get install mysql-server......The following NEW packages will be installed:libdbd-mysql-perl libdbi-perl libhtml-template-perl libmysqlclient16libnet-daemon-perl libplrpc-perl mysql-client-5.1 mysql-client-core-5.1mysql-c…

mysql 取交集 php_mysql 查询结果取交集的方法

本文将详细介绍MySQL中如何实现以SQL查询返回的结果集取交集的实现方法,需要的朋友可以参考1MySQL中如何实现以下SQL查询(SELECT S.NameFROM STUDENT S, TRANSCRIPT TWHERE S.StudId T.StudId AND T.CrsCode CS305)INTERSECT(SELECT S.NameFROM STUDENT S, TRANSC…