首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

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

环境:centos7.6,腾讯云服务器 Linux文章都放在了专栏:【Linux】欢迎支持订阅 相关文章推荐: 【Linux】冯.诺依曼体系结构与操作系统 【C/进阶】如何对文件进行读写(含二进制...【Linux】基础IO_文件操作 前言 在前文中学习了open函数,我们知道open函数的返回值就是文件描述,本章将对文件描述进行详细讲解。 文件描述 文件描述是什么?...我们再来看如下现象: 为什么文件描述是从3开始的呢? Linux系统下进程会默认打开三个文件,即标准输入、标准输出、标准错误,分别对应文件描述0 1 2。...我们可以来通过简单的代码进行验证我们的猜测: 重定向的原理 重定向定义 了解文件描述的特点后,我们知道一个进程会默认打开三个文件,那么假如我们在打开新文件之前,将1号文件描述对应的文件(即标准输出...所以假如我们要将1号文件描述的指向的文件修改为fd对应的文件,应该这样来写:dup2(fd,1),这就是输出重定向,当然输入重定向就是:dup2(fd,0)。

27430

Linux】————(文件描述、重定向、文件缓冲区……)

所以,本质上,文件描述就是该数组的下标。所以,只要拿着文件描述,就可以找到对应的文件 。 Linux中一切皆文件,所以0,1,2可以代表键盘,显示器。...重定向 ​ 如果我们先把1关闭,发现结果什么也不打印。这是因为文件描述1是标准输出流,关闭后,就不会在显示器打印了。 ​...重定向的本质:是在内核中改变文件描述表特定下标的内容,与上层无关!...>是标准输出重定向,只更改1号fd里面的内容,所以重定向后,1号的打印到了log,txt,而2号还是没变,依旧打印在显示器上。 直接运行代码,会全部打印在显示器上。...我们可以重定向到不同文件,这样就可以将正确信息和错误信息分出来。这也是fd1,fd2的意义。上面是完整的重定向的写法。

7410
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    linux17-详说linux的重定向与文件描述

    前言 上一节中 [[16-linux程序后台执行指西]],我们提到了,重定向操作,对于后台执行命令来说,很有用,这一节来详细说说。...部分内容参考:Linux 基础入门(新版) - 实验楼[1] 1-linux的输入与输出 Linux 默认提供了三个特殊设备,用于终端的显示和输出,分别为stdin(标准输入,对应于你在终端的输入),stdout...该重定向无需对命令指定文件,但需要指定一个文本标记来划分输入数据的开始与结尾,使用内联输入重定向,shell 会使用次提示来提示输入数据。符号为<<。注意开始和结尾都使用了一致的文本标记test。...shell,或取消exec的重定向 $ ls $ exit $ cat somefile 4-自定义文件描述 在 Shell 中有 9 个文件描述。...在 Linux 中有一个被称为“黑洞”的设备文件,所有导入它的数据都将被“吞噬”—— /dev/null 。

    1.6K30

    Linux】基础IO(文件描述、缓冲区、重定向)

    今日更新了Linux基础IO的内容 欢迎大家关注点赞收藏⭐️留言 C文件IO相关操作 1 #include 2 3 int main() 4 { 5...所以,本质上,文件描述就是该数组的下标。所以,只要拿着文件描述,就可以找到对应的文件 。 Linux中一切皆文件,所以0,1,2可以代表键盘,显示器。...重定向 如果我们先把1关闭,发现结果什么也不打印。这是因为文件描述1是标准输出流,关闭后,就不会在显示器打印了。 运行上面代码,发现什么也没打印,但确实创建了新的文件log.txt。...重定向的本质:是在内核中改变文件描述表特定下标的内容,与上层无关!...我们可以重定向到不同文件,这样就可以将正确信息和错误信息分出来。这也是fd1,fd2的意义。上面是完整的重定向的写法。 如果我们想把1和2都重定向到同一个文件中,可以通过上面的写法实现。

    11110

    Linux】基础 IO(文件描述fd & 缓冲区 & 重定向

    ③ 参数mode 组合   此为Linux2.2以后特有的旗标,以避免一些系统安全问题。...所以本质上,文件描述就是该数组的下标,只要拿着文件描述,就可以找到对应的文件 Linux中一切皆文件,所以0,1,2可以代表键盘,显示器。...这个动作我们就叫作 重定向定向的本质:是在内核中改变文件描述表特定下标的内容,与上层无关 ‼️ 每个文件对象都有对应的内核文件缓冲区,我们写数据都是从上层通过文件描述1,写到对应的文件缓冲区...共享所有的锁定,读写位置和各项权限或 flags 等, 本质是文件描述下标对应内容的拷贝 如果我们要对标准输出进行重定向,把往显示器打印的内容变成往log,txt打印,根据上面的参数解释,参数的填法应该是...和 缓冲区的概念,大家可以多多理解,方便我们后面的学习 文件描述词是Linux编程中的一个术语。

    26110

    Linux】文件操作文件描述定向缓冲区

    1、什么是文件描述 2、文件描述的分配规则 四、重定向 1、什么是重定向 2、dup2 系统调用 3、三种重定向的实现 五、Linux 下一切皆文件 六、缓冲区 1、为什么要有缓冲区 2、缓冲区的刷新策略...2、文件描述的分配规则 现在我们知道了文件描述是什么,那么文件描述是如何进行分配的呢?...像这样,本来应该往一个文件中写入数据,但是却写入到另一个文件中去了,这种特性就叫做重定向;而重定向的本质是上层使用的 fd 不变,在内核中更改 fd 指向的 file 对象,即更改文件描述表数组中 fd...3、三种重定向的实现 Linux 中主要有三种主要的重定向 – 输入重定向、输出重定向和追加重定向;在 Linux 命令行中它们分别使用 、>> 表示,如下: 输出重定向 输入重定向我们上面已经实现了...)写入到stdout中 } close(fd); return 0; } ---- 五、Linux 下一切皆文件 在刚开始学习 Linux 的时候,我们就说 Linux 下一切皆文件

    4K00

    Linux定向

    小结: 在 Linux 中,重定向是一种将命令的输出或输入重定向到文件或其他命令的机制。它可以用于管理标准输入、标准输出、标准错误等。重定向通常与命令行中的 >、>、2> 等符号一起使用。...下面是关于 Linux定向的详细说明。 1. 标准输入、标准输出和标准错误 在 Linux 中,每个进程都有三个默认的 I/O 流: 标准输入(stdin):从终端接收输入,文件描述是 0。...多个文件描述的重定向 你还可以使用文件描述编号来进行更细粒度的重定向控制。...然后,使用 >&3 将 echo 的输出通过文件描述 3 重定向到该文件。 关闭文件描述: bash exec 3>&- 解释:关闭文件描述 3。 11....在自动化脚本和系统管理中,重定向是极为强大的工具。 Linux定向的全面示例 下面是一个比较全面的 Linux 输入输出重定向示例。

    11710

    Linux定向

    表示把右边内容先清空,然后再把左边内容写入到右边>>:有俩符号时,表示右边内容先不进行任何操作,然后把左边内容追加到右边最后一行注:常用清空文件内容操作:> 文件名称或cat /dev/null > 文件名称重定向...1、 标准(追加)输出重定向,用数字1表示 ,符号为>或1>,数据流向朝右,接收命令正常执行输出eg:[root@money ~]# ls /opt > 2.txt ##把ls正确输出的内容通过重定向写入...2.txt [root@money ~]# cat 2.txt rar rarlinux-x64-612.tar.gz2、 标准错误(追加)输出重定向,用数字2表示,符号为2>,接收命令的执行报错...> 2.txt ##把las命令执行错误的内容输出到2.txt中 [root@money ~]# cat 2.txt -bash: las: 未找到命令3、 标准输入(追加)重定向...[root@money ~]# cat 1.txt 123456789 [root@money ~]# tr '1-9' 'A-I' < 1.txt ##利用标准输入重定向

    2.6K30

    Linux基础IO】深入Linux文件描述与重定向:解锁高效IO操作的秘密

    前言:在Linux操作系统的广阔世界中,文件描述(File Descriptor,简称fd)和重定向是理解并高效利用Linux IO(输入/输出)机制的关键基石。...通过重定向,用户可以将命令的输出直接发送到文件、另一个命令的输入,或者忽略某些输出,从而灵活地控制数据的流向,实现复杂的自动化任务 我将带领大家深入探索Linux文件描述和重定向的奥秘。...总结 随着我们对Linux文件描述(fd)和重定向的深入探讨,我们不仅揭开了这些概念背后复杂而精妙的机制,还见证了它们在实际应用中的广泛与强大。...Linux的IO系统,通过文件描述这一简洁而高效的抽象,使得进程能够灵活地与各种资源交互,都能通过统一的接口进行访问和管理 而重定向,则是Linux shell赋予我们的一柄利剑,它打破了传统IO...通过重定向,我们不仅可以实现复杂的自动化任务,还能在脚本编写和日常操作中极大地提升效率 然而,学习之路永无止境。Linux的IO系统博大精深,文件描述和重定向只是其中的冰山一角。

    16410

    Linux进阶命令-重定向

    我们接下来将讲解一些进阶命令,主要从以下几个方面来讲解:一些系统操作,系统查看处理,Linux文本处理,逻辑判断,重定向,网络传输,服务启动,文件句柄等内容。...通过这些操作,让你对Linux的操作更加得心应手,具体分成以下章节进行讲解: Linux进阶命令-echo&date&alias Linux进阶命令-top Linux进阶命令-ps&kill Linux...进阶命令-sort&wc Linux进阶命令-sed&split Linux进阶命令-awk&uniq Linux进阶命令-逻辑或&逻辑与 Linux进阶命令-重定向(本章节) Linux进阶命令-scp...Linux进阶命令-rsync Linux进阶命令-rsync-daemon Linux进阶命令-nohup&screen Linux进阶命令-lsof Linux进阶命令-小结 我们在前面讲vi命令和...在 Linux 命令行中,重定向用于控制命令输入和输出的流向。通过重定向,你可以将命令的输出发送到文件或将文件内容作为命令的输入。重定向的基本类型包括输出重定向、输入重定向和错误重定向

    8510

    Linux中Shell重定向

    在shell脚本中,默认情况下,总是有三个文件处于打开状态,标准输入(键盘输入)、标准输出(输出到屏幕)、标准错误(也是输出到屏幕),它们分别对应的文件描述是 0,1,2 。...& 是一个描述,如果1或2前不加&,会被当成一个普通文件。...> 默认为标准输出重定向,与 1> 相同 1>&2 意思是把标准输出重定向到标准错误. 2>&1 意思是把标准错误输出重定向到标准输出。...access 1.txt: No such file or directory rumenz.txt > out.log将标准输出重定向到文件,但是2>&1将错误输出重定向到标准输出,所以out.log...通常用于丢弃不需要的数据输出, 或者用于输入流的空文件 > rm -f $(find / -name rumenz) &> /dev/null 原文链接:https://rumenz.com/rumenbiji/linux-shell-redirect.html

    1.8K20

    Linux中Shell重定向

    在shell脚本中,默认情况下,总是有三个文件处于打开状态,标准输入(键盘输入)、标准输出(输出到屏幕)、标准错误(也是输出到屏幕),它们分别对应的文件描述是 0,1,2 。...& 是一个描述,如果1或2前不加&,会被当成一个普通文件。...> 默认为标准输出重定向,与 1> 相同 1>&2 意思是把标准输出重定向到标准错误. 2>&1 意思是把标准错误输出重定向到标准输出。...access 1.txt: No such file or directory rumenz.txt > out.log将标准输出重定向到文件,但是2>&1将错误输出重定向到标准输出,所以out.log...通常用于丢弃不需要的数据输出, 或者用于输入流的空文件 > rm -f $(find / -name rumenz) &> /dev/null 原文链接:https://rumenz.com/rumenbiji/linux-shell-redirect.html

    2.3K00

    linux 管道符重定向

    输入重定向来讲,用到的符号及其作用如表3-1所示。...表3-1                                         输入重定向中用到的符号及其作用符号作用命令 文件2将文件1作为命令的标准输入并将标准输出到文件2对于输出重定向来讲,用到的符号及其作用如表3-2所示。...表3-2                                         输出重定向中用到的符号及其作用符号作用命令 > 文件将标准输出重定向到一个文件中(清空原有文件的数据)命令 2>...文件将错误输出重定向到一个文件中(清空原有文件的数据)命令 >> 文件将标准输出重定向到一个文件中(追加到原有内容的后面)命令 2>> 文件将错误输出重定向到一个文件中(追加到原有内容的后面)命令 >

    3.3K10

    Linux中Shell重定向

    在shell脚本中,默认情况下,总是有三个文件处于打开状态,标准输入(键盘输入)、标准输出(输出到屏幕)、标准错误(也是输出到屏幕),它们分别对应的文件描述是 0,1,2 。...& 是一个描述,如果1或2前不加&,会被当成一个普通文件。...> 默认为标准输出重定向,与 1> 相同 1>&2 意思是把标准输出重定向到标准错误. 2>&1 意思是把标准错误输出重定向到标准输出。...access 1.txt: No such file or directory rumenz.txt > out.log将标准输出重定向到文件,但是2>&1将错误输出重定向到标准输出,所以out.log...通常用于丢弃不需要的数据输出, 或者用于输入流的空文件 > rm -f $(find / -name rumenz) &> /dev/null 原文链接:https://rumenz.com/rumenbiji/linux-shell-redirect.html

    1.6K10

    Linux中的重定向

    标准输入输出 三种I/O设备 处理数据需要输入输出,在linux中一切皆文件,所操作的输入输出都认为是一个文件,而此文件表现为每打开一个文件系统会分配一个数字,这个数字代表一个文件,这个数字叫文件描述...FileDescriptor Linux中给程序提供的三种I/O设备 标准输入STDIN 0 默认接受来自终端窗口的输入 标准输出STDOUT 1 默认输出到终端窗口...默认标准输入的信息输出是到本地窗口,如何将输入信息重定向至其他文件?...如果将输入信息输出至其他文件可以通过重定向方法来实现。...标准输出和错误重定向 标准输出和标准错误可以被重定向到指定文件,而非默认的当前终端 格式: 命令 操作符号 文件名 支持的操作: 1>或> | 把STDOUT重定向到文件 [root@centos7

    2.6K00

    Linux】开始了解重定向

    – 史铁生 《我与地坛》 开始了解重定向 1 前言 2 重定向与缓冲区 2.1 文件描述分配规则 2.2 重定向的现象 2.3 重定向的理解 2.4 缓冲区的理解 3 进程与重定向 Thanks♪...1 前言 上一篇文章我们复习了C文件IO相关操作,了解了linux下的文件系统调用(open write read ),认识了文件描述fd值,今天我们来学习重定向和缓冲区,这个缓冲区之前遇到过很多次,...2 重定向与缓冲区 2.1 文件描述分配规则 接下来我们来了解重定向!...(0) --> 新创建的文件的文件描述就成了 0 这样我们大致可以总结出来一个结论: 文件描述的分配规则:进程会查自己的文件描述表,分配最小的并且没有被使用过的 fd 2.2 重定向的现象 刚才我们看到了文件描述的分配规则...这种技术就叫做 重定向,也就是把本应该打印到显示器的内容打印到了一个其他文件中。 其本质就是在内核中改变文件描述表特定下标的内容,和上层无关! 可是如果不加入fflush 呢???

    9810

    详解Linux定向用法

    学会使用重定向,不仅可以让你与计算机更好地交互,还可以提高你的工作效率,因此,请让良许为你讲解 Linux 系统中重定向的常见用法: Linux 中的数据流 谈到 Linux 的重定向,就不得不提以下这...你可以在 /dev 目录下看到它们: $ ls /dev/std* /dev/stderr /dev/stdin /dev/stdout 重定向输出 在 Linux 系统中,使用 > 字符表示重定向输出...Here-doc 将输入的文本块重定向至标准输入流,直至遇到特殊的文件结束标记为止(文件结束标记可以是任意的唯一的字符串,但大部分人都默认使用 EOF)。...例如,将错误信息重定向到名为 output.log 的文件中: $ ls /nope 2> output.log 重定向数据至 /dev/null 就像标准输入、标准输出以及标准错误一样,在 Linux...到此这篇关于详解Linux定向用法的文章就介绍到这了,更多相关Linux定向用法内容请搜索ZaLou.Cn以前的文章或继续浏览下面的相关文章希望大家以后多多支持ZaLou.Cn!

    2.2K42

    linux输出重定向操作>&

    linux输出重定向操作>& 作者:matrix 被围观: 3,396 次 发布时间:2019-10-19 分类:command Linux | 一条评论 » 这是一个创建于 1048 天前的主题...类型 文件描述 默认情况 对应文件句柄位置 标准输入(standard input) 0 从键盘获得输入 /proc/self/fd/0 标准输出(standard output) 1 输出到屏幕(即控制台...2>&1使用&符号将2重定向绑定到1,意思是将错误信息指向控制台,而这个时候的控制台又指向了空设备。 如果去掉&符号的2>1会导致错误信息输出到文件名为1里面。...linux执行命令时会按顺序从左到右读取来确定0,1,2这三个输入输出的位置。 command 2>&1 >/dev/null 把两个重定向的位置写反之后就是完全不同的意思。...等同于command 2>&1 1>/dev/null linux执行命令到2>&1会将错误输出指向1即控制台,到这里就会完成错误输出(2)的位置确定。也就不会更改了。

    2.2K20
    领券