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

这篇具有很好参考价值的文章主要介绍了Linux学习之系统默认打开的文件描述符、重定向。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

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

再打开一个B终端,输入ps -aux | grep 'vim'查找一下vim的pid,发现是22730
Linux学习之系统默认打开的文件描述符、重定向,Linux基础学习,linux,学习,excel
还是在B终端上输入ls -l /proc/22730/fd,可以看到22730进程的文件描述符
Linux学习之系统默认打开的文件描述符、重定向,Linux基础学习,linux,学习,excel

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也显示出来了。

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

重定向

重定向包括两种:

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

输入重定向

可以使用grep root /etc/passwd
Linux学习之系统默认打开的文件描述符、重定向,Linux基础学习,linux,学习,excel
也可以grep root < /etc/passwd/etc/passwd的文件内容重定向给grep命令,处理过之后再输出到标准输出上。
Linux学习之系统默认打开的文件描述符、重定向,Linux基础学习,linux,学习,excel

wc -l可以统计输入字符的行数。wc -l输入到命令行之后按下回车,就可以输入字符串,然后按下回车键,还可以接着输入字符串,然后按回车键,依次类推,而最后一行输入之后需要按下回车键,再按Ctrl+d,就能统计输出字符的行数。
Linux学习之系统默认打开的文件描述符、重定向,Linux基础学习,linux,学习,excel

最后统计出来的结果显示到最后。
Linux学习之系统默认打开的文件描述符、重定向,Linux基础学习,linux,学习,excel

使用输入重定向可以统计出来一个文件里边的行数,比如wc -l < /etc/passwd可以统计出来passwd里边的行数。Linux学习之系统默认打开的文件描述符、重定向,Linux基础学习,linux,学习,excel

cat -n /etc/passwd把行号显示出来,同时显示文件所有内容,可以验证上边的行数统计没有错误。
Linux学习之系统默认打开的文件描述符、重定向,Linux基础学习,linux,学习,excel

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

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

read expection < goodPerson.txt把文件里边的内容赋值给一个变量,echo ${expection}看一下变量expection里边的值。
Linux学习之系统默认打开的文件描述符、重定向,Linux基础学习,linux,学习,excel

输出重定向

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

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

cd /shelllearn/进入到/shelllearn里边。
Linux学习之系统默认打开的文件描述符、重定向,Linux基础学习,linux,学习,excel

echo本来是往标准输出写入内容的,可以使用输出重定向往文件里边写入内容。
Linux学习之系统默认打开的文件描述符、重定向,Linux基础学习,linux,学习,excel

覆盖输出重定向

echo "123" > good.txt可以将字符串写到good.txt文件里边,使用cat -A可以看到echo会默认添加换行符。
Linux学习之系统默认打开的文件描述符、重定向,Linux基础学习,linux,学习,excel

echo "456" > good.txt,把文件里边的123清空之后,把456写到good.txt文件里边。
Linux学习之系统默认打开的文件描述符、重定向,Linux基础学习,linux,学习,excel

> good.txt可以把文件里边的内容清空。
Linux学习之系统默认打开的文件描述符、重定向,Linux基础学习,linux,学习,excel

追加输出重定向

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

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

标准错误输出重定向

依次执行的命令如下:

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

Linux学习之系统默认打开的文件描述符、重定向,Linux基础学习,linux,学习,excel
依次执行的命令如下:

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

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

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

执行下边命令:

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

Linux学习之系统默认打开的文件描述符、重定向,Linux基础学习,linux,学习,excel
上边截图里边的命令和输出结果结合起来可以说明&>确实可以把标准输出和标准错误输出都写入指定文件里边,而且是覆盖写入。

标准输出重定向和标准输入重定向结合

cat << 分界符 >> 需要写入的文件,这种方法一般应用于配置文件的修改。比如cat << EOF >> teststd.txt,然后就可以输出你想要输入的内容,每输入一行,按一下回车键,最后一行输入EOF,然后按下回车键就可以退出并把内容(内容中不包括EOF)保存到teststd.txt里边。
Linux学习之系统默认打开的文件描述符、重定向,Linux基础学习,linux,学习,excel

此文章为7月Day 11学习笔记,内容来源于极客时间《Linux 实战技能 100 讲》。文章来源地址https://www.toymoban.com/news/detail-549986.html

