Linux I/O重定向

一、核心概念:I/O 重定向

Linux 系统默认会打开 3 个标准文件流:

  • stdin (标准输入,文件描述符 0 ):默认从键盘读取

  • stdout (标准输出,文件描述符 1 ):默认输出到显示器

  • stderr (标准错误,文件描述符 2 ):默认输出到显示器

系统默认打开这 3 个流,是为了让程序能直接和用户交互,不需要手动打开/关闭基础设备。

二、输出重定向( > / >> )

bash 复制代码
echo "helloworld" 

默认向显示器文件里面输出helloworld

而通过重定向,可以往任意普通文件里面输入

  1. 覆盖重定向 >
bash 复制代码
echo "helloworld" > hello.txt
  • 如果 hello.txt 不存在 → 自动新建文件

  • 如果文件已存在 → 先清空原有内容,再写入新内容

  • 效果:原本要输出到显示器的内容,被改写到文件里。

  1. 追加重定向 >>
bash 复制代码
echo "helloworld" >> hello.txt
  • 文件不存在 → 自动新建

  • 文件已存在 → 在文件末尾追加内容,不清空原有内容

  • 效果:多次执行会在文件里累积多行内容。

三、输入重定向( < / << )

bash 复制代码
cat

会阻塞,然后你输入什么,它立刻打印什么。

cat 本来的作用是:把文件内容打印到屏幕。

但不加文件名 时:cat 会默认从「键盘输入」读取内容,然后直接原样输出

1.输入重定向 (<): 从文件读取内容作为命令的输入,而非键盘。

bash 复制代码
cat < hello.txt

用 < 后,改为从 hello.txt 读取数据

效果:等价于 cat hello.txt ,直接把文件内容打印到屏幕。

2.Here Document (<<): 直接在命令行中指定一个结束符,将两个结束符之间的多行文本作为输入。

bash 复制代码
cat > note.txt << EOF
第一行内容
第二行内容
EOF
# 将 EOF 标记之间的两行文本写入 note.txt
相关推荐
zhangfeng113317 小时前
多台服务器同时训练llamfactory 大语言模型 国家超算中心 Slurm 是目前全球最主流的开源、高性能计算(HPC)集群资源管理与作业调度系统
服务器·语言模型·开源
不会写DN18 小时前
其实跨域问题是后端来解决的? CORS
服务器·网络·面试·go
JZC_xiaozhong1 天前
数据不互通、审批慢?企业多系统智能协同与流程自动化解决方案
运维·自动化·流程管理·流程自动化·数据集成与应用集成·流程监控·流程可视化设计
爱学习的小囧1 天前
ESXi 8.0 原生支持 NVMe 固态硬盘吗?VMD 配置详解教程
linux·运维·服务器·esxi·esxi8.0
坚持就完事了1 天前
Linux中的变量
linux·运维·服务器
hERS EOUS1 天前
nginx 代理 redis
运维·redis·nginx
handler011 天前
从源码到二进制:深度拆解 Linux 下 C 程序的编译与链接全流程
linux·c语言·开发语言·c++·笔记·学习
Cat_Rocky1 天前
利用Packet Tracer网络实验
linux·运维·服务器
嵌入式×边缘AI:打怪升级日志1 天前
Linux 驱动实战:SR501 人体红外传感器驱动开发与调试全记录
linux·运维·驱动开发
正点原子1 天前
【正点原子Linux连载】第三章 U-Boot使用 摘自【正点原子】ATK-DLRK3568嵌入式Linux驱动开发指南
linux·运维·驱动开发