Linux文件描述符和重定向

2023-11-13

文件描述符:
0:stdin(标准输入)
1:stdout(标准输出)
2:stderr(标准错误)
成功和不成功的命令:

[student@myhost ~]$ ls +
ls: cannot access +: No such file or directory
[student@myhost ~]$ echo $?       #命令出错,$?返回非零错误值
2
[student@myhost ~]$ ls a
a
[student@myhost ~]$ echo $?       #命令成功,$?返回成功值0
0

重定向输出:

[student@myhost ~]$ find . -name a
./a
find: ‘./testdir’: Permission denied
[student@myhost ~]$ find . -name a 1>stdout.txt 2>stderr.txt
[student@myhost ~]$ cat stdout.txt 
./a
[student@myhost ~]$ cat stderr.txt 
find: ‘./testdir’: Permission denied

[student@myhost ~]$ find . -name a > d        #只用>仅会将stdout重定向到文件
find: ‘./testdir’: Permission denied
[student@myhost ~]$ cat d
./a

[student@myhost ~]$ find . -name a &> d       #使用&>可将stdout和stderr重定向到文件
[student@myhost ~]$ cat d
./a
find: ‘./testdir’: Permission denied

[student@myhost ~]$ find . -name a 1>d 2>&1   #使用"1>文件名 2>&1"也可完成stdout和stderr重定向到同一文件
[student@myhost ~]$ cat d
./a
find: ‘./testdir’: Permission denied

tee命令:

[student@myhost ~]$ find . -name a | tee d 
find: ‘./testdir’: Permission denied
./a
[student@myhost ~]$ cat d
./a

以上我们可以看出tee命令会将stdout写入d中,并显示一份副本到显示器。

[student@myhost ~]$ find . -name a | tee d | cat -n
find: ‘./testdir’: Permission denied
     1	./a
 [student@myhost ~]$ cat d
./a

以上我们可以发现第一个find命令执行完之后|命令会将stdout做为stdin发送给tee命令,同时将stderr打印到屏幕上,tee命令将stdin保存到d中,同时|将stdout作为stdin传给cat命令,cat -n以显示行数的方式将上一级传送过来的stdin打印出来。
默认情况下,tee命令会将文件中内容覆盖,可以加一个-a选项指定为附加。
我们也可以将stderr变为stdout:

[student@myhost ~]$ find . -name a 2>&1 | tee d 
./a
find: ‘./testdir’: Permission denied
[student@myhost ~]$ cat d
./a
find: ‘./testdir’: Permission denied

从文件中读取stdin:

[student@myhost ~]$ cat a
hhh
[student@myhost ~]$ tee <a d
hhh
[student@myhost ~]$ cat d
hhh

重定向文件内部文本块:

[student@myhost ~]$ cat a
cat<<EOF>log.txt
LOG FILE HEADER
This is a test log file.
EOF
[student@myhost ~]$ bash a
[student@myhost ~]$ cat log.txt 
LOG FILE HEADER
This is a test log file.

自定义文件描述符:

[student@myhost ~]$ echo This is a test line > b
[student@myhost ~]$ exec 3<b
[student@myhost ~]$ cat <&3
This is a test line

以上为创建一个stdin类型的文件描述符。

[student@myhost ~]$ exec 4>out
[student@myhost ~]$ echo This is a test line >&4
[student@myhost ~]$ cat out 
This is a test line

以上为创建一个stdout的截断类文件描述符。

[student@myhost ~]$ echo a line > hhh
[student@myhost ~]$ exec 6>>hhh
[student@myhost ~]$ echo a new line >&6
[student@myhost ~]$ cat hhh
a line
a new line

以上为创建一个stdout的附加类文件描述符。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Linux文件描述符和重定向 的相关文章

