shell中与>和<相关的数据流重定向操作符整理

news2025/6/1 21:14:39

shell中与>和<相关的数据流重定向操作符整理

  • 输出重定向操作符
    • >
    • >>
    • 2>
    • 2>>
    • &> 或 >&
    • &>>
  • 输入重定向操作符
    • <
    • <<
    • <<<
  • 组合重定向
    • 2>&1
  • 文件描述符相关重定向
    • [n]< file 和 [n]> file
    • >&- 和 <&-
  • 重定向到设备文件相关
    • > /dev/null 和 2> /dev/null
  • 在网络通信相关场景(结合输入输出重定向思想)
  • 进程间通信相关的输入输出操作思路
  • 特殊文件系统操作中的重定向

在Shell中,< 和 > 相关的操作符主要用于输入输出重定向

输出重定向操作符

>

  • 作用:将命令的标准输出覆盖写入到指定文件中,如果文件不存在,则创建该文件;如果文件已存在,则会清空文件内容后再写入(错误信息不会输入进去)
echo "Hello, World!" > test.txt

>>

  • 作用:将命令的标准输出追加到指定文件的末尾,如果文件不存在,则创建该文件(错误信息不会输入进去)
echo "Appended text" >> test.txt

2>

  • 作用:将命令的标准错误输出重定向到指定文件(正确信息不会输入进去)
ls non_existent_file 2> error.log

ls non_existent_file 会产生一个错误,因为 non_existent_file 文件不存在,这个错误信息以覆盖的方式会被重定向到 error.log 文件中,而不会显示在终端上

2>>

  • 作用:将命令的标准错误输出追加到指定文件的末尾(正确信息不会输入进去)
ls non_existent_file 2>> error.log

再次执行 ls non_existent_file 时,新的错误信息会被追加到 error.log 文件的末尾

&> 或 >&

  • 作用:将命令的标准输出和标准错误输出都重定向到同一个文件
ls non_existent_file &> all_output.log

这样,ls 命令的标准输出(如果有)和标准错误输出都会被写入到 all_output.log 文件中

&>>

  • 作用:把标准输出和标准错误输出都追加到指定文件末尾,它结合了标准输出追加(>>)和标准错误输出追加(2>>)的功能
ls non_existent_file &>> combined.log

该命令会将 ls 命令执行过程中的标准输出(如果有)和标准错误输出追加到 combined.log 文件中

输入重定向操作符

<

  • 作用:将指定文件的内容作为命令的输入
wc -l < test.txt

wc -l 命令用于统计行数,通过 < test.txt 把 test.txt 文件的内容作为输入,统计该文件的行数

<<

  • 作用:用于向命令提供多行输入,可在脚本中嵌入一段文本块,并将其作为命令的输入,以指定的结束标记(如 EOF)来界定文本块的开始和结束(约定俗成用EOF,但使用其他例如aaa,bbb作为开始结束标识也可以)
cat << EOF
This is a multi-line text.
It can contain multiple lines.
EOF

cat 命令会将这段多行文本输出到终端

<<<

  • 作用:将一个字符串作为命令的输入
grep "example" <<< "This is an example string."

grep 命令会在 “This is an example string.” 中查找 “example” 并输出匹配的行

组合重定向

2>&1

  • 作用:将标准错误输出重定向到标准输出,通常与其他重定向操作符结合使用,将标准输出和标准错误输出都重定向到同一个地方
ls non_existent_file 2>&1 | tee output.log

ls 命令的标准输出和标准错误输出都会通过管道传递给 tee 命令,tee 命令会将内容同时输出到终端和 output.log 文件中

文件描述符相关重定向

[n]< file 和 [n]> file

  • 作用:n 代表文件描述符,默认情况下,0 是标准输入(stdin),1 是标准输出(stdout),2 是标准错误输出(stderr),可以使用其他文件描述符进行更灵活的输入输出重定向
exec 3> logfile.txt
echo "This will go to the log file" >&3
exec 3>&-  # 关闭文件描述符 3

这里先将文件描述符 3 重定向到 logfile.txt 文件,然后将字符串 “This will go to the log file” 输出到文件描述符 3 对应的文件中,最后关闭文件描述符 3

>&- 和 <&-

  • 作用
    • >&-:用于关闭文件描述符的输出,当已经完成了对某个文件描述符的输出操作,并且想要释放该资源时,可以使用此操作符关闭它
    • <&-:用于关闭文件描述符的输入,通常在不再需要从某个文件描述符读取输入时使用
# 打开文件描述符 3 用于写入
exec 3> output.txt
echo "Writing to file descriptor 3" >&3
# 关闭文件描述符 3 的输出
exec 3>&-

# 打开文件描述符 4 用于读取
exec 4< input.txt
read line <&4
echo "Read line: $line"
# 关闭文件描述符 4 的输入
exec 4<&-

重定向到设备文件相关

> /dev/null 和 2> /dev/null

  • 作用
    • > /dev/null:将命令的标准输出丢弃,即不将标准输出显示在终端或保存到文件中,/dev/null 是一个特殊的设备文件,被称为“黑洞”,所有写入它的数据都会被丢弃
    • 2> /dev/null:将命令的标准错误输出丢弃
