重定向和管道

管道与重定向 管道与重定向 只有在开水里,茶叶才能展开生命浓郁的香气. 一、重定向 标准输入、标准正确输出、标准错误输出 进程在运行的过程中根据需要会打开多个文件,每打开一个文件会有一个数字标识。这个标识叫文件描述符。 进程使用文件描述符来管理打开的文件(FD----file descriptors). 文件描述符:每打开一个程序都会有文件描述 0, 1, and 2, known as standard input, standard output, and standard error 0,标准输入(键盘) 阅读详情

标准输入和输出

程序:指令+数据
读入数据:input
输出数据:output

打开的文件都有一个fd:file descriptor(文件描述符)

Linux给程序提供三种I/O设备

标准输入(STDIN) -0 默认接受来自键盘的输入
标准输出(STDOUT) -1 默认输出到终端窗口
标准错误(STDERR) -2 默认输出到终端窗口

I/O重定向(redirect):改变默认位置

1.输出结果重定向到其他的终端窗口。
	ls > /dev/pts/1  将当前的返回结果,重定向到/dev/pts/1中去。
	whoami > /dev/pts/2  将whoami的返回结果,重定向到/dev/pts/2中去。
	> f1 创建f1的空文件,便是重定向做的f1空文件,因为前面什么命令都没有,相当于没有输出于是就创建一个空文件。


2.输出结果重定向到某个文件中去。
	who > who.log who的结果集,重定向放在who.log文件中。
	如果换一换,
	whereis > who.log 因为上面已经有who.log的文件,并且已经有内容了。那么这里会直接覆盖文件内容。
	如果想文件不变,内容不丢,则
	whereis >> who.log 原内容则不丢,把whereis的返回集内容追加在原内容下。
	
如果不想系统可以覆盖文件或者文件内容:
	set -C:可以禁止系统中进行覆盖文件或者文件内容的操作,可以追加。
	set +C:取消禁止系统中进行覆盖文件或者文件内容的操作。
	
	如果已经set -C禁止覆盖了,也可以用>|强行覆盖。例:ip a >| who.log
	
三种I/O设备的STDIN -0、STDOUT -1、STDERR -2编号的用法:
	ls /etc/ -R > /data/etclist.txt:将ls的目录递归显示出所有etc下的目录文件信息的返回集,
		重定向放到/data/etclist.txt文件中。这是>,是没有编号的,不过默认为1,也就是ls /etc -R 1> /data/etclist.txt
	
	cmd > /data/errlist.txt:cmd命令在Linux中是不存在的,所以会报错,但是报错信息不会存入errlist.txt中,
		但是也会创建errlist.txt这个文件,只是没内容,空文件。
		如果需要把报错信息也重定向存入文件中,则:
		cmd 2> /data/errlist.txt即可。2表示STDERR,错误标准信息。
		也可以cmd 2>> /data/errlist.txt。把错误信息重定向追加到原本的errlist.txt内容下。
		
注意:/dev/null是个垃圾桶文件,不要的信息可以往里丢,比如不想别人看到某个命令的输出结果,例:
	rm -rf /data/ 2> /dev/null
	
	命令不全都是对或者错,也有命令是有对有错的。则:
	ls /etc /error:则是半对半错。这时,可以这么重定向:
	ls /etc /error > /data/etclist 2> /dev/null
	
	同样,可以把对的和错的都重定向到一个文件中:
	ls /boot /error &> /data/all.txt
	or
	ls /boot /error > /data/all2.txt 2>&1   把ls /boot /error中对的结果放在all2.txt中,2>&1表示把2错的变成1对的。2>&1顺序不能乱。必须在后面。
	
	把两条命令都重定向到某个文件中:
	(cal 08 2020;cal 10 2020) >> /data/all.txt
	
标准输入:用文件内容代替键盘,输入到终端窗口。例:
	nano f1.txt,f1.txt中2*3   2^8两个内容。
	bc就是一个输入命令。那么:
	bc < f1.txt
	将bc的结果重定向到bclist.txt中。
	bc < f1.txt > bclist.txt
	
