LinuxGod

LinuxGod.net
Linux大神网——精选每一篇高品质的技术干货
  1. 首页
  2. 开源快讯
  3. 正文

linuxshell数据重定向(输入重与输出)详细分析

2023年7月30日 279点热度

linuxshell数据重定向(输入重定向与输出重定向)详尽剖析linuxshell数据重定向(输入重定向与输出重定向)详尽剖析在了解重定向之前,我们先来瞧瞧linux的文件描述符。linux文件描述符:可以理解为linux跟踪打开文件,而分配的一个数字,这个数字有点类似c语言操作文件时侯的句柄linux 进程输出重定向,通过句柄就可以实现文件的读写操作。用户可以自定义文件描述符范围是:3-num,这个最大数字,跟用户的:ulimit–n定义数字有关系,不能超过最大值。linux启动后,会默认打开3个文件描述符,分别是:标准输入standardinput0,正确输出standardoutput1,错误输出:erroroutput2之后打开文件后。新增文件绑定描述符可以依次降低。一条shell命令执行linux 进程输出重定向,就会承继父进程的文件描述符。为此,所有运行的shell命令linux系统编程,就会有默认3个文件描述符。对于任何一条linux命令执行,它会是这样一个过程:一个命令执行了:先有一个输入:输入可以从按键,也可以从文件得到命令执行完成:成功了,会把成功结果输出到屏幕:standardoutput默认是屏幕命令执行有错误:会把错误也输出到屏幕里面:standarderror默认也是指的屏幕文件输入输出由追踪为一个给定的进程所有打开文件的整数句柄来完成。

这种数字值就是文件描述符。最为人们所知的文件米描述符是stdin,stdout和stderr,文件描述符的数字分别是0,1和2。这种数字和各自的设备是保留的。一个命令执行前,先会打算好所有输入输出,默认分别绑定(stdin,stdout,stderr),假如这个时侯出现错误,命令将中止,不会执行。命令解析过程,可以参考:LinuxShell键值、元字符、转义符使用实例介绍这种默认的输出红旗linux系统下载,输入都是linux系统内定的,我们在使用过程中,有时侯并不希望执行结果输出到屏幕。我想输出到文件或其它设备。这个时侯我们就须要进行输出重定向了。linuxshell下常用输入输出操作符是:1.标准输入(stdin):代码为0,使用或>>;/dev/stdout->/proc/self/fd/11代表:/dev/stdout3.标准错误输出(stderr):代码为2,使用2>或2>>;/dev/stderr->/proc/self/fd/22代表:/dev/stderr,输出重定向:格式:command-line1[1-n]>file或文件操作符或设备里面命令意思是:将一条命令执行结果(标准输出,或则错误输出,原本都要复印到屏幕里面的)重定向其它输出设备(文件,打开文件操作符,或复印机等等)1,2分别是标准输出,错误输出。

实例:#显示当前目录文件test.shtest1.shtest1.sh实际不存在[chengmo@centos5shell]$lstest.shtest1.shls:test1.sh:没有这个文件和目录test.sh#正确输出与错误输出都显示在屏幕了,如今须要把正确输出写入suc.txt#1>可以省略,不写,默认所至标准输出[chengmo@centos5shell]$lstest.shtest1.sh1>suc.txtls:test1.sh:没有这个文件和目录[chengmo@centos5shell]$catsuc.txttest.sh#把错误输出,不输出到屏幕,输出到err.txt[chengmo@centos5shell]$lstest.shtest1.sh1>suc.txt2>err.txt[chengmo@centos5shell]$catsuc.txterr.txttest.shls:test1.sh:没有这个文件和目录#继续追加把输出写入suc.txterr.txt“>>”追加操作符[chengmo@centos5shell]$lstest.shtest1.sh1>>suc.txt2>>err.txt#将错误输出信息关掉掉[chengmo@centos5shell]$lstest.shtest1.sh2>&-test.sh[chengmo@centos5shell]$lstest.shtest1.sh2>/dev/nulltest.sh#&[n]代表是早已存在的文件描述符,&1代表输出&2代表错误输出&-代表关掉与它绑定的描述符#/dev/null这个设备,是linux中黑洞设备,哪些信息只要输出给这个设备,就会给吞掉#关掉所有输出[chengmo@centos5shell]$lstest.shtest1.sh1>&-2>&-#关掉1,2文件描述符[chengmo@centos5shell]$lstest.shtest1.sh2>/dev/null1>/dev/null#将1,2输出转发给/dev/null设备[chengmo@centos5shell]$lstest.shtest1.sh>/dev/null2>&1#将错误输出2绑定给正确输出1,之后将正确输出发送给/dev/null设备这些常用[chengmo@centos5shell]$lstest.shtest1.sh&>/dev/null#&代表标准输出,错误输出将所有标准输出与错误输出输入到/dev/null文件注意:1、shell遇见”>”操作符,会判定一侧文件是否存在,假如存在就先删掉,而且创建新文件。

