返回顶部
首页 > 资讯 > 操作系统 >Linux I/O重定向知识点详细介绍
  • 122
分享到

Linux I/O重定向知识点详细介绍

2023-06-16 14:06:52 122人浏览 独家记忆
摘要

本篇内容主要讲解“linux I/O重定向知识点详细介绍”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Linux I/O重定向知识点详细介绍”吧!Linux 中默认情况下始终有 3 个“文件”处

本篇内容主要讲解“linux I/O重定向知识点详细介绍”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Linux I/O重定向知识点详细介绍”吧!

Linux 中默认情况下始终有 3 个“文件”处于打开状态,stdin(键盘)、 stdout(屏幕)和 stderr(错误消息输出到屏幕上)。这 3  个文件和其他打开的文件都可以被重定向。重定向,简单的说就是捕捉一个文件、命令、程序、脚本,或者是脚本中的代码块的输出,然后将这些输出作为输入发送到另一个文件、命令、程序或脚本中。

每个打开的文件都会被分配一个文件描述符。stdin、stdout 和 stderr 的文件描述符分别是 0、1 和 2。除了这 3  个文件,对于其它那些需要打开的文件,保留了文件描述符 3 到 9。在某些情况下,将这些额外的文件描述符分配给 stdin、stdout 或 stderr  作为临时的副本链接是非常有用的。在经过复杂的重定向和刷新之后需要把它们恢复成正常状态。

重定向

> file

将 stdout 重定向到一个文件。如果这个文件不存在,那就创建,否则就覆盖。

创建一个包含目录树列表的文件:

ls -lR >dir-tree.list

清空文件:

: > file

这是一个 > 操作,将会把文件 file 变为一个空文件(就是 size 为 0)。如果文件不存在,那么就创建一个 0 长度的文件(与touch  的效果相同)。: 是一个占位符,不产生任何输出。

也可以省略 : 占位符:

> file

与上边的 : > 效果相同, 但是某些 shell (比如 bash)可能不支持这种形式。

>> file

将 stdout 重定向到一个文件。如果文件不存在,那么就创建它,如果存在,那么就追加到文件后边。

script.sh 1 > filename  # 重定向 stdout 到文件"filename".  script.sh 1 >> filename  # 重定向并追加 stdout 到文件"filename".  script.sh 2 > filename  # 重定向 stderr 到文件"filename".  script.sh 2 >> filename  # 重定向并追加 stderr 到文件"filename".

&> file

将 stdout 和 stderr 都重定向到文件:

script.sh &> /dev/null

m> file

m 是一个文件描述符,如果没有明确指定的话默认为 1。

file 是一个文件名。文件描述符 m 被重定向到文件 file。

script.sh 2> error.log

m>&n

m 是一个文件描述符,如果没有明确指定的话默认为 1。

n 是另一个文件描述符。

script.sh 2>&1

重定向 stderr 到 stdout。将错误消息的输出,发送到与标准输出所指向的地方。

exec 6<>Filescript.sh >&6

默认的,重定向文件描述符 1(stdout)到 6。所有传递到 stdout 的输出都送到 6 中去。

< file

从文件中接受输入。与 > 是成对命令,并且通常都是结合使用。0 < file 或 < file,前面的标准输入 stdin 0  可以省略。

grep search-Word < filename

j<>file

为了读写 file,把文件 file 打开,并且将文件描述符 j 分配给它。

如果文件 file 不存在,那么就创建它。如果文件描述符 j 没指定,那默认是标准输入 stdin 0 。

echo 1234567890 > File ### 写字符串到 File .  exec 3<>File ### 打开 File 并且将 fd 3 分配给它.  read -n 4 <&3 ### 只读取4个字符.  echo -n . >&3 ### 写一个小数点.  exec 3>&- ### 关闭fd 3.  cat File ### ==> 1234.67890

(注:上述命令的输出结果和原文不同,原因未知。)

管道

管道与 > 很相似,但是实际上更通用。对于想将命令、脚本、文件和程序串连起来的时候很有用。

cat *.txt | sort | uniq > result-file

上述命令对所有 .txt 文件的输出进行排序,并且删除重复行。***将结果保存到 result-file 中。

可以将输入输出重定向和/或管道的多个实例结合到一起写在同一行上:

command < input-file > output-file

等价于:

< input-file command > output-file

但是这种写法不标准,有的 shell 可能不支持。