多行重定向(就地文本heretxt):
	cat > f1 <<EOF:cat后面不跟路径文件就是一个输入输出的命令。cat > f1就是将输入的内容重新输出后重定向给f1文件,
		cat > f1 <<EOF,表示多行重定向,可以多行输入,以EOF字符结尾之前的输入内容重新输出后重定向给f1文件。EOF结束。
		注意:EOF不是绝对的,只是EOF比较常用,用A、B、E、F都行。
			  EOF或其他结尾的字符必须单独一行,任何字符符号都不能有,否则就不认为是结束。
	
	例:多行重定向,并且将命令格式写入进去,语句中调用其他命令用``符号,调用变量直接$变量即可:
		cat > f1 <<EOF
		> My hostname is `hostname`
		> My username is $USER
		> EOF

tr命令:

	tr [option] set1 [set2]:转换或者删除字符。例:
		tr 'a-z' 'A-Z':将输入的小写字符转换成大写字符。
		
	那么,可以将文件内容输入到tr命令中。例:
	tr 'a-z' 'A-Z' < /etc/issue > /data/etclist.txt:将/etc/issue文件中的小写字母转换成大写字母,并重定向到/data/etclist.txt文件中。
	
	tr的set1和set2选项是一一对应的,例如,tr 'a-c' '1-3':将a转换成1,b转换成2,c转换成3。其他的不转换。set2选项有对应的set1转换,没对应转换的不转换,例:
		tr 'a-c' '1-4' 4是多出来的,没有对应,只转换abc三个。
		
		set1选项多出来,和set2选项不对应,例:
		tr 'a-d' '1-3' 则d转换成3,set1选项多出来的,和set2选项不对应的值,则转换成set2选项的最后一个值。当然这个规则是可以修改的:
			-t的参数,set1选项多出来的值,和set2没有对应的,则不做转换。例:tr 'a-d' '1-3',则d不做转换。
			
			-d的参数,有-d参数时,只有set1选项,没有set2选项,例:tr -d 'abc',输入的所有字符去掉abc,输入:abcdf,输出:df。
			
			-c和-C的参数,去字符集的补集。例:tr -dc '0-9',去掉出去0-9之外的所有字符。注意:这时需要用ctrl+d作为提交,而不是回车,这时Linux识别不了回车。
				例:1 xt.,2 j3 r#!$4 mb,只保留数字、b字母和空格:echo '1 xt.,2 j3 r#!$ 4 mb' | tr -dc '[0-9][b][ ]'
				用[]可以选择去掉多个,如果字符串中有特殊含义,又不需要它表示出特殊含义,则用单引号括起来。
			
			
			-s的参数,压缩连体重复的字符。例:tr -s 'abc',压缩连续重复的a和b和c。输入aaaeokcpaobbdsacccccsaqaaa,返回:aeokcpaobdsacsaqa
				将who的返回值重定向到wholist.txt中,压缩连续的重复成一个空格并把这个空格转换成+号:tr -s ' ' '~' < wholist.txt
				注意:tr输入的某个文件,再次重定向输出给某个文件不能是原文件,例:tr -s ' ' '+' <1+2+3+..100.txt >bc.txt,重定向给bc.txt,不能再次重定向给1+2+3+...+100.txt这个文件。
				
			1+2+3+..+100的题:
				echo {1..100} > echolist.txt,将{1..100}的值,重定向给echolist.txt文件。
				tr -s ' ' '+' < echolist.txt > bc.txt,将echolist.txt文件中的空格替换成+号后输出结果重定向给bc.txt。
				bc < bc.txt
				
			tr -d '\n' :删除回车。win中的文本换行是回车加换行。这时需要把win中的文本换行转换成Linux的换行就得删除win中的回车。
				需要删除某文件的回车,直接tr -d '\r' < 某文件即可。(\n是换行)
				

