位置: 编程技术 - 正文

linux shell数据重定向(输入重定向与输出重定向)详细分析(shell linux命令详解)

发布时间:2024-02-27

推荐整理分享linux shell数据重定向(输入重定向与输出重定向)详细分析(shell linux命令详解),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:linux用shell重命名文件,linux重启shell,linux shell语句,shell 重启,linux用shell重命名文件,linux用shell重命名文件,shell中chown,shell中chown,内容如对您有帮助,希望把文章链接给更多的朋友!

在了解重定向之前,我们先来看看linux 的文件描述符。

linux文件描述符:可以理解为linux跟踪打开文件,而分配的一个数字,这个数字有点类似c语言操作文件时候的句柄,通过句柄就可以实现文件的读写操作。 用户可以自定义文件描述符范围是:3-num,这个最大数字,跟用户的:ulimit ?n 定义数字有关系,不能超过最大值。

linux启动后,会默认打开3个文件描述符,分别是:标准输入standard input 0,正确输出standard output 1,错误输出:error output 2

以后打开文件后。新增文件绑定描述符 可以依次增加。 一条shell命令执行,都会继承父进程的文件描述符。因此,所有运行的shell命令,都会有默认3个文件描述符。

对于任何一条linux 命令执行,它会是这样一个过程:

一个命令执行了:

先有一个输入:输入可以从键盘,也可以从文件得到

命令执行完成:成功了,会把成功结果输出到屏幕:standard output默认是屏幕命令执行有错误:会把错误也输出到屏幕上面:standard error默认也是指的屏幕

文件输入输出由追踪为一个给定的进程所有打开文件的整数句柄来完成。这些数字值就是文件描述符。最为人们所知的文件米描述符是 stdin, stdout 和 stderr,文件描述符的数字分别是0,1和2。这些数字和各自的设备是保留的。一个命令执行前,先会准备好所有输入输出,默认分别绑定(stdin,stdout,stderr),如果这个时候出现错误,命令将终止,不会执行。命令解析过程,可以参考:Linux Shell 通配符、元字符、转义符使用实例介绍

这些默认的输出,输入都是linux系统内定的,我们在使用过程中,有时候并不希望执行结果输出到屏幕。我想输出到文件或其它设备。这个时候我们就需要进行输出重定向了。

linux shell下常用输入输出操作符是:

1. 标准输入 (stdin) :代码为 0 ,使用 < 或 << ; /dev/stdin -> /proc/self/fd/0 0代表:/dev/stdin 2. 标准输出 (stdout):代码为 1 ,使用 > 或 >> ; /dev/stdout -> /proc/self/fd/1 1代表:/dev/stdout3. 标准错误输出(stderr):代码为 2 ,使用 2> 或 2>> ; /dev/stderr -> /proc/self/fd/2 2代表:/dev/stderr

输出重定向:

格式:

command-line1 [1-n] > file或文件操作符或设备

上面命令意思是:将一条命令执行结果(标准输出,或者错误输出,本来都要打印到屏幕上面的) 重定向其它输出设备(文件,打开文件操作符,或打印机等等)1,2分别是标准输出,错误输出。

实例:

注意:

1、shell遇到”>”操作符,会判断右边文件是否存在,如果存在就先删除,并且创建新文件。不存在直接创建。 无论左边命令执行是否成功。右边文件都会变为空。

2、“>>”操作符,判断右边文件,如果不存在,先创建。以添加方式打开文件,会分配一个文件描述符[不特别指定,默认为1,2]然后,与左边的标准输出(1)或错误输出(2) 绑定。

linux shell数据重定向(输入重定向与输出重定向)详细分析(shell linux命令详解)

3、当命令:执行完,绑定文件的描述符也自动失效。0,1,2又会空闲。

4、一条命令启动,命令的输入,正确输出,错误输出,默认分别绑定0,1,2文件描述符。

5、一条命令在执行前,先会检查输出是否正确,如果输出设备错误,将不会进行命令执行

输入重定向

格式:

command-line [n] <file或文件描述符&设备

将然有,命令默认从键盘获得的输入,改成从文件,或者其它打开文件以及设备输入。执行这个命令,将标准输入0,与文件或设备绑定。将由它进行输入。

实例:

exec绑定重定向

格式:

exec 文件描述符[n] <或> file或文件描述符或设备

在上面讲的输入,输出重定向 将输入,输出绑定文件或设备后。只对当前那条指令是有效的。如果需要在绑定之后,接下来的所有命令都支持的话。就需要用exec命令

实例:

说明:使用前先将标准输入保存到文件描述符6,这里说明下,文件描述符默认会打开0,1,2 还可以使用自定义描述符 。然后对标准输出绑定到文件,接下来所有输出都会发生到文件。 使用完后,恢复标准的输出,关闭打开文件描述符6。

有趣事情:

可能有朋友会这样用:exec 1>suc.txt ,接下来所有输出都绑定到suc.txt 文件,那么怎么样恢复原来的呢? 试试你就会发现问题所在……

复杂一点实例

总结下:

