数据流和重定向

1、数据流

不管正确或错误的数据都是默认输出到屏幕上,所以屏幕是混乱的。所以就需要用数据流重定向将这两 条数据分开。数据流重定向可以将标准输出和标准错误输出分别传送到其他的文件或设备去

标准输入(standard input,简称stdin):默认情况下,标准输入指从键盘获取的输入 标准输出(standard output,简称stdout):默认情况下,命令执行所回传正确的信息会输出到 屏幕上 标准错误输出(standard error output,简称stderr):默认情况下,标准错误输出可理解为命令 执行失败后,所回传的错误信息会输出到屏幕上

NumberChannel nameDescriptionDefault connectionUsage
0stdinStandard inputKeyboardread only
1stdoutStandard outputTerminalwrite only
2stderrStandard errorTerminalwrite only
3+filenameOther filesnoneread and/or write
  1. Number 0(stdin)

    • 含义:标准输入,是程序获取输入数据的通道。
    • 默认连接:通常关联键盘,用户通过键盘输入数据。
    • 使用方式:只读(程序通过此通道读取输入内容)。
  2. Number 1(stdout)

    • 含义:标准输出,程序正常运行时输出结果的通道(如命令执行结果)。
    • 默认连接:关联终端,结果直接显示在终端界面。
    • 使用方式:只写(程序向此通道写入输出内容)。
  3. Number 2(stderr)

    • 含义:标准错误,程序运行错误或警告信息的输出通道。
    • 默认连接:同样关联终端,错误信息默认显示在终端。
    • 使用方式:只写(程序向此通道写入错误信息)。
  4. 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  # 使配置立即生效  
将标准输出重定向到文件(这也是将内容写入文件的一种方法)

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

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

相关文章

详解 MySQL 索引的最左前缀匹配原则

MySQL 的最左前缀匹配原则主要是针对复合索引&#xff08;也称为联合索引&#xff09;而言的。其核心思想是&#xff1a;只有查询条件中包含索引最左侧&#xff08;第一列&#xff09;开始的连续一段列&#xff0c;才能让 MySQL 有效地利用该索引。 一、 复合索引的结构 复合…

MyBatis注解开发增删改查基础篇

本文是MyBatis注解开发的基础篇&#xff0c;将通过实际场景&#xff0c;详细介绍MyBatis注解式开发的使用&#xff0c;这是MyBatis很强大的一个特性&#xff0c;可以直接在接口方法上定义 SQL 语句&#xff0c;从而实现数据库的增删改查操作。 本文目录 一、环境依赖二、创建对…

周末总结(2024/04/05)

工作 人际关系核心实践&#xff1a; 要学会随时回应别人的善意&#xff0c;执行时间控制在5分钟以内 坚持每天早会打招呼 遇到接不住的话题时拉低自己&#xff0c;抬高别人(无阴阳气息) 朋友圈点赞控制在5min以内&#xff0c;职场社交不要放在5min以外 职场的人际关系在面对利…

【HTML】纯前端网页小游戏-戳破彩泡

分享一个简单有趣的网页小游戏 - 彩色泡泡爆破。玩家需要点击屏幕上随机出现的彩色泡泡来得分。 <!DOCTYPE html> <html lang"zh"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-wi…

如何实现单例模式?

一、模式定义与核心价值 单例模式&#xff08;Singleton Pattern&#xff09;是一种创建型设计模式&#xff0c;保证一个类仅有一个实例&#xff0c;并提供全局访问点。其核心价值在于&#xff1a; ​​资源控制​​&#xff1a;避免重复创建消耗性资源&#xff08;如数据库连…

Three.js 系列专题 1:入门与基础

什么是 Three.js? Three.js 是一个基于 WebGL 的 JavaScript 库,它简化了 3D 图形编程,让开发者无需深入了解底层 WebGL API 就能创建复杂的 3D 场景。它广泛应用于网页游戏、可视化、虚拟现实等领域。 学习目标 理解 Three.js 的核心组件:场景(Scene)、相机(Camera)…

蓝桥云客---蓝桥速算

3.蓝桥速算【算法赛】 - 蓝桥云课 问题描述 蓝桥杯大赛最近新增了一项娱乐比赛——口算大赛&#xff0c;目的是测试选手的口算能力。 比赛规则如下&#xff1a; 初始给定一个长度为 N 的数组 A&#xff0c;其中第 i 个数字为 Ai​。随后数组会被隐藏&#xff0c;并进行 Q 次…

Oracle迁移达梦遇中断?试试SQLark的断点续迁功能!