mail:查看账号邮件。如果有邮件,输入邮件编号即可直接查看邮件内容。退出是quit。
mail -s "邮件名" 接收人$USER:发邮件,下方会让用户输邮件具体内容,以.结束。

管道:

	命令1 | 命令2,也就是把命令1的输出传给命令2作为输入,最后输出。当然,也可以一直命令3|命令4|命令5。结论一样。
	
	例如:whoami | tr 'a-z' 'A-Z':就是将whoami的输出结果,作为tr的输出,最后输出ROOT。
	
	例如:1+2+3+..100:echo {1..100} | tr ' ' '+' | bc 。输出5050.
	
	| 这个竖线就是管道符。

	注意:管道符左边的命令必须是标准输出。不是标准错误,不是标准输入。管道符右边需要标准输入

	注意:如果不确定管道符左边的命令是否是标准输出,可能导致标准错误,那么可以转换成标准输出,把错误信息也可以作为标准输入给管道符右边的命令。
	
	例:errorcmd 2>&1 | tr 'a-z' 'A-Z'   or    errorcmd |& tr 'a-z' 'A-Z'  两种方法,都行,都可以把错误转换成输出。


	less:把文件内容作分页显示,例如:cat /porc/meminfo  | less,空格往下翻页,q退出,方向上下键可以一行一行操作,PgUp、PgDn上下翻页。
	
	lpr:把内容发送给打印机。例:echo "test print" lpr -P print_name

	- 符号:例:tar -cvf - /home | tar -xvf -   tar -cvf - /home,将/home打包,打包的文件名叫- ,tar -xvf - ,解包,将前面的-文件名解包。
	- 作为临时文件。这样就不需要专门创建一个临时file了。

tee:

命令1 | tee [-a] 文件1 | 命令2。
	把命令1的标准输出保存到文件1中,并且作为命令2的输入使用。-a表示是否追加,没有-a就会将文件1的内容全部覆盖。
	
	类似重定向到文件1中,不过依然在终端窗口输出命令1的结果。后方的命令2可加可不加,只是tee有标准输出,所以后面还可以跟管道。
Linux的管道和重定向 我们有时候会将一个命令的输出当作另一个命令的输入或者将文件中的内容当作命令的输入,这时候就会用到重定向和管道。file descriptors,FD,文件描述符,进程使用文件描述符来管理打开的文件。FD是访问文件的标识,即链接文件。省去了冗长的绝对路径;0 是键盘只读1,2 是终端可以理解是屏幕3+ 是文件,可读可写输出重定向分为正确输出和错误输出。 阅读详情

相关推荐

【Linux】管道和重定向

管道符我们之前用过,ls -l | more,如果显示内容过多,使用more分页。| 将 ls -l 的执行结果传递给 more,把这个结果当作后边这个命令的输入来对待 单独运行more的时候,相当于是把文件当作more命令的输入 通过管道符可以组合多种命令,所以我们可以使用cat 文件名 | more来实现和刚才一样的效果 cat | ps -f cat把文本内容作为输入和终端建立连接,这样文本内容就可以显示在终端了。ps 是查看进程状态 ...

Errol's Blog 283

输入/输出重定向符及命令行管道的使用

1. 重定向到文件 配合 cat 命令使用。cat 单独使用可作为输入,默认将输出至标准输出,也就是屏幕。在使用cat输入时,Ctrl-D可以输入eof结束输入。 # 注:以下用 <注释> 表示注释 root]#cat # 默认输出到屏幕 123456 123456 <ctrl-D> root]#cat >&1 # 与直接使用cat功能相同 123456 123456 <Ctrl-D> 2. > 输出重定向符后加上一个文件,可将数据存储到文件

专注于C/C++/Linux领域创作 3260

实战指南:在UE5中高效集成Entt(ECS)框架

本文提供了一份在虚幻引擎5中高效集成Entt ECS框架的实战指南。针对UE5项目在处理大规模动态实体时的性能瓶颈,详细讲解了如何通过数据驱动的ECS架构进行优化。内容包括前期环境准备、核心构建步骤、创建首个ECS子系统以及与UE原生系统的数据同步技巧,旨在帮助开发者快速掌握集成方法,提升游戏逻辑的执行效率。

