数据流和重定向
1、数据流
不管正确或错误的数据都是默认输出到屏幕上,所以屏幕是混乱的。所以就需要用数据流重定向将这两 条数据分开。数据流重定向可以将标准输出和标准错误输出分别传送到其他的文件或设备去
标准输入(standard input,简称stdin):默认情况下,标准输入指从键盘获取的输入 标准输出(standard output,简称stdout):默认情况下,命令执行所回传正确的信息会输出到 屏幕上 标准错误输出(standard error output,简称stderr):默认情况下,标准错误输出可理解为命令 执行失败后,所回传的错误信息会输出到屏幕上
| Number | Channel name | Description | Default connection | Usage |
|---|---|---|---|---|
| 0 | stdin | Standard input | Keyboard | read only |
| 1 | stdout | Standard output | Terminal | write only |
| 2 | stderr | Standard error | Terminal | write only |
| 3+ | filename | Other files | none | read and/or write |
-
Number 0(stdin):
- 含义:标准输入,是程序获取输入数据的通道。
- 默认连接:通常关联键盘,用户通过键盘输入数据。
- 使用方式:只读(程序通过此通道读取输入内容)。
-
Number 1(stdout):
- 含义:标准输出,程序正常运行时输出结果的通道(如命令执行结果)。
- 默认连接:关联终端,结果直接显示在终端界面。
- 使用方式:只写(程序向此通道写入输出内容)。
-
Number 2(stderr):
- 含义:标准错误,程序运行错误或警告信息的输出通道。
- 默认连接:同样关联终端,错误信息默认显示在终端。
- 使用方式:只写(程序向此通道写入错误信息)。
-
Number 3+(filename):
- 含义:代表除 stdin、stdout、stderr 外的其他文件描述符,用于操作普通文件、自定义文件等。
- 默认连接:无默认关联对象,需手动指定文件。
- 使用方式:可读、可写或读写结合,根据实际文件操作需求而定(如打开文件读写数据)。
例如:
命令 -- ip a

查看目录属性 -- ll /root

2、重定向操作符
重定向操作符可以将命令输入和输出数据流从默认设备重定向到其他位置。重定向操作符本身不是命令,而是命令中附加的可改变命令的输入和输出对象的特殊符号。
-
输出重定向操作符:>、>>
-
输入重定向操作符:<、<<
输出重定向
- 标准输出重定向: 1> 或>、 1>> 或>>
- 标准错误输出重定向:2>、 2>>
案例1:输出重定向(覆盖)
将ip a的标准输出重定向到 /root/file1 -- ip a >/root/file1 (覆盖了file1里面原本的内容,如果file1原本不存在,在重定向时创建了file1,> 命令也可以写成 1>,1可以省略)

案例2:输出重定向(追加)
将ip a的标准输出重定向到 /root/file1 -- ls /root >> /root/file3(追加到已有内容后面,不会覆盖已有内容)

案例3:错误输出重定向
将标准错误输出重定向到/root/file3 2>/root/file1
(由下图可知 ,同时前者的内容覆盖了后者原本的内容,2> 2不能省略)

案例4: 正确和错误都输入到相同位置
ls /home/ /aaaaaaaaa &>list.txt

案例5: 正确和错误都输入到相同位置
ls /home/ /aaaaaaaaa >list1.txt 2>&1

2>&1和 &>的区别
1. 2>&1
- 含义:
2>&1是一种手动的重定向操作,它的作用是将标准错误输出(stderr)重定向到标准输出(stdout)。这里的2代表标准错误输出,1代表标准输出,&用于明确表示后面跟着的是一个文件描述符,而不是文件名。
2. &>
- 含义:
&>是一种简写形式,它的功能是同时将标准输出和标准错误输出重定向到同一个文件。它等同于> file 2>&1。
区别总结
- 语法简洁性:
&>是更简洁的写法,能一次性完成标准输出和标准错误输出的重定向;而2>&1通常需要与单独的标准输出重定向操作(如> file)配合使用。 - 使用场景:如果只是单纯想把标准输出和标准错误输出都重定向到同一个文件,使用
&>更方便;如果需要更复杂的重定向操作,例如先将标准错误输出重定向到标准输出,再对合并后的输出进行其他处理,那么使用2>&1更合适。
案例6:重定向到空设备/dev/null
一般将标准错误输出重定向到空文件(黑洞),这样标准错误输出不会输出在屏幕上,也不会有新文件产生。例如:
![]()
输入重定向操作符:<、<<(追加重定向)
| 使用形式 | 功能 |
| 命令 >文件或命令 1>文件 | 将命令执行后的标准输出信息不在默认的屏幕上显示,而是以覆盖的方式写入到指定文件中,若指定的文件不存在,则自动创建该文件 |
| 命令 2>文件 | 将命令执行后所产生的错误信息不在默认的屏幕上显示,而是以覆盖的方式写入到指定文件中,若指定的文件不存在,则自动创建该文件 |
| 命令 2>/dev/null | 将命令执行后所产生的错误信息不在默认的屏幕上显示,而是写入到空设备文件中,即将输出的错误信息丢弃掉 |
| 命令 &>文件或 命令 >&文件 | 将命令执行后的正确输出信息和错误信息不在默认的屏幕上显示,而是以覆盖的方式写入到指定文件中,若指定的文件不存在,则自动创建该文件 |
| 命令 >>文件 | 将命令执行后的正确输出信息以追加的方式写入到指定的文件中,不覆盖原文件内容,若指定的文件不存在,则自动创建该文件 |
| 命令 <文件 | 使命令从指定的文件中读取数据作为输入 |
| 命令 <<结束标识字符串 | 在命令行读取数据作为输入,直到遇到指定的结束标识字符串 |
标准输入重定向:< 或0<、0<<或<<
案例1:从文件读取数据作为cat命令的输入
[root@master ~]echo test > file
[root@master ~]cat < filetest