可以将多个输出流重定向到一个文件上:

ls -yz >> command.log 2>&1

将错误选项 yz 的结果放到文件 command.log 中。因为 stderr 被重定向到这个文件中,所以所有的错误消息也就都指向那里了。

注意,下边这个例子就不会给出相同的结果:

ls -yz 2>&1 >> command.log

输出一个错误消息,但是并不写到文件中。命令的输出(如果有的话)写入到文件 command.log。

如果同时将 stdout 和 stderr 都重定向,命令的顺序不同会带来不同的结果。

关闭文件描述符

  • n<&- 关闭输入文件描述符 n。

  • 0<&- 或 <&- 关闭 stdin。

  • n>&- 关闭输出文件描述符 n。

  • 1>&- 或 >&- 关闭 stdout。

子进程继承了打开的文件描述符。这就是为什么管道可以工作的原因。如果想阻止文件描述符被继承,那么可以关掉它。

只将 stderr 重定到一个管道。

exec 3>&1 ### 保存当前 stdout 的"值"(将 fd3 指向 fd0 相同目标)  ls -l 2>&1 >&3 3>&- | grep bad 3>&-### 对'grep'关闭 fd 3  ### ^^^^ ^^^^ ###(但不关闭'ls',正常输出内容不受grep影响)  ls -l 2>&1 >&3 | grep bad ### 这样输出内容被转到了 fd3,也不会受 grep 影响  ls badabc -l 2>&1 >&3 |grep bad ### stderr 通过 fd1 输出,会受 grep 影响  exec 3>&- ### 对于剩余的脚本来说,关闭它

使用文件描述符 5 可能会引起问题。当 Bash 使用 exec 创建一个子进程的时候,子进程会继承文件描述符 5 (参考 Chet Ramey 的归档  e-mail: RE: File descriptor 5 is held open)。 ***还是不要去招惹这个特定的文件描述符 5 。

到此,相信大家对“Linux I/O重定向知识点详细介绍”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

--结束END--

本文标题: Linux I/O重定向知识点详细介绍