学习就要总结,总结才可以提高了。哈哈!

估计还有一些朋友是头晕晕的。怎么linux的重定向这么复杂呢,又是文件打开描述符又是读,还有些,还有默认标准输入输出。

其实,总结一下,重定向应用通常就以下两点:

1、重新设置命令的默认输入,输出,指向到自己文件(文件,文件描述符,设备其实都是文件,因为linux就是基于设备也是文件,描述符也指向是文件,哈哈)

2、扩展自己新的描述符,对文件进行读写操作

linux shell 管道命令(pipe)使用及与shell重定向区别 看了前面一节:linuxshell数据重定向(输入重定向与输出重定向)详细分析估计还有一些朋友是头晕晕的,好复杂的重定向了。这次我们看下管道命令了

Linux tcpdump命令详解大全 简介用简单的话来定义tcpdump,就是:dumpthetrafficonanetwork,根据使用者的定义对网络上的数据包进行截获的包分析工具。tcpdump可以将网络中传送的数据包

零基础入门篇之Linux及Arm-Linux程序开发笔记 前言:本文记录了自己从一个完全不懂Linux的人如何一步步学会Linux程序开发的过程。当然也希望本文能够达到它的目的,让那些和我一样没有任何基础

标签: shell linux命令详解

本文链接地址:https://www.jiuchutong.com/biancheng/371376.html 转载请保留说明!

上一篇:linux shell 脚本实现tcp/upd协议通讯(重定向应用)(linux shell脚本编程100例)

下一篇:linux shell 管道命令(pipe)使用及与shell重定向区别(shell中管道的作用)

  • 外出经营活动税收管理证明在哪里办理
  • 应付账款里的暂估
  • 长期股权投资为什么要冲减资本公积
  • 预付卡发票可以报销吗?
  • 发票密码区超出可以用吗
  • 固定资产加速折旧的方法有哪些
  • 分公司企业所得税汇总缴纳还是单独缴纳
  • 房屋租赁收入如何征税?
  • 业务招待费列支内容
  • 准予结转以后年度怎么算
  • 购买房产怎么确认收入
  • 公司车无偿过户给个人需要什么手续
  • 银行取现怎么取
  • 企业购买的黄金计入什么科目
  • 残保金是所有企业都交么
  • 伙食支出设立的明细
  • 车辆保险费的车船税计入什么会计科目
  • 幼儿园组织的活动幼儿一定要参加吗
  • 审计风险可控吗
  • 建筑业营改增账务处理怎么做?
  • 增值税普票销售方无开户行账号是否可以
  • 应征增值税不含税销售额(3%征收率)怎么算
  • 电子税务局社保申报截止日期每月
  • 协会会费入账科目是哪个
  • 季度利润表本月数和本年累计数
  • 企业所得税的账载金额和实际发生额
  • 成本费用总额包括信用减值损失吗
  • windows10如何添加英文输入法
  • 社保怎么计提
  • 向股东借款会计科目
  • scanexplicit.exe - scanexplicit是什么进程 作用是什么
  • 公司+农户经营模式是什么意思
  • qtzgacer.exe - qtzgacer进程是什么文件 .作用是什么
  • 小规模纳税人多久缴纳一次增值税
  • 转出未交增值税怎么算
  • 如何做好税收风险管理工作
  • 合伙企业股东个人所得税费用扣除标准
  • 月入2万的10个小生意低成本
  • 预测编码方式
  • framework怎么用
  • 税务局什么情况下可以停供发票
  • 外出培训餐费要进差旅费吗
  • 残保金缴纳需要计提吗
  • 收到银行存款利息计入什么科目
  • 幼儿园免征增值税账务处理
  • 安装mysql时出现错误
  • 资金托管账户的钱能查到吗
  • 小微企业如何升级一般纳税人
  • 购买火车票报销,实际没乘车能查到嘛
  • 利润表利息费用怎么填
  • 电脑计入固定资产了怎么抵企业所得税
  • 小规模未达到起征点申报表怎么填
  • 纳税人防伪税控设备未抄报怎么办
  • 第二季度所得税表中研发费用
  • 用友部门核算项目核算
  • 事业单位劳务派遣是啥意思
  • 增值税当月缴纳还是次月缴纳
  • 提供劳务方式是什么意思
  • 电信增值服务费会计科目
  • 员工代垫费用能用公户转吗
  • 未开票收入如何纳税申报
  • 材料运费计入什么科目
  • mysql mac启动
  • iis w3svc
  • win7 64位系统无法使用银行网银怎么办? IE9浏览器无法使用农业银行网银的解决方法
  • win10 rundll
  • 备份ubuntu系统
  • win10预览模式
  • [置顶]游戏名 TentacleLocker
  • 用python做开发
  • js == ===区别
  • android 动态添加控件
  • python中的全局变量
  • jquery多级联动下拉菜单
  • android获取sha1
  • 北京比较大五金市场在哪
  • 教育培训行业的发展
  • 交警认可的客货两用车型
  • 北京税务网站
  • 北京国税查询发票真伪查询系统
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号