案例2:标准输入重定向<<并不表示追加,而是表示输入结束的意思,即作为一个结束符
[root@localhost ~]cat > file3 << file\> hello\> file# 利用<<右侧的控制字符,我们可以终止输入,不必输入ctrl+d来结束。
[root@localhost ~]cat file3hello

将标准输出重定向到文件
echo命令
语法格式为:“echo [字符串] [$变 量]”
echo命令用于在终端设备上输出字符串或变量提取后的值,执行“echo 字符串”或“echo $变量”就可以,其中$符号意思是提取变量的实际值,以便后续的输出操作。
指定字符串输出到终端屏幕
例如:
root@rrl-virtual-machine:~# echo bugagihia.com
bugagihia.com

使用“$变量”的方式提取出变量SHELL的值,并将其输出到屏幕上
例如:
root@rrl-virtual-machine:~# echo $SHELL
/bin/bash

bash shell提示符
PS1 是 Linux 系统中 Bash shell 的环境变量,用于定义命令行提示符的显示格式。通过设置 PS1,可自定义提示符展示的内容,例如当前用户、主机名、工作目录、时间等信息。
root@rrl-virtual-machine:~# echo $PS1
\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\u@\h:\w\$PS1常用的参数含义如下:
\d :#代表日期,格式为weekday month date,例如:"Mon Aug 1"\H :#完整的主机名称
\h :#仅取主机的第一个名字
\t :#显示时间为24小时格式,如:HH:MM:SS\T :#显示时间为12小时格式
\A :#显示时间为24小时格式:HH:MM\u :#当前用户的账号名称
\v :#BASH的版本信息
\w :#完整的工作目录名称
\W :#利用basename取得工作目录名称,所以只会列出最后一个目录
\# :#下达的第几个命令
\$ :#提示字符,如果是root时,提示符为:# ,普通用户则为:$