在企业级数据迁移项目中&#xff0c;如果迁移单表数据量超过亿行、占用空间超过100GB时&#xff0c;一旦遇到网络中断或迁移报错&#xff0c;往往需要整表重新迁移&#xff0c;导致效率低下&#xff0c;严重影响项目进度。针对这一痛点&#xff0c;SQLark 支持对 Oracle→DM 的…

【C/C++算法】蓝桥杯之递归算法(如何编写想出递归写法)

绪论&#xff1a;冲击蓝桥杯一起加油&#xff01;&#xff01; 每日激励&#xff1a;“不设限和自我肯定的心态&#xff1a;I can do all things。 — Stephen Curry” 绪论​&#xff1a; ———————— 早关注不迷路&#xff0c;话不多说安全带系好&#xff0c;发车啦&am…

[ctfshow web入门] web5

前置知识 引用博客&#xff1a;phps的利用 当服务器配置了 .phps 文件类型时&#xff0c;访问 .phps 文件会以语法高亮的形式直接显示 PHP 源代码&#xff0c;而不是执行它。.phps被作为辅助开发者的一种功能&#xff0c;开发者可以通过网站上访问xxx.phps直接获取高亮源代码 …

day 8 TIM定时器

一、STM32 定时器概述 1. 定时器的概述定时器的基本功能&#xff0c;但是 STM32 的定时器除了具有定时功能之外&#xff0c;也具有定时器中断功能&#xff0c;还具有输入捕获&#xff08;检测外部信号&#xff09;以及输出比较功能&#xff08;输出不同的脉冲&#xff09;&…

Spring Boot 中使用 Redis:从入门到实战

&#x1f31f; 前言 欢迎来到我的技术小宇宙&#xff01;&#x1f30c; 这里不仅是我记录技术点滴的后花园&#xff0c;也是我分享学习心得和项目经验的乐园。&#x1f4da; 无论你是技术小白还是资深大牛&#xff0c;这里总有一些内容能触动你的好奇心。&#x1f50d; &#x…

hi3516cv610通过menuconfig关闭的宏记录

hi3516cv610通过menuconfig关闭的宏记录 defconfig为 hi3516cv610_debug_defconfig或hi3516cv610_new_defconfig 1、 变为 2、 变为 3、 变为 4、 变为 5、 变为

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 连接和用户注…

【JavaEE进阶】Spring AOP入门

欢迎关注个人主页&#xff1a;逸狼 创造不易&#xff0c;可以点点赞吗 如有错误&#xff0c;欢迎指出~ AOP是Spring框架的第⼆⼤核⼼(第⼀⼤核⼼是 IoC) 什么是AOP&#xff1f; • AspectOrientedProgramming&#xff08;⾯向切⾯编程&#xff09; 什么是⾯向切⾯编程呢? 切…

算法思想之双指针(一)

欢迎拜访&#xff1a;雾里看山-CSDN博客 本篇主题&#xff1a;算法思想之双指针(一) 发布时间&#xff1a;2025.4.4 隶属专栏&#xff1a;算法 目录 双指针算法介绍对撞指针&#xff1a;快慢指针&#xff1a; 例题移动零题目链接题目描述算法思路代码实现 复写零题目链接题目描…

【11408学习记录】英语写作黄金模板+语法全解:用FTC数据泄漏案掌握书信结构与长难句拆解(附思维导图)

2025.04.04 英语写作书信写作第一段私人信件公务信函 语法总结——简单句简单句的核心&#xff1a;谓语动词的变化词性的拓展限定词 形容词与副词介词短语 成分的扩展同位语插入语 非谓语动词 每日一句词汇 第一步&#xff1a;辨别第二步&#xff1a;断开第三步&#xff1a;简化…

手机显示5GA图标的条件

最近有星友问在什么情况下才能显示5G-A&#xff1f;虽然这个我也不知道&#xff0c;但是我有几个运营商的5G终端白皮书&#xff0c;从上面就可以找到答案。 如上是几个运营商显示5G-A的条件&#xff0c;基本上考虑的都是3CC的情况&#xff0c;联通还有考虑200M CA 2CC的场景&am…

网络:华为数通HCIA学习:IP路由基础

华为HCIA学习 IP路由基础路由协议或路由种类以及对应路由的优先级按工作区域分类&#xff1a;按工作机制及算法分类&#xff1a;路由的优先级路由器选择最优路由的顺序是什么? 前言自治系统LAN和广播域路由选路IP路由表路由度量建立路由表最长匹配原则路由器转发数据包总结 IP…

Docker 镜像相关的基本操作

一、Docker 镜像基本操作 1. 查找镜像 命令&#xff1a; docker search <镜像名称> 示例&#xff1a;查找 CentOS 镜像&#xff1a; docker search centos 命令解释&#xff1a; 默认从 Docker Hub 官方仓库上搜索镜像。搜索结果包含多个列&#xff1a; NAME&…