Linux学习之系统默认打开的文件描述符、重定向

news2024/12/24 20:51:56

系统默认打开的文件描述符

一个进程默认会打开标准输入、标准输出、错误输出三个文件描述符。可以在/proc/PID/fd里边可以看到打开文件的描述符,PID需要改成具体的pid,比如可以使用A终端输入vim proctest之后按下回车键。
在这里插入图片描述
打开一个vim编辑窗口。
在这里插入图片描述

再打开一个B终端,输入ps -aux | grep 'vim'查找一下vim的pid,发现是22730
在这里插入图片描述
还是在B终端上输入ls -l /proc/22730/fd,可以看到22730进程的文件描述符
在这里插入图片描述

0 – stdin (standard input) 标准输入
1 – stdout (standard output) 标准输出
2 – stderr (standard error) 标准错误输出

这三个文件描述符是系统默认打开的。

B终端上执行kill -9 22730,把vim proctest这个进程关闭,再次ls -l /proc/22730/fdls -l /proc/22730都是报ls: cannot access xxxx: No such file or directory,下边的截图,我把执行kill -9 22730也显示出来了。

在这里插入图片描述

重定向

重定向包括两种:

输入重定向:使用文件里边的内容代替键盘输入
输出重定向:使用文件代替终端输出

输入重定向

可以使用grep root /etc/passwd
在这里插入图片描述
也可以grep root < /etc/passwd/etc/passwd的文件内容重定向给grep命令,处理过之后再输出到标准输出上。
在这里插入图片描述

wc -l可以统计输入字符的行数。wc -l输入到命令行之后按下回车,就可以输入字符串,然后按下回车键,还可以接着输入字符串,然后按回车键,依次类推,而最后一行输入之后需要按下回车键,再按Ctrl+d,就能统计输出字符的行数。
在这里插入图片描述

最后统计出来的结果显示到最后。
在这里插入图片描述

使用输入重定向可以统计出来一个文件里边的行数,比如wc -l < /etc/passwd可以统计出来passwd里边的行数。在这里插入图片描述

cat -n /etc/passwd把行号显示出来,同时显示文件所有内容,可以验证上边的行数统计没有错误。
在这里插入图片描述

还可以使用输入重定向,把一个文件里边的内容赋值给一个变量。vim goodPerson.txtgood person写入到goodPerson.txt,要是不知道怎么操作的话,可以参考《Linux学习之vim在光标所在处写入内容,保存退出》,cat goodPerson.txt可以看一下里边的内容。

在这里插入图片描述

read expection < goodPerson.txt把文件里边的内容赋值给一个变量,echo ${expection}看一下变量expection里边的值。
在这里插入图片描述

输出重定向

输出重定向有以下几种格式:

>,覆盖输出重定向。
>>,追加输出重定向
2>,标准错误输出重定向,会覆盖原来的内容
2>>,标准错误输出重定向,在原来的内容后边追加
&>,标准输出和标准错误输出都重定向一个文件,会覆盖原来的内容
&>>,标准输出和标准错误输出都重定向一个文件,在原来的内容后边追加

cd /shelllearn/进入到/shelllearn里边。
在这里插入图片描述

echo本来是往标准输出写入内容的,可以使用输出重定向往文件里边写入内容。
在这里插入图片描述

覆盖输出重定向

echo "123" > good.txt可以将字符串写到good.txt文件里边,使用cat -A可以看到echo会默认添加换行符。
在这里插入图片描述

echo "456" > good.txt,把文件里边的123清空之后,把456写到good.txt文件里边。
在这里插入图片描述

> good.txt可以把文件里边的内容清空。
在这里插入图片描述

追加输出重定向

echo "good" >> good.txtecho "study" >> good.txt,可以看到是追加输出重定向,字符串都写到了good.txt里边。

在这里插入图片描述

标准错误输出重定向

依次执行的命令如下:

ls -l
ls -l 2> error.txt
cat error.txt
ls -l test
ls -l test 2> error.txt
cat error.txt