# 丢弃标准输出
ls non_existent_file > /dev/null
# 丢弃标准错误输出
ls non_existent_file 2> /dev/null
# 同时丢弃标准输出和标准错误输出
ls non_existent_file &> /dev/null

在网络通信相关场景(结合输入输出重定向思想)

通过管道和重定向实现简单网络交互(在有合适工具的情况下)

  • 作用:借助网络工具(如 nc 即 netcat),结合重定向可以实现简单的网络通信,可以将本地命令的输出发送到远程主机,或者将远程主机的响应作为本地命令的输入
  • 示例
# 作为客户端向远程服务器发送消息
echo "Hello, server!" | nc example.com 80 > response.txt
# 这里将 "Hello, server!" 发送到 example.com 的 80 端口
# 并将服务器的响应保存到 response.txt 文件中

进程间通信相关的输入输出操作思路

通过命名管道(FIFO)结合重定向

  • 作用:命名管道是一种特殊的文件类型,可用于不同进程之间的通信,可以利用重定向将数据写入命名管道,也可以从命名管道读取数据
# 创建命名管道
mkfifo myfifo
# 一个进程向管道写入数据
echo "Data for the other process" > myfifo &
# 另一个进程从管道读取数据
read data < myfifo
echo "Read data: $data"
# 删除命名管道
rm myfifo

特殊文件系统操作中的重定向

利用重定向修改系统配置文件(需权限)

  • 作用:在某些情况下,需要修改系统配置文件,可借助重定向将修改后的内容覆盖写入到配置文件中,但要注意这种操作需要相应的权限
# 假设要修改 hosts 文件添加一条记录
echo "127.0.0.1  mydomain.local" | tee -a /etc/hosts > /dev/null
# tee -a 用于将输入追加到文件中,结合重定向操作

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

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

相关文章

【航天远景 MapMatrix 精品教程】08 Pix4d空三成果导入MapMatrix

【航天远景 MapMatrix 精品教程】08 Pix4d空三成果导入MapMatrix 文章目录 【航天远景 MapMatrix 精品教程】08 Pix4d空三成果导入MapMatrix一、资料准备1.去畸变影像2.相机文件3.外方位元素二、创建工程1.新建工程2.导入照片3.编辑相机文件4.编辑外方位元素文件,导入外方位元…

创建型设计模式之Prototype(原型)

创建型设计模式之Prototype&#xff08;原型&#xff09; 摘要&#xff1a; Prototype&#xff08;原型&#xff09;设计模式通过复制现有对象来创建新对象&#xff0c;避免重复初始化操作。该模式包含Prototype接口声明克隆方法、ConcretePrototype实现具体克隆逻辑&#xff…

JNI开发流程

一. 引言 最近在做一个自己的项目&#xff0c;就是基于FastDDS封装一套JAVA库&#xff0c;让android和java应用可以使用dds的功能。 由于FastDDS是使用C编写的开源库&#xff0c;因此java的类库想要调用FastDDS的接口&#xff0c;需要额外编写一个JNI层的动态库对FastDDS的接口…

STM32G4 电机外设篇(二) VOFA + ADC + OPAMP

目录 一、STM32G4 电机外设篇&#xff08;二&#xff09; VOFA ADC OPAMP1 VOFA1.1 VOFA上位机显示波形 2 ADC2.1 用ADC规则组对板载电压和电位器进行采样 3 OPAMP&#xff08;运放&#xff09;3.1 结合STM32内部运放和ADC来完成对三相电流的采样3.2 运放电路分析 附学习参考…

微服务难题?Nacos服务发现来救场

文章目录 前言1.什么是服务发现2.Nacos 闪亮登场2.1 服务注册2.2 服务发现 3.Nacos 的优势3.1 简单易用3.2 高可用3.3 动态配置 4.实战演练4.1安装 Nacos4.2 服务注册与发现示例代码&#xff08;以 Spring Boot 为例&#xff09; 总结 前言 大家好&#xff0c;我是沛哥儿。今天…

C# 结合PaddleOCRSharp搭建Http网络服务

Windows打开端口&#xff1a; 控制面板 > 系统和安全 > 防火墙> 高级设置 → 入站规则 → 右侧选择 → 新建规则 → 端口 → 协议类型 TCP→ 端口 using System; using System.Drawing; using System.IO; using System.Net; using System.Text; using System.Threadi…

【连接器专题】SD卡座规格书审查需要审哪些方面?

在审查SD卡座规格书时,我们需要考虑哪些方面? 首先在拿到一份SD卡座的详细规格书时,一般供应商给到的规格书中包括了一些基础信息、产品图纸信息、技术参数信息,同时有些供应商会给出产品可靠性测试报告。因此我们会从这几个要素去看规格书。 基础信息 基础信息一般会给变更…

eBest智能价格引擎系统 助力屈臣氏饮料落地「价格大脑」+「智慧通路」数字基建​