不存在直接创建。无论右侧命令执行是否成功。右侧文件就会变为空。2、“>>”操作符,判定右侧文件,假如不存在,先创建。以添加方法打开文件,会分配一个文件描述符[不非常指定,默认为1,2]之后,与右边的标准输出(1)或错误输出(2)绑定。3、当命令:执行完,绑定文件的描述符也手动失效。0,1,2又会空闲。4、一条命令启动,命令的输入,正确输出,错误输出,默认分别绑定0,1,2文件描述符。5、一条命令在执行前,先会检测输出是否正确,假如输出设备错误,将不会进行命令执行,输入重定向格式:command-line[n]catfiletestingcatfiletest#这儿按下[ctrl]+d离开#从标准输入【键盘】获得数据,之后输出给catfile文件[chengmo@centos5shell]$cat>catfilecatfile&1#将标准输出与fd6绑定[chengmo@centos5shell]$ls/proc/self/fd/01236#出现文件描述符6[chengmo@centos5shell]$exec1>suc.txt#将接出来所有命令标准输出,绑定到suc.txt文件(输出到该文件)[chengmo@centos5shell]$ls-al#执行命令,发觉哪些都不返回了,由于标准输出早已输出到suc.txt文件了[chengmo@centos5shell]$exec1>&6#恢复标准输出[chengmo@centos5shell]$exec6>&-#关掉fd6描述符[chengmo@centos5~]$ls/proc/self/fd/0123说明:使用前先将标准输入保存到文件描述符6,这儿说明下,文件描述符默认会打开0,1,2还可以使用自定义描述符。

之后对标准输出绑定到文件,接出来所有输出就会发生到文件。使用完后,恢复标准的输出,关掉打开文件描述符6。有趣事情:可能有同学会这样用:exec1>suc.txt,接出来所有输出都绑定到suc.txt文件,这么如何样恢复原先的呢,试试你才会发觉问题所在„„,复杂一点实例exec3test.sh;#打开test.sh可读写操作,与文件描述符3绑定whilereadline&-exec3

本作品采用 知识共享署名 4.0 国际许可协议 进行许可
标签: 定向 描述 文件 绑定 输出
最后更新:2023年7月30日

Linux大神网

每日更新,欢迎收藏♥ 不积跬步无以至千里,加油,共勉。

点赞
< 上一篇
下一篇 >

Linux大神网

每日更新,欢迎收藏♥
不积跬步无以至千里,加油,共勉。