在这里插入图片描述
依次执行的命令如下:

nocmd
cat error.txt
nocmd 2> error.txt
cat error.txt

在这里插入图片描述

标准输出和标准错误输出重定向

执行下边命令:

ls -l
ls -l &> stdouterror.txt
cat stdouterror.txt
ls -l test &> stdouterror.txt
cat stdouterror.txt

在这里插入图片描述
上边截图里边的命令和输出结果结合起来可以说明&>确实可以把标准输出和标准错误输出都写入指定文件里边,而且是覆盖写入。

此文章为7月Day 11学习笔记,内容来源于极客时间《Linux 实战技能 100 讲》。

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

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

相关文章

产品经理考PMP?开什么玩笑

早上好&#xff0c;我是老原。 熟悉我的粉丝都知道&#xff0c;我平常喜欢逛知乎&#xff0c;这不就关注到了一个话题 ​ 关于这个问题&#xff0c;老原我的回答当然是&#xff0c;有用。 毕竟没有人会自信到&#xff0c;可以只做产品经理的产品设计、需求分析、画画原型等&a…

云计算行业岗位介绍

云计算、大数据、人工智能作为新一代信息技术产业&#xff0c;未来发展前景不可估量&#xff0c;就业“前途”一片光明。 随着阿里云、腾讯云、华为云为首的国内云厂商的快速发展&#xff0c;释放出来的岗位也越来越多&#xff0c;很多有着“大厂梦”的小伙伴可以通过考取大厂…

shell脚本--------shell变量、条件表达式、流程控制

第三阶段基础 时 间&#xff1a;2023年7月7日 参加人&#xff1a;全班人员 内 容&#xff1a; shell变量、条件表达式、流程控制 目录 一、shell变量 二、shell条件表达式与运算符 三、break和continue语句 演示&#xff1a;break语句 continue语句 四、实例拓展 …

error: undefined symbol: _ZN5boost6locale4util17get_system_localeB5cxx11Eb

一、背景 UOS_x86系统&#xff0c;使用cmake编译了一个c的动态库&#xff0c;然后java通过JNI调用该动态库。编译阶段没有任何报错&#xff0c;但是运行该动态库时报了如下图的错误&#xff1a; 二、分析 目测最后这一串ZN5boost6locale4util17get_system_localeB5cxx11Eb表示…

AtcoderABC309场

A - NineA - Nine 题目大意 判断两个数是否相邻且水平排列&#xff0c;即它们在同一行并且相邻。可以直接打印或者找规律 思路分析 可以直接打印或者找规律 时间复杂度 O&#xff08;1&#xff09; 代码 #include<bits/stdc.h> using namespace std; int main(){i…

学术英语UNIT1~UNIT4知识点总结

目录 UNIT 1 1.Deciding on topic --AMI 2.Writing a working title 3.Literacy Skills--Avoiding plagiarism 4.Literacy Skills--citation and referring skills 5.Literacy Skills--quoting 6.Literacy Skills--summarizing UNIT2 1.Academic Writing -searching…

FreeRTOS(任务的创建和删除)

1. 什么是任务&#xff1f; 任务可以理解为进程/线程&#xff0c;创建一个任务&#xff0c;就会在内存开辟一个空间。 比如&#xff1a; 玩游戏、陪女朋友&#xff0c;都可以视为任务 Windows 系统中的 MarkText 、谷歌浏览器、记事本&#xff0c;都是任务。 任务通常都含有…

考虑储能的电价收益模型研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

D. Pairs of Segments

Problem - D - Codeforces 思路&#xff1a;其实它求的就是不相交区间的最大数量&#xff0c;但是它的区间是两个区间合并得到&#xff0c;所以我们可以直接将所有能合并的区间直接合并&#xff0c;然后做一遍不相交区间的最大数量&#xff0c;这样存在一种问题就是一个区间会不…

【力扣算法04】之合并 K 个升序链表- python