从价格策略到终端执行&#xff0c;数字化正在重构饮料行业竞争壁垒&#xff01; 近日&#xff0c;eBest为屈臣氏饮料提供的智能价格引擎系统已正式上线并投入运营。同时&#xff0c;基于eBest SFA方案且与屈臣氏饮料业务场景深度耦合的Smart Field Operation智慧通路项目正式启…

Kettle 远程mysql 表导入到 hadoop hive

kettle 远程mysql 表导入到 hadoop hive &#xff08;教学用 &#xff09; 文章目录 kettle 远程mysql 表导入到 hadoop hive创建 对象 执行 SQL 语句 -mysql 导出 CSV格式CSV 文件远程上传到 HDFS运行 SSH 命令远程登录 run SSH 并执行 hadoop fs -put 建表和加载数据总结 创…

完整解析 Linux Kdump Crash Kernel 工作原理和实操步骤

完整解析 Linux Kdump Crash Kernel 工作原理和实操步骤 一、前言 在使用 Linux 操作系统进行内核开发或者系统维护时&#xff0c;内核 panic 是最常见的系统崩溃环节。如果想要在内核崩溃后立即分析环境和输出内核内存 dump&#xff0c;Kdump crashkernel 是最接近完美的解…

菜鸟之路Day36一一Web开发综合案例(部门管理)

菜鸟之路Day36一一Web开发综合案例&#xff08;部门管理&#xff09; 作者&#xff1a;blue 时间&#xff1a;2025.5.28 文章目录 菜鸟之路Day36一一Web开发综合案例&#xff08;部门管理&#xff09;一.环境搭建二.开发规范三.部门管理3.1查询3.2删除3.3新增3.3修改根据id来…

第 1 章:学习起步

1. React Native前置知识要求 在开始学习React Native之前&#xff0c;有一些前置知识你需要了解。不过别担心&#xff0c;我会带你逐步掌握这些内容&#xff0c;让你顺利入门。 1.1. JavaScript是必须掌握的 学习React Native&#xff0c;JavaScript是基础。你需要了解Java…

SQL查询——大厂面试真题

前言 本文总结了SQLite数据库的核心操作要点&#xff1a;1. 基础语法&#xff1a;SQL语句不区分大小写&#xff0c;多语句需用分号分隔&#xff0c;支持多种注释方式2. 表操作&#xff1a;包括创建表&#xff08;定义主键、非空约束等&#xff09;、插入/更新/删除数据、添加/…

Linux-pcie ranges介绍

参考链接&#xff1a;https://elinux.org/Device_Tree_Usage#PCI_Host_Bridge pcie bar高低端BAR起始地址介绍 pcie设备树节点 / {compatible "rockchip,rk3588";interrupt-parent <&gic>;#address-cells <2>;#size-cells <2>;pcie3x4: p…

⭐ Unity AVProVideo插件自带播放器 脚本重构 实现视频激活重置功能

一、功能概述 本笔记记录直接修改插件自带的场景播放其中 原始的 MediaPlayerUI 脚本,实现激活时自动重置播放器的功能。 我用的插件版本是 AVPro Video - Ultra Edition 2.7.3 修改后的脚本将具备以下特性: 激活 GameObject 时自动重置播放位置到开头 可配置是否在重置后自…

详解K8s API Server 如何处理请求的?

详解K8s API Server 如何处理请求的? Kubernetes(K8s)是一个强大的容器编排系统,而API Server(kube-apiserver) 是它的核心组件之一。 如果把 K8s 比作一个国家,API Server 就是政府机构,所有资源的创建、修改、删除都要经过它审批! 🎯 API Server 的作用 📌 A…

微调数据处理

1. 数据爬取 我们将爬取的1G文件都保存到all_m_files目录下 查看原始数据文件数量&#xff1a; find /root/all_m_files -type f | wc -l 2. 数据预处理 仅保留UTF-8 格式文件&#xff0c;且所有保留的代码文件长度必须大于20行 import os import pandas as pddef try_read…

解决开发者技能差距:AI 在提升效率与技能培养中的作用

企业在开发者人才方面正面临双重挑战。一方面&#xff0c;IDC 预测&#xff0c;到2025年&#xff0c;全球全职开发者将短缺400万人&#xff1b;另一方面&#xff0c;一些行业巨头已暂停开发者招聘&#xff0c;转而倚重人工智能&#xff08;AI&#xff09;来满足开发需求。这不禁…

XCTF-web-easyphp

解析 第一个条件&#xff08; k e y 1 &#xff09;&#xff1a; i s s e t ( key1&#xff09;&#xff1a;isset( key1&#xff09;&#xff1a;isset(a) && intval(KaTeX parse error: Expected EOF, got & at position 14: a) > 6000000 &̲& strl…

Transformer 通关秘籍11:Word2Vec 及工具的使用

将文字文本转换为词向量(word embedding&#xff09;的过程中&#xff0c;一个非常著名的算法模型应该就是 Word2Vec 了。 相信大家或多或少都听说过&#xff0c;本节就来简单介绍一下 Word2Vec 。 什么是 Word2Vec &#xff1f; Word2Vec 可以非常有效的创建词嵌入向量&…