最新 热点 随机
最新 热点 随机
如何在Linux系统中查看CPU信息使用lscpu命令行 linux服务器搭建ftp的6下安装vsftpd步骤及步骤 贵州工业职业技术学院求职意向期望工作地--诚聘英才 实验1Linux安装实验掌握虚拟机的使用 Linux系统tar命令的使用方法及使用命令教程 linux 开源nas系统 杰和科技NAS服务器媒体见面会在京召开 Android与Linux开发大不同 Linux系统软件安装包:自己动手,安装不用愁 车市新战局:汽车操作系统会复制智能手机的历史吗? Linux文件系统种类 如何卸载用源码包安装的软件?在线视频教程推荐 「职位」ASP.、PHP、Linux服务器集群开发 Torvalds:Linux内核开发的创新前景充满了热情 Linux文件系统的结构从终端窗口探索Linux目录树结构 卸载软件命令Linux.You linux软件开发如何入门?学习Linux步骤及学习方法介绍 14年Linux发行版的有趣历史观点 Linux中不像Windows可以直接在控制面板中卸载? 2018年波及众多Linux发行版的性能对比会更加深入 如何用源码包安装的软件?name的方法总结
嵌入式Linux操作系统学习规划+LINUX路线,主攻江苏电信天翼校园客户端故障指引及解决办法(101)英特尔GMAGMA950显卡驱动程序/WIN8/8.1电信校园网宽带用USB数据线共享给电脑无线上网国防科大开源操作系统:它只是一个吉祥的象征10个常用Linux文本查看命令及其详细说明和使用示例Linux嵌入式系统内核裁剪与定制方法的介绍情况淘宝教育热卖C语言编程开发C++程序设计零基础入门课程从CPU、内存、硬盘、显卡等这些方面安装Linux系统的最低配置Linux通过chkconfig设置开机启动服务创建的几种常见方式(技术分析)Linux多线程的使用与操作系统的区别通常rar命令由一个主命令加若干选项(可选)构成RedHatLinux中自动运行程序中的应用linux 读写文件 关于Linux内核的神秘面纱,你知道几个?使用wget实用程序的有用命令行工具的使用怎么设置linux开机项自启动?方式是怎样的?嵌入式Linux应用层与驱动层要想学习关于Linux内核的交叉编译步骤和方法:步骤、方法STM32嵌入式linux开发流程及应用程序分析-STMlinux下有哪些文件在介绍lsof命令实用用法介绍?
linux操作系统实验教程 Linux的源头要追溯到最古老的UNIX..Minix 文本文件的编辑命令:vim的三种状态模式、基本操作 Linux中国荣誉研究生申请之cron定时器 linux下有哪些文件在介绍lsof命令实用用法介绍? linux修改权限 你知道哪个操作系统是世界上最受欢迎的操作系统吗? 利用TechBubbleTechnologies物联网JumpWayPythonMQTT库进行通信派 博客韦东山freeRTOS系列教程:入门文档教程+进阶视频教程 【面试刷图】往期面试题,10篇为一个单位归置 Linux中不像Windows可以直接在控制面板中卸载? 如何编写一个USB驱动外壳框架:如何搭建这样的一个 【Linux基础知识】ubuntu下可执行文件的基本知识点总结 Fedora17中也用ibus的拼音输入法,感觉还不错 SSH登录的流程和组成结构——SSH 文件类型扩展名及打开方式文档文件文件 嵌入式开发:10年+经验总结 linux到底难不难学呢?推荐可以查看Linux命令大全 嵌入式Linux操作系统学习规划+LINUX路线,主攻 swappiness的值的大小对如何使用swap分区?临时调整的方法 如何在Linux上运行.exe文件的唯一方法?-八维教育 GBK乱码的样子有哪些?乱码是怎么回事?
标签聚合
文件 linux系统 文件目录 操作 命令 linux服务器 应用 内核 虚拟机 软件
书籍
课程
技术群
技术干货大合集↓
  • 2023年9月 / 78篇
  • 2023年8月 / 93篇
  • 2023年7月 / 94篇
  • 2023年6月 / 90篇
  • 2023年5月 / 93篇
  • 2023年4月 / 90篇
  • 2023年3月 / 129篇
  • 2023年2月 / 84篇
  • 2023年1月 / 161篇
  • 2022年12月 / 187篇
  • 2022年11月 / 76篇
友情链接:

Linux书籍 | Linux命令 | Linux系统 | RHCE红帽认证 | Linux软件 | Linux教程 | CentOS系统 | Linux内核 | Linux服务器 | Linux大神 | IT资源

COPYRIGHT © 2023 linuxgod.net ALL RIGHTS RESERVED.