文章目录 问题描述示例1示例2示例3提示思路分析 代码分析完整代码额外讲解 完结 问题描述 给你一个链表数组&#xff0c;每个链表都已经按升序排列。 请你将所有链表合并到一个升序链表中&#xff0c;返回合并后的链表。 示例1 输入&#xff1a;lists [[1,4,5],[1,3,4],[2,6]…

简要介绍 | 融合深度学习与符号逻辑:神经符号结合的探索

注1&#xff1a;本文系“简要介绍”系列之一&#xff0c;仅从概念上对神经符号结合进行非常简要的介绍&#xff0c;不适合用于深入和详细的了解。 融合深度学习与符号逻辑&#xff1a;神经符号结合的探索 Neuro-Symbolic AI 本文将探讨神经符号结合的概念、原理、研究现状、挑战…

推荐分布式系统案例课

你将获得 一线大厂分布式系统设计方法论&#xff1b; 分布式核心技术详解&#xff1b; 系统架构师面试技巧&#xff1b; 百万年薪架构师成长路径。 演示地址&#xff1a;www.runruncode.com/houduankaifa/19452.html 课程介绍 是否具备分布式系统的架构和设计能力&#xff0c;是…

typescript helloword

创建文件夹 创建ch01文件夹 新建tsconfig.json {"compilerOptions": {"strict": true,"target": "ES5"} }“tsconfig.json”是TypeScript编译器默认使⽤的配置⽂件。此例中的配置⽂件启⽤了所有的严格类型检查编译选项&#xff0c;…

经过半年的努力,终于成为了谷歌开发者专家(GDE)

大家好&#xff0c;我是拭心。 几天前&#xff0c;我终于收到了一封心心念念的邮件&#xff1a; 邮件的意思是&#xff1a;我正式成为了一名 GDE&#xff01; 这封邮件来之不易&#xff0c;背后是半年多的准备、三次公开分享和两轮英文面试&#xff0c;我想有必要做一个总结&…

VMware vSphere 7 Update 3n 下载

VMware vSphere 7 Update 3n 下载 vCenter Server & ESXi, DellEMC, HPE, Cisco, LENOVO, FUJITSU, NEC, Inspur, Hitachi Custom Image 请访问原文链接&#xff1a;https://sysin.org/blog/vmware-vsphere-7-u3/&#xff0c;查看最新版。原创作品&#xff0c;转载请保留…

存储函数和存储过程的简单应用

创建存储函数 使用select调用 创建存储过程avg_sai 去调用他

stm32 ->HAL库重定向printf,实现串口打印

步骤 在CubeMX中初始化uart引脚 MX_USART1_UART_Init();包含printf函数的头文件stdio.h 重定义printf函数 int fputc(int ch, FILE *f) {HAL_UART_Transmit(&huart1, (uint8_t *)&ch, 1, 0xffff); return ch; }勾选Use MicroLIB 编译烧录 实现代码 /* Private i…

redis实现相关分布式锁

为什么需要分布式锁 我们知道&#xff0c;当多个线程并发操作某个对象时&#xff0c;可以通过synchronized来保证同一时刻只能有一个线程获取到对象锁进而处理synchronized关键字修饰的代码块或方法。既然已经有了synchronized锁&#xff0c;为什么这里又要引入分布式锁呢&…

vue打包、网站运行速度优化

最近在做公司的官网&#xff0c;遇到的首要问题就是初次进入网站时&#xff0c;加载很慢&#xff0c;首页的视频和字体甚至需要30秒才能完全展示出来&#xff0c;用户体验可以说时很差了。接下来说几个优化的点。 一、减小图片的体积 如果项目中的图片过于多&#xff0c;并且体…

Set up the compilation environment for ESP8266-RTOS-SDK using Git on Windows

Software to be installed&#xff1a; Git BashPython Environment&#xff0c;ESP8266 Master require Python v3 environment. Please check “add to PATH” while installing Open Git Bash&#xff0c;Enter a local disk&#xff0c;create an empty folder, enter the …