weixin_29002209的博客 158

Linux基础——重定向和管道

重定向和管道是什么? 重定向指定特定的输入输出 管道则将上一个命令的结果重定向到下一个命令 标准输入输出重定向 默认的标准输入输出为屏幕,对其重定向可指定输入输出的位置 输入输出 重定向 意义 stdin < / << < 重定向到文件中去读取,<< 表示结束输入的字符 stdout > / >>或1>/1>> 覆盖/追加重定向到指定文件 stderr 2> / 2>> 覆盖/追加重定向到指

松仔Log的博客 4410

基于Canfestival的对象字典工具objdictedit.py的运行环境配置

本文以菜狗的视角,一步一步地对对象字典的环境进行配置,旨在能给读者一个比较详细的参考,不恰之处,还请指正。

在线求职中... 3707

别再死记硬背了!一张图搞懂无刷电机半桥与全桥驱动的核心差异(附避坑指南)

本文深入解析无刷直流电机的半桥与全桥驱动方式的核心差异,提供直观对比与选型指南。半桥驱动结构简单、成本低,适合低要求场景;全桥驱动性能优越但复杂,适用于高精度控制。文章还包含实战避坑指南,帮助工程师优化驱动方案选择与应用。

weixin_29290947的博客 318

【Linux】08 -- 重定向命令及管道命令

重定向命令及管道命令   Shell命令或应用程序在执行时,往往需要从输入设备接收一些输入数据,并将处理结果输出到输出设备上。在Linux系统中,这些输入/输出设备都被作为文件来对待。对应输入/输出设备的文件称为I/O文件。   Linux系统定义了3个标准I/O文件,即标准输入文件stdin、标准输出文件stdout和标准错误输出文件stderr。在默认的情况下,stdin对应终端的键盘,stdout、stderr对应终端的屏幕。   一般情况下,Shell命令和应用程序都设计为使用标准I/O设备进行输入

衍生星球的博客 1351

批处理脚本手动双击可以执行,但计划任务中执行失败

问题现象: 使用批处理脚本从linux端(samba server) 备份一些数据,设置计划任务每天凌晨两点定时备份。 1)、windows系统中映射共享文件夹为S:盘,需要输入共享用户名和密码 2)、脚本中使用xcopy命令复制共享目录中的文件到windows本地目录中。 脚本如下: set Name=%date:~0,4%%date:~5,2%%date:~8,2% chcp 65001 REM chcp防止中文乱码 mkdir "E:\脚本备份\bakscripts%Name%" xco

独孤清扬玩DB 4312

Linux管道和重定向

掌握Linux重定向与管道相关知识

qq_45275452的博客 746

【雕爷学编程】Arduino动手做(75)---TTL转RS-485模块之二线制可以实现真正的多点双向通信

37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手尝试系列实验,不管成功(程序走通)与否,都会记录下来---小小的进步或是搞不掂的问题,希望能够抛砖引玉。 【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程) 实验七十五:TTL转RS-485模块 MAX485 RS485模块 MAX485 是一个8.

雕爷学编程 1万+

ESP-SPARKBOT AI 智能机器人:v1.2 全流程复刻指南

本文介绍 ESP-SPARKBOT AI 智能机器人 v1.2 版本的全流程复刻,包含 PCB 、3D 打印、固件烧录、常见问题解决、参考资料等

举世誉之而不加劝,举世非之而不加沮,定乎内外之分,辩乎荣辱之境,斯已矣。 9244

管道和重定向

Linux管道与重定向相关操作和命令

weixin_61428407的博客 334

TBOX电源方案的详细讲解与分析

输入保护电路是确保车载电子系统稳定性的关键。通过合理选择TVS二极管、保险丝和浪涌抑制器等元器件,能够有效防止来自电源系统的瞬态过电压、浪涌和过流问题,保护后续电路免受损害。针对不同的电源环境和应用场景,可以通过提升功率、优化热管理以及选择高效元器件来进一步提高系统的保护能力和可靠性。