本文链接: https://lsjlt.com/news/284023.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Linux I/O重定向知识点详细介绍
    本篇内容主要讲解“Linux I/O重定向知识点详细介绍”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Linux I/O重定向知识点详细介绍”吧!Linux 中默认情况下始终有 3 个“文件”处...
    99+
    2023-06-16
  • RPM包知识点详细介绍
    这篇文章主要介绍“RPM包知识点详细介绍”,在日常操作中,相信很多人在RPM包知识点详细介绍问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”RPM包知识点详细介绍”的疑惑有所帮助!接下来,请跟着小编一起来学习吧...
    99+
    2023-06-16
  • PythonSocket编程知识点详细介绍
    目录一、导入Socket模块二、Socket基本用法1.建立一个简单的Socket连接2.协议对应端口3.Socket函数4.套接字函数5.一个简单的客户端与服务端交互三、总结前言:...
    99+
    2024-04-02
  • Linux I/O的重定向基础讲解
    这篇文章主要介绍“Linux I/O的重定向基础讲解”,在日常操作中,相信很多人在Linux I/O的重定向基础讲解问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Linux I/O的重定向基础讲解”的疑惑有所...
    99+
    2023-06-16
  • 关于MySql知识的详细介绍
    下文主要给大家带来关于MySql知识的详细介绍,希望这些内容能够带给大家实际用处,这也是我编辑关于MySql知识的详细介绍这篇文章的主要目的。好了,废话不多说,大家直接看下文吧。    ...
    99+
    2024-04-02
  • Linux组基本介绍知识点总结
    一、linux组基本介绍 在Linux中每个用户必须属于一个组,不能独立于组外。在Linux中每个文件有所有者,所在组,其他组的概念 1)所有者 2)所在组 3)其他组 4)改变用户的所在组 二、文件/目录 所有者 一...
    99+
    2022-06-04
    Linux
  • Linux中重定向和管道介绍
    导读Linux中重定向和管道介绍重定向...
    99+
    2023-06-05
  • 详细介绍MySQL数据库索引知识
    下面讲讲关于MySQL数据库索引知识,文字的奥妙在于贴近主题相关。所以,闲话就不谈了,我们直接看下文吧,相信看完MySQL数据库索引知识这篇文章你一定会有所受益。MySQL数据库------索引一、索引的介...
    99+
    2024-04-02
  • 关于java中I/O流的字节流与字符流的详细介绍
    一、绪论如果要进行文件内容的操作那么必须依靠数据流完成,而数据流分为两种:字节流:InputStream(字节输入流)、OutputStream(字节输出流);字符流:Reader(字符输入流)、Writer(字符输出流);二、区别字节流是...
    99+
    2017-12-15
    java教程 java I/O 字节流 字符流
  • Java字符串编码知识点详解介绍
    在 Java 中,当我们处理String时,有时需要将字符串编码为特定字符集。编码是一种将数据从一种格式转换为另一种格式的方法。字符串对象使用 UTF-16 编码。UTF-16 的问...
    99+
    2022-11-13
    Java 字符串编码
  • linux shell数据重定向(输入重定向与输出重定向)详细分析
    在了解重定向之前,我们先来看看linux 的文件描述符。 linux文件描述符:可以理解为linux跟踪打开文件,而分配的一个数字,这个数字有点类似c语言操作文件时候的句柄,通过句柄就可以实现文件的读写操作...
    99+
    2022-06-04
    重定向 数据 详细
  • 什么是Shell?Shell脚本基础知识详细介绍
    Shell本身是一个用C语言编写的程序,它是用户使用Linux的桥梁。Shell既是一种命令语言,又是一种程序设计语言。作为命令语言,它交互式地解释和执行用户输入的命令;作为程序设计语言,它定义了各种变量和...
    99+
    2022-06-04
    详细介绍 基础知识 脚本
  • 详细介绍uniapp中网络请求的相关知识
    随着移动互联网的快速发展,移动端应用需求不断增加,网络请求成为了应用开发的必要部分。而uniapp框架则极大地方便了开发者,封装了常见的网络请求API,极大的降低了开发复杂度。本文将详细介绍uniapp中网络请求的相关知识。uni.requ...
    99+
    2023-05-14
  • C++类与对象的重点知识点详细分析
    目录一、类的六个默认成员函数详解1、拷贝构造1.1 拷贝构造的引入及概念1.2 拷贝构造函数的特征2、赋值运算符重载2.1 运算符重载2.2 赋值运算符重载3、普通对象取地址4、co...
    99+
    2023-02-13
    C++类与对象知识点 C++类与对象关系
  • 详细的MySQL列类型中的字符串型知识介绍
    下文主要给大家带来MySQL列类型中的字符串型知识,希望这些内容能够带给大家实际用处,这也是我编辑MySQL列类型中的字符串型知识这篇文章的主要目的。好了,废话不多说,大家直接看下文吧。  &nb...
    99+
    2024-04-02
  • Linux输入输出重定向详细使用说明
    1、linux标准输入输出 Linux标准输入、输出设备主要是键盘和显示器,详细介绍如下表所示。 Linux标准输入输出 设备 设备文件名 ...
    99+
    2022-06-04
    Linux输入输出重定向 Linux输入重定向 Linux输出重定向
  • Spring中的重定向功能简介:你需要了解的Python知识?
    Spring是一个流行的Java框架,它提供了许多有用的功能,包括重定向。重定向是指将请求从一个URL地址重定向到另一个URL地址。在Spring中,可以使用重定向来实现各种功能,如在用户登录后将其重定向到主页。 在本文中,我们将介绍Sp...
    99+
    2023-10-07
    重定向 学习笔记 spring
  • 详细介绍Uniapp中的请求和处理结果的相关知识
    随着移动互联网的发展,移动应用程序的市场需求越来越大,针对该需求,诸如React Native和Flutter等各种跨平台框架应运而生。其中Uniapp是一款可用于开发跨平台应用程序的框架,它能够快速地构建多种平台,如Android、iOS...
    99+
    2023-05-14
  • “Java IDE 重定向和打包:您需要了解的关键知识点是什么?”
    Java IDE 重定向和打包:您需要了解的关键知识点是什么? 作为一名Java开发人员,您可能会遇到需要对Java应用程序进行重定向和打包的情况。这些操作对于开发过程和最终应用程序的部署都是非常重要的。在本文中,我们将深入探讨Java I...
    99+
    2023-08-19
    ide 重定向 打包
  • Golang GinWeb框架之重定向/自定义中间件/认证/HTTPS支持/优雅重启等知识点总结
    这篇文章主要讲解了“Golang GinWeb框架之重定向/自定义中间件/认证/HTTPS支持/优雅重启等知识点总结”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作