随机推荐

  • 解决问题记录4:kettle数据库连接报错时区问题

    问题 Connection failed Verify all connection parameters and confirm that the appropriate driver is installed The server ti
  • FastCGI介绍

    CGI Common Gateway Interface 公共网关接口 是HTTP服务器与其他程序通信的工具 FastCGI是一个long live型的CGI 支持分布式计算 它将CGI解释器进程保持在内存中并因此获得较高的性能 FastC
  • 多模态深度学习

    我们对世界的体验是多模态的 我们看到物体 听到声音 感受质地 闻到气味 然后做出决定 多模态学习表明 当我们的许多感官 视觉 听觉 动觉 参与信息处理时 我们理解和记忆更多 通过组合这些模态 学习者可以组合来自不同来源的信息 多模态深度学习
  • Yoga 14s电脑亮度不能调节?教你一招一下搞定。

    说一下背景 本人电脑联想yoga 14s 不知道最近那一天突然发现电脑亮度没法调节 写小论文时眼睛都要被刺瞎了 试了重装驱动 无果 升级系统 无果 最后河海大学的好朋友问了客服 客服一针见血问出 是否装过向日葵等远程软件 果然 我装了向日葵
  • 使用Python,matplotlib绘制复杂曲线,并求其交点,y=-sin(x)-x-1并求解函数的值

    写这篇博客源于博友的提问 将介绍如何使用Python matplotlib绘制复杂曲线 并求其交点 y sin x x 1并求解函数的值 1 效果图 y sin x 效果图如下 y x ln x 效果图如下 y sin x x 1 y 0
  • 线段树(java)

    线段树描述 线段树是一种二叉搜索树 与区间树相似 它将一个区间划分成一些单元区间 每个单元区间对应线段树中的一个叶结点 使用线段树可以快速的查找某一个节点在若干条线段中出现的次数 时间复杂度为O logN 而未优化的空间复杂度为2N 实际应
  • 使用File类读取文件夹中所有文件

    在平时使用图形化界面操作计算机时 可以很方便的区分各种文件 并进行操作 但对于编程而言 需要通过一些方法才能实现区分或列出文件 在Java编程中 有一个对文件操作的类叫做File类 File类的一个对象代表一个文件或者文件夹 并且File类
  • android内存优化面试题,写给Android软件工程师的3条建议

    我的移动开发春季历程 没有稳定的工作 只有稳定的能力 春天 又到了万物复苏的季节 在程序猿这个行当里 作为 Android 开发出生的我 在经历了5年的脱发生涯后 现在更多的是称呼自己为移动开发攻城狮 Java面试题 1 GC机制 垃圾回收
  • 【使用ip地址进入百度】

    ping一下百度的地址 C Users CaiWeiTong gt ping www baidu com 正在 Ping www baidu com 36 152 44 95 具有 32 字节的数据 来自 36 152 44 95 的回复
  • ElementUI浅尝辄止21:Tree 树形控件

    树形组件 用清晰的层级结构展示信息 可展开或折叠 树组件使用挺频繁的 常见于侧边栏树形目录 树形下拉选项按钮或搜索查询树形信息选项 1 如何使用 基础的树形结构展示
  • 每天五分钟机器学习:使用主成分分析法PCA算法的注意事项

    本文重点 PCA算法能够降维数据 这会给我们带来一些好处 本节课程我们将学习一下 在应用PCA算法时的一些建议 PCA算法可以提高算法的运行 如果数据集维度特别大 10000维 算法运行的会比较慢 我们使用PCA算法能够有效的降低数据的维度
  • maven打包报错-There are test failures

    如果工程中有测试程序 需要检查测试程序的包名与主程序的包名是否一致 解决方法 将包名修改为一致的包名 如果修改后无效 则先执行一下clean命令 在执行package 修改在测试程序的注解中指定主测试类 如果出现 Failed to cle
  • Qt在linux下安装时报错:cannot execute binary file

    最近由于项目需要 得把原来的产品升级为Qt5 之前用的都是Qt4 所以学习了一下Qt5 在windows平台下安装qtcreator时很顺利 但是在ubuntu下安装时遇到了问题 具体表现是在Qt官网https download qt io
  • 【深入理解Linux内核】【分页】相关函数或宏

    PAGE SHIFT PMD SHIFT PUDSHIFT PGDIR SHIFT 指定offset字段位数 指定offset和table总位数 确定页上级目录能够映射的区域大小 确定页全局目录能够映射的区域大小 PTRS PER PTE
  • 第二讲:网线的制作方法及步骤

    这几年 网络搭建与应用 专业技能大赛所需网线需要参赛学生自己制作 所以今天讲讲网线的制作方法及步骤 所要原料 双绞线 RJ45水晶头 所需工具 双绞线压线钳 双绞线测试仪 在制作网线之前 我们先来了解双绞线的连接方法 双绞线的连接方法有两种
  • windows下redis 和 hiredis的编译与使用

    转 http www cnblogs com raker p 4368741 html 果然 高端的程序员真心是鸟都不鸟windows的 redis的客户端找了一圈愣是没有C 的windows版本 我要做个windows上的C 的服务器都没
  • ubuntu安装SSH2

    apt get install libssh2 1 dev libssh2 php service apache2 restart 安装完成之后 可以使用SCP远程复制文件 connection ssh2 connect 192 168 1
  • 读取本地文件到读出p.node涉及的函数

    这里是读取本地文件的所调用的函数 func ParseNode rawurl string Node error if m incompleteNodeURL FindStringSubmatch rawurl m nil id err H
  • 【学习笔记】多模态综述

    多模态综述 前言 1 CLIP ViLT 2 ALBEF 3 VLMO 4 BLIP 5 CoCa 6 BeiTv3 总结 参考链接 前言 本篇学习笔记虽然是多模态综述 本质上是对ViLT后多模态模型的总结 时间线为2021年至2022年
  • Linux文件描述符和重定向

    文件描述符 0 stdin 标准输入 1 stdout 标准输出 2 stderr 标准错误 成功和不成功的命令 student myhost ls ls cannot access No such file or directory st