weixin_43199439的博客 1070

Linux——管道和重定向

Linux管道与重定向知识点的一些小总结。。。

qq_52117201的博客 2177

海外购物商城源码 带即时通讯IM源码

在海外购物商城中,即时通讯IM源码可以为用户提供更便捷、高效的沟通方式,帮助解决跨国交易中的语言和文化差异问题。总之,即时通讯IM源码在海外购物商城中扮演着重要的角色,可以为用户提供更方便、高效的沟通方式,解决跨国交易中的语言和文化差异问题。(购买本专栏可免费下载栏目内所有资源不受限制,持续发布中,需要注意的是,本专栏为批量下载专用,并无法保证某款源码或者插件绝对可用,介意不要购买)实时翻译:即时通讯IM源码提供实时翻译功能,能够快速准确地翻译不同语言之间的文字、语音、视频等信息,帮助用户克服语言障碍。

很酷的站长的博客 259

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

linux -- 管道和重定向

管道与重定向的代码实现

m0_60292931的博客 1964

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

重定向和管道详解

重定向和管道详解一、重定向(重新定向命令的输出)1.简介2.案例二、管道(操作符号 | )1.简介2.案例 一、重定向(重新定向命令的输出) 1.简介 将前面命令的输出,作为内容,写入到后面的文件 >:覆盖重定向 >>:追加重定向 2.案例 [root@A /]# head -5 /etc/passwd > /opt/p.txt [root@A /]# cat /opt/p.txt [root@A /]# hostname [root@A /]# hostname

TK_Lumi的博客 7654

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Linux重定向和管道

本文主要介绍了Linux中的重定向工具和管道工具。在重定向的内容中,介绍了输出重定向和输入重定向,其中在介绍的重定向的同时还一并介绍了文件描述符FD。在管道工具中,主要介绍了三种管道工具,分别是进程管道、三通管道(tee)、参数管道(Xargs)

wjy的博客 825

Linux 重定向和管道符

连接左右两个命令,将左侧命令的标准输出作为右侧命令的输入,不传递标准错误。

元气樱的学习博客~ 967

Linux命令中的管道和重定向

Linux命令中的管道和重定向 在Linux中有很多标准的命令例如find、sort、du等,可以满足我们完成文档管理、系统管理等诸多需求,但是大多时候一些复杂的需求都需要多个命令搭配起来使用,对于Linux来说一个命令对应于一个进程,因此多个命令协同工作,就涉及到多个进程的通信,Linux提供一种管道的方式来完成进程间通信。 Linux很多命令都需要输入、输出以及错误信息,默认的输入输出以及...

Spground 6855

4.linux重定向和管道

文件描述符(file descriptor)就是内核为了高效管理这些已经被打开的文件所创建的索引,其是一个非负整数(通常是小整数),用于指代被打开的文件,所有执行I0操作的系统调用都通过文件描述符来实现。同时还规定系统刚刚启动的时候,0是标准输入,1是标准输出,2是标准错误。Linux内核对所有打开的文件有一个文件描述符表格,里面存储了每个文件描述符作为索引与一个打开文件相对应的关系,简单理解就是下图这样一个数组,文件描述符(索引)就是文件描述符表这个数组的下标,数组的内容就是指向一个个打开的文件的指针。

caiji0169的博客 1286

管道和输入重定向

文章目录输入重定向< ,<< :从文件或键盘读取<:从文件中读取<<:从键盘读取小结|: 管道管道的原理管道符的实践按学生名字排序根据目录大小排序列出包含log关键字的文件小结总结 输入重定向 < ,<< :从文件或键盘读取 不是所有的命令都有输入 不是所有的命令都有输出 其实可以使命令的输入来自于文件或者键盘输入 <:从文件中读取 &...

enemy_sprites的博客 629
上一篇: 进程管理及操作
下一篇: 存储管理1
梦游的老李
博客等级 码龄7年 4粉丝 35原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值