【shell 基础13】输入输出与重定向

news2024/12/23 9:28:41

文章目录

    • 一. 标准输入和标准输出
    • 二、重定向
      • 1. 定义
      • 2. 输出的重定向
      • 3. 对标准错误输出重定向
      • 4. 输入的重定向

一. 标准输入和标准输出

linux中有三种标准输入输出,分别是STDIN,STDOUT,STDERR,文件描述符分别是 0、1、2。

当运行命令时,命令启动的进程就会自动打开这三个保留的文件描述符。
如下图
在这里插入图片描述

在 Linux中 一切都是文件,包括输入和输出,其中:

  • 0 表示标准输入,对应的文件描述符是 /proc/self/fd/0。
  • 1 表示标准输出,对应的文件描述符是 /proc/self/fd/1。
  • 2 标准错误,对应的文件描述符是 /proc/self/fd/2。

可以使用这些文件描述符来控制命令程序或者脚本的输入和输出。

我们常用的命令2>&1的含义是标准错误重新定向到标准输出,即指将标准输出、标准错误指定为同一输出路径。

 
 

二、重定向

1. 定义

shell在执行命令时可以修改标准输入的输入源和标准输出的目标位置,这个功能称为重定向。

在重定向时,n> file这种语法表示将文件描述符n的输出重定向到file文件。如果省略n,文件描述符则默认为1,因此>会对标准输出重定向。

在这里插入图片描述
 

2. 输出的重定向

标准输出的目标位置通常指向的是终端屏幕。可以使用 > 符号修改标准输出的目标位置。
 

例子1:
比如下面的示例就会将ps命令的输出重定向到result.txt文件。

$ ps > result.txt  ←----- 由于已经重定向到 result.txt 文件,所以屏幕上不会输出任何内容
$ cat result.txt
  PID TTY          TIME CMD
10745 pts/0    00:00:00 bash
10873 pts/0    00:00:00 ps

 
例子2:
echo命令的执行结果将被重定向到hello.txt文件。

$ echo hello > hello.txt
$ cat hello.txt
hello

注:

只要命令能将执行结果输出到标准输出,就可以实现重定向。

 

3. 对标准错误输出重定向

要想对标准错误输出的错误信息进行重定向,可以使用2>符号。

例子:ls命令的标准错误输出会被重定向到error.txt文件。

$ ls /xxx 2> error.txt
$ cat error.txt
ls: 无法访问'/xxx': 没有那个文件或目录

 

4. 输入的重定向

对标准输入也可以像对标准输出一样进行重定向操作。

以tr命令为例:
tr命令是用于替换字符串的命令,其语法为tr 待替换的字符串 被替换后的字符串

tr b B

abc'
aBc'
my book

从键盘输入一些内容后,tr命令会以行为单位替换输入内容,并输出替换后的结果。要想退出tr命令,可以使用Ctrl + D结束输入状态。

 

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

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

相关文章

Android Paging3分页+ConcatAdapter+空数据视图+下拉刷新(SwipeRefreshLayout)+加载更多+错误重试 (示例)

文章目录 引入库数据模型定义分页 adapter加载更多 adapter空数据 adapter分页数据源ViewModel 提供加载数据源的方法结合以上实现的 Fragment数据重复问题 引入库 implementation androidx.paging:paging-runtime-ktx:3.1.1paging 库,目前还是有点小bug &#xff…

Java开发技巧-数据结构-使用HashSet判断主键是否存在、使用Pair成对结果返回/Triple三个对象返回

场景 Java中使用HashSet判断主键是否存在 HashSet实现Set接口,由哈希表(实际上是HashMap)实现,但不保证set的迭代顺序,并允许使用null元素。 HashSet的时间复杂度跟HashMap一致,如果没有哈希冲突则时间复…

EXCEL函数笔记1(数学函数、文本函数、日期函数)