到了这里,关于Linux学习之系统默认打开的文件描述符、重定向的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Linux】基础IO_文件描述符与重定向

    环境:centos7.6,腾讯云服务器 Linux文章都放在了专栏:【 Linux 】欢迎支持订阅 相关文章推荐: 【Linux】冯.诺依曼体系结构与操作系统 【C/进阶】如何对文件进行读写(含二进制)操作? 【Linux】基础IO_文件操作 在前文中学习了open函数,我们知道 open函数的返回值就是文件描

    2024年02月03日
    浏览(72)
  • 【探索Linux】文件描述符 | 重定向 | 基础IO —— 强大的命令行工具 P.12

    前面我们讲了C语言的基础知识,也了解了一些数据结构,并且讲了有关C++的一些知识,也学习了一些Linux的基本操作,也了解并学习了有关Linux开发工具vim 、gcc/g++ 使用、yum工具以及git 命令行提交代码也相信大家都掌握的不错,上一篇文章我们了解了基础IO,文件操作,今天

    2024年02月08日
    浏览(50)
  • 【探索Linux】—— 强大的命令行工具 P.12(文件描述符 | 重定向 | 基础IO)

    前面我们讲了C语言的基础知识,也了解了一些数据结构,并且讲了有关C++的一些知识,也学习了一些Linux的基本操作,也了解并学习了有关Linux开发工具vim 、gcc/g++ 使用、yum工具以及git 命令行提交代码也相信大家都掌握的不错,上一篇文章我们了解了基础IO,文件操作,今天

    2024年02月08日
    浏览(50)
  • 【Linux取经路】文件系统之被打开的文件——文件描述符的引入

    文件等于内容加属性,内容和和属性都是数据,不管是内容还是属性都要在磁盘中保存。 文件分为打开的文件和没打开的文件。 打开的文件本质是进程打开的,要研究打开的文件,本质是研究进程和文件的关系。 对文件的所有操作(打开文件、读取文件、向文件写入)等,

    2024年02月20日
    浏览(38)
  • 【Linux】文件的描述符和重定向

    C语言的文件读写操作 文件写入 fputs int fputs(const char *s, FILE *stream); s:要写入的字符串 stream:要写入对应的目标文件 文件输出(只可以在文件读的环境下运行 r) fgets char *fgets(char *s, int size, FILE *stream); s:要保存到的目标位置 size:输出多少字节 stream:输出的目标文件 文件写

    2024年02月12日
    浏览(45)
  • 【Linux】文件描述符与重定向操作

    收录于【Linux】文件系统 专栏 对于Linux下文件的写入与读取,以及文件原理还有疑惑的可以看看上一篇文章浅谈文件原理与操作。 目录 系列文章 再谈文件描述符 IO函数的本质 一切皆文件 文件重定向 原理 系统接口 🍧上一篇文章中,我们就提到了 open 的返回值即 fd ,又称

    2024年02月09日
    浏览(39)
  • Linux中的文件描述符和重定向

    文件描述符概念 我们在使用系统调用进行文件操作的时候 这里的open返回值就是一个文件描述符简称fd。 文件描述符其实就是一个从3开始的小整数,文件描述符是小整数的原因是因为文件描述符实际是文件描述符表这个数组的下标。 为什么从3开始,是因为系统默认打开了三

    2023年04月10日
    浏览(33)
  • 『Linux』文件描述符及重定向——为何说Linux下,一切皆文件?

    🌸作者简介: 花想云 ,在读本科生一枚,C/C++领域新星创作者,新星计划导师,阿里云专家博主,CSDN内容合伙人…致力于 C/C++、Linux 学习。 🌸 专栏简介:本文收录于 Linux从入门到精通 ,本专栏主要内容为本专栏主要内容为Linux的系统性学习,专为小白打造的文章专栏。

    2024年02月12日
    浏览(58)
  • 系统文件IO、文件描述符fd、重定向、文件系统、动态库和静态库

    C文件接口 C文件接口都是封装了系统的文件接口,学习系统的文件接口有利于更熟悉文件的操作。 open函数 头文件 #include sys/types.h #include sys/stat.h #include fcntl.h 函数描述 int open(const char *pathname, int flags); int open(const char *pathname, int flags, mode_t mode); 参数 pathname: 要打开或创建的目

    2024年02月07日
    浏览(41)
  • 【Linux】基础IO——系统文件IO&&fd&&重定向

    大家好我是沐曦希💕 空文件,也要在磁盘占据空间,因为文件也有属性,属性也属于数据,需要空间进行存储。所以 文件包括内容和属性 所以 对文件操作就是对内容或者对属性进行操作,或者对内容和属性进行操作。 文件具有唯一性,所以在 标定一个文件时候,必须使用

    2024年02月02日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包