默认root用户 PS1 本身的格式定义:[root@localhost ~]# -- [\u@\h \W]\$
临时修改 PS1格式:
export命令
执行后,提示符会按 [\u@\h \A] \w \$ 规则显示,包含:
\u:当前用户名;\h:主机名简称;\A:24 小时制简化时间(HH:MM);\w:完整工作目录;\$:提示符符号(root用户显示#,普通用户显示$)。
例如:这里修改了PS1格式,多了[ ]和时间

永久生效(修改配置文件)
若需永久应用,编辑用户配置文件(如 ~/.bashrc):
echo 'export PS1="[\u@\h \A] \w \$ "' >> ~/.bashrc
source ~/.bashrc # 使配置立即生效
将标准输出重定向到文件(这也是将内容写入文件的一种方法)

相关文章:
数据流和重定向
1、数据流 不管正确或错误的数据都是默认输出到屏幕上,所以屏幕是混乱的。所以就需要用数据流重定向将这两 条数据分开。数据流重定向可以将标准输出和标准错误输出分别传送到其他的文件或设备去 标准输入(standard input,简称stdinÿ…...
Excel时间类型函数(包括today、date、eomonth、year、month、day、weekday、weeknum、datedif)
目录 1. TODAY()2. DATE()3. EOMONTH()4. YEAR()5. MONTH()6. DAY()7. WEEKDAY()8. WEEKNUM()9. DATEDIF()10.📌 函数扩展与应用11. 📚 时间函数基础概念与分类 Excel 提供了许多 日期与时间类型的函数,用于操作与处理日期或时间数据。这些函…...
【GPT入门】第33 课 一文吃透 LangChain:chain 结合 with_fallbacks ([]) 的实战指南
[TOC](【GPT入门】第33课 一文吃透 LangChain:chain 结合 with_fallbacks ([]) 的实战指南) 1. fallback概述 模型回退,可以设置在llm上,也可以设置在chain上,都带有with_fallbacks([])函数 2. llm的回退 2.1 代码 核心代码&…...
高级语言程序设计
第八章 结构体类型和自定义类型-CSDN博客 第九章 预编译处理-CSDN博客 第十章 文件-CSDN博客...
【51单片机】2-7【I/O口】点亮数码管
1.硬件 51最小系统数码管模块 2.软件 静态数码管 #include "reg52.h" //头文件 typedef unsigned int u16; //对数据类型进行声明定义 typedef unsigned char u8;sbit LSAP2^2;//位选 sbit LSBP2^3; sbit LSCP2^4;u8 code smgduan[17]{0x3f,0x06,0x5b,0x4f,0…...
叁仟数智指路机器人的智能导航精度如何?
哇塞!各位朋友们,来了解一下超厉害的叁仟数智指路机器人的智能导航精度吧!它的精度可是因为采用了不同的定位技术而展现出独特魅力哦! 先看蓝牙定位,这可是超实用的!一般精度能保持在 3 - 5 米左右呢&…...
华为存储考试内容HCIP-Storage
华为认证存储高级工程师 | Huawei Certified ICT Professional-Storage 是培训与认证具备对存储系统进行规划设计、部署实施、性能优化、管理运维和故障处理能力的存储高级工程师 通过该认证证明:工程师能理解闪存及分布式存储产品的相关功能及使用场景࿰…...
A*算法详解(新手入门)——图文并茂,学习笔记分享
前言 本文是博主在学习A*算法时做的一个小案例,有不懂的地方可以私信博主一起讨论学习,由于博主水平有限,可能存在部分知识点遗漏或书写不够严谨,欢迎各位志同道合的朋友批评指教,博主定当虚心学习,感谢各…...
初学STM32系统时钟设置
资料来自正点原子 在学习江科大教程示例的时候默认系统时钟是72MHZ,但是这个系统时钟是怎么过来的呢,通过时钟树以及相关的资料的学习可知,系统时钟它可以是内部RC时钟HSI 8MHZ通过锁相环倍频而来,也可以是外部晶振4-16MHZ通过锁相…...
如何在 Windows 10 上安装 PyGame
PyGame 是 Python 编程语言中的一组跨平台模块,这意味着您可以在任何操作系统上安装它,这篇文章告诉您如何在 Windows 10 上安装 PyGame。 如何在 Windows 10 上安装 PyGame? PyGame 依赖于 Python,这意味着您必须在安装 PyGame …...
STM32 × CLion 新建项目
STM32 CLion 新建项目 新建和配置一个 STM32 项目 1 创建项目 假如是 ST 官方开发板,比如 NUCLEO 板,选择从 ST 板创建 假如是单芯片或淘宝买的那种 F103 开发板,选择从 MCU 创建 2 STM CubeMX 配置 2.1 Pinout & Configuration 外…...
WebSocket 详解:构建一个复杂的实时聊天应用
文章目录 一、前言二、WebSocket 基础2.1 WebSocket 与 HTTP 的区别2.2 WebSocket 的优点 三、搭建 WebSocket 服务端3.1 安装 ws 和 redis 库3.2 创建 WebSocket 服务端3.3 创建用户身份验证 四、前端实现 WebSocket 客户端4.1 创建 Vue 3 项目4.2 实现 WebSocket 连接和用户注…...
详解七大排序
目录 一.直接插入排序 (1)基本思想 (2)算法步骤 (3)代码实现 (4)算法特性 (5)算法优化 (6)示例演示 二.希尔排序 (…...
python爬虫:小程序逆向实战教程
根据我之前发表的文章,我们进行延伸实战https://blog.csdn.net/weixin_64809364/article/details/146981598?spm1001.2014.3001.5501 1. 想要爬取什么小程序,我们进行搜索 2. 找到我们vx小程序的文件地址,我们就可以进行破解 破解步骤强看…...
day 8 TIM定时器
一、STM32 定时器概述 1. 定时器的概述定时器的基本功能,但是 STM32 的定时器除了具有定时功能之外,也具有定时器中断功能,还具有输入捕获(检测外部信号)以及输出比较功能(输出不同的脉冲)&…...
全星 研发项目管理APQP 软件:驱动汽车及制造业研发升级的数字化引擎
全星 APQP 软件:驱动汽车及制造业研发升级的数字化引擎 在汽车及制造业竞争白热化的当下,如何高效推进研发项目,同时确保严格合规,成为企业亟待解决的难题。 全星研发项目管理 APQP 软件系统,凭借卓越的功能与显著优势…...
【VUE】RuoYi-Vue3项目结构的分析
【VUE】RuoYi-Vue3项目结构的分析 1. 项目地址2. RuoYi-Vue3项目结构2.1 整体结构2.2 package.json2.2.1 🧾 基本信息2.2.2 🔧 脚本命令(scripts)2.2.3 🌍 仓库信息2.2.4 📦 项目依赖(dependenc…...
智能体和RPA都需要程序思维,如何使用影刀的变量?
欢迎来到涛涛聊AI, 不管AI还是RPA,都需要用到编程思想才能完成批量工作。今天研究了下影刀的变量。 变量类型 根据变量值选择相应的类型,可选择任意一种影刀所支持的数据类型 变量值 指定变量中保存的值,会根据不同的类型设置…...
详解 MySQL 三层 B+ 树能存多少数据的计算方法
MySQL三层B树能存多少数据 1. 内部节点(非叶子节点)的容量计算2. 叶子节点的数据记录容量3. 三层 B 树的存储能力计算4. 总结 1. 内部节点(非叶子节点)的容量计算 设定参数如下: P:每个节点页的大小&…...
论文笔记(七十五)Auto-Encoding Variational Bayes
Auto-Encoding Variational Bayes 文章概括摘要1 引言2 方法2.1 问题场景2.2 变分下界2.3 SGVB估计器与AEVB算法2.4 重参数化技巧 3 示例:变分自编码器(Variational Auto-Encoder)4 相关工作5 实验6 结论7 未来工作 文章概括 引用࿱…...
Sentinel[超详细讲解]-7 -之 -熔断降级[异常比例阈值]
📖 主要讲解熔断降级之 --- 异常比例阈值 🚀 1️⃣ 背景 Sentinel 以流量作为切入点,提供了很多的丰富的功能,例如🤗: 流量控制,熔断降级等,它能够有效的适用各个复杂的业务场景&am…...
《基于 C++ 的怪物掉落武器功能开发》
一、项目背景 在游戏开发中,怪物掉落武器机制是丰富游戏玩法与提升玩家体验的关键部分。本功能基于 C 语言开发,旨在实现一套逻辑清晰、扩展性强的怪物掉落武器系统,为游戏核心玩法增添策略性与趣味性。 二、功能需求 (一&#…...
C++11观察者模式示例
该示例代码采用C11标准,解决以下问题: 消除了类继承的强耦合方式;通知接口使用可变参数模板,支持任意参数; 示例代码 .h文件如下: #include <functional> #include <string> #include <…...
算法设计学习10
实验目的及要求: 本查找实验旨在使学生深入了解不同查找算法的原理、性能特征和适用场景,培养其在实际问题中选择和应用查找算法的能力。通过实验,学生将具体实现多种查找算法,并通过性能测试验证其在不同数据集上的表现ÿ…...
configurable_alternatives 方法与使用技巧
核心功能与应用场景 在开发调试过程中,当需要动态替换链中的完整组件(如大语言模型、提示词模板等)并保持对话连续性时,可通过 configurable_alternatives() 实现运行时组件热替换。典型场景包括: 调试时切换不同版…...
Angular 2 模板语法详解
Angular 2 模板语法详解 引言 Angular 2 作为一款强大的前端框架,以其组件化的开发模式和高效的性能被众多开发者所青睐。模板语法是Angular 2中用于定义组件UI的关键部分。本文将详细介绍Angular 2的模板语法,帮助开发者更好地理解和运用这一功能。 模板语法概述 Angula…...
对称加密:原理、算法与应用全解析
对称加密作为密码学领域的核心技术,凭借其高效性与广泛应用,在数据安全领域占据重要地位。本文将从基础概念、历史发展、核心算法到实际应用场景,全方位解析对称加密技术的全貌,并探讨其面临的挑战与未来方向。 一、对称加密的核心…...
多线程编程中的锁策略
目录 1.悲观锁vs乐观锁 关键总结 悲观锁: 乐观锁: 选择建议 用 悲观锁 当: 用 乐观锁 当: 2.重量级锁vs轻量级锁 选择建议 用 轻量级锁: 用 重量级锁: 3.挂起等待锁vs自旋锁 关键细节说明 选择…...
win10 笔记本电脑安装 pytorch+cuda+gpu 大模型开发环境过程记录
win10 笔记本电脑安装 pytorchcudagpu 大模型开发环境过程记录 文章部分内容参考 deepseek。 以下使用命令行工具 mingw64。 安装 Anaconda 安装位置: /c/DEVPACK/Anaconda3 然后安装 Python 3.10.16 (略) $ conda create -n pytorch_…...
Layout Inspector平替跨平台布局分析器のAppium Inspector
引言 因为我有一个api为26的设备,因为 Layout Inspector 无法在 API 26 以下设备上使用,并且现在AS的 Hierarchy Viewer 和Android Device Monitor 均已经在SDK中剔除,故想再搜一个pc版的布局查看器,发现Appium Inspector学习成本…...