数学函数 取整:INT(number) 取余:MOD(number,除数) 四舍五入:ROUND(number,保留几位小数) 取绝对值:ABS(number) 根号处理:SQRT(number) 0到1随机数:RAND(&am…

Python神器Anaconda图文安装教程

来源:投稿 作者:Fairy 编辑:学姐 Anaconda简介 Anaconda是一种数据科学和机器学习的开发环境,它包含了大量的Python包、工具和库,以及可视化界面和集成开发环境。「Anaconda可以方便地管理Python环境和安装第三方软件…

⑧电子产品拆解分析-1拖4USB拓展坞

⑧电子产品拆解分析-1拖4USB拓展坞 一、功能介绍二、电路分析以及器件作用1、内部电路拆解 三、参考资料学习 一、功能介绍 ①USB2.0一拖四通讯;②具备OTG功能,可适配大部分USB接口设备; 二、电路分析以及器件作用 1、内部电路拆解 分析&am…

【分布式存储】聊一下分布式存储中分片机制

为什么需要分片 在服务端领域,主要特点是支撑7*24小时不间断的服务,而最终对各种行为会生产对应的数据,比如用户登陆/注册,发起订单交易、支付、身份验证,短信验证等情况都需要存储起来,其中包括各种各样的…

浏览器工作原理分析与首屏加载

正文 1. 页面加载时间线 我们先来一个老生常谈的面试题:从输入 URL 到页面加载完成的过程中都发生了什么事情? 这个面试题本身也是一个开放题,不同方向的工程师侧重也不一样。大抵的过程可以简化为: st>start: 输入URL e>…

WPS表格处理

wps表格中公式出来的内容如何转为纯文本 选中公式算出的结果区域,复制,在原区域上右键,选择性粘贴为数值,就转成文本了,当然公式也就消除了。 wps表格如何设置整列公式? 1、先来看看下面这个例子需做出商…

图像分割算法

文章目录 前言1. 基于区域的分割方法1.1 区域生长算法1.2 区域分裂合并算法1.3 分水岭算法1.3.1 分水岭算法原理1.3.2 opencv-python中分水岭算法的应用 2. 基于图的分割方法2.1 Grabcut图像分割 源码仓库地址 前言 图像分割是指将图像分成若干互不重叠的子区域,使…

如何卸载MySQL数据库以及删除所有有关信息

目录 前言 第一步 卸载mysql程序 第二步 删除安装目录的mysql项目 第三步 删除MySQL的相关注册表 第四步 删除C盘下的 C:\ProgramData\MySQL所有的文件 第五步 删除 C:\Documents and Settings\All Users\Application Data\MySQL 下的文件夹 第六步 重启电脑 尾语 前言…

使用crictl pull时报错:“unknown service runtime.v1alpha2.ImageService”

如有错误,敬请谅解! 此文章仅为本人学习笔记,仅供参考,如有冒犯,请联系作者删除!! 引言: crictl 是 kubernetes cri-tools 的一部分,是专门为 kubernetes 使用 …

【详解】String、StringBuffer、StringBuilder的基本用法及区别

一、String 1.常用的输入方式 Scanner in new Scanner(System.in); //输入方法一 String s1 in.next(); //in.next(): 读到空格就停止扫描(输入)。//输入方法二 String s2 in.nextLine(); //in.nextLine():读到回车就停止扫描…

Avalon 学习系列 (一) —— 初步入门

相关链接 Avalon github地址 Avalon 快速入门 基于 Avalon的组件库-OniUI Avalon 入门教程 Avalon CDN 简介 Avalon 是司徒正美开发和维护的一款基于虚拟 DOM 与属性劫持的迷你、 易用、 高性能 的 前端 MVVM 框架,最早发布于2012.09.15。 其拥有超优秀的兼容性&a…

Python中的模块包第三方库详解

模块&包 模块 一个.py文件就是一个模块,里面是一些函数和变量,需要的时候可以导入。 模块命名规范: 1.以英文开头,不出现中文 2.模块名不应与系统内置函数重名 包 包本身就是一个文件夹,如果文件夹内有__init__.py文件&…

浅谈iic时序

一、iic通信核心要点 在iic通信中,进行数据传输的时候,遵循在scl时钟线高的时候保持sda电平稳定,这个电平值就是要写入的值,然后,在scl时钟线拉低的时候去改变sda上的值,达到自己想要输出的值 所以说&…

如何做架构设计

1、设计很重要 我们可以看一下周边的事物,那些好的东西,他们并不会天然存在,都是被设计出来的,因此设计就是创造和改善事物的重要过程。设计的重要之处在于,最初的设计往往决定最终的结果,甚至决定着事物的…

端口扫描伪装技术实践

端口扫描伪装技术实践 1.-f(分段传输)2.-mtu(使用指定的MTU)3.-D(使用诱饵主机隐蔽扫描)4.--source-port(源端口欺骗)5.--data-length (发送报文时附加随机数据&#xff…

入职字节外包一个月,我离职了····

有一种打工人的羡慕,叫做“大厂”。 真是年少不知大厂香,错把青春插稻秧。 但是,在深圳有一群比大厂员工更庞大的群体,他们顶着大厂的“名”,做着大厂的工作,还可以享受大厂的伙食,却没有大厂…

电子元器件解析02之电容(二)——电容分类与应用场景

书接上文:电子元器件解析02之电容(一)——定义与性能参数:https://blog.csdn.net/weixin_42837669/article/details/131142286 摘要 本文总结了各种不同介质电容的特性,包括陶瓷电容、电解电容、薄膜电容等;同时对一些特殊场合的电…

Hadoop Distributed System (HDFS) 写入和读取流程

一、HDFS HDFS全称是Hadoop Distributed System。HDFS是为以流的方式存取大文件而设计的。适用于几百MB,GB以及TB,并写一次读多次的场合。而对于低延时数据访问、大量小文件、同时写和任意的文件修改,则并不是十分适合。 目前HDFS支持的使用…