当前位置: 首页 > news >正文

【Linux Shell】11. 输入/输出 重定向

文章目录

  • 【 1. 重定向简介 】
  • 【 2. 输出重定向 】
  • 【 3. 输入重定向 】
  • 【 4. Here Document 】
  • 【 5. /dev/null 文件 】

【 1. 重定向简介 】

  • 大多数 UNIX 系统命令从终端接受输入并将所产生的输出发送回​​到原来输入的终端。一个命令通常从标准输入的地方读取输入,默认情况下,这恰好是你的终端,同样,一个命令通常将其输出写入到标准输出,默认情况下,这也是你的终端。
  • 重定向命令列表如下:
命令作用
command > file默认情况下,将 stdout输出 重定向到 file。
command < file默认情况下,将 stdin输入 重定向到 file。
command >> file将输出以追加的方式重定向到 file。
n > file将文件描述符为 n 的文件重定向到 file。
n >> file将文件描述符为 n 的文件以追加的方式重定向到 file。
n >& m将输出文件 m 和 n 合并。
n <& m将输入文件 m 和 n 合并。
<< tag将开始标记 tag 和结束标记 tag 之间的内容作为输入。
  • 文件描述符 为 0 通常是标准输入(STDIN),为1 是标准输出(STDOUT),为2 是标准错误输出(STDERR)。一般情况下,每个 Unix/Linux 命令运行时都会打开三个文件:
    • 标准输入文件(stdin):stdin的文件描述符为0,程序默认从stdin读取数据。
    • 标准输出文件(stdout):stdout 的文件描述符为1,程序默认向stdout输出数据。
    • 标准错误文件(stderr):stderr的文件描述符为2,程序会向stderr流中写入错误信息。
作用语法
stderr 重定向到 filecommand 2>file
这里的 2 和 > 之间不可以有空格,2> 是一体的时候才表示错误输出。
stderr 追加到 file 文件末尾bashcommand 2>>file
将 stdout 和 stderr 合并后重定向到 filebashcommand > file 2>&1
或者
bashcommand >> file 2>&1
对 stdin 和 stdout 都重定向
(command 命令将 stdin 重定向到 file1,将 stdout 重定向到 file2)
bashcommand < file1 >file2

【 2. 输出重定向 】

  • 输出重定向的符号 是 大于号>,重定向一般通过在命令间插入特定的符号来实现。特别的,这些符号的语法如下所示:
# 执行 command1 然后将输出的内容存入file1,任何 file1内的已经存在的内容将被新内容替代。
# 如果要将新内容添加在文件末尾,需要使用>>操作符。
command1 > file1
  • 实例1:执行 who 命令(显示当前登陆的用户信息),将命令的完整的输出重定向在用户文件中(users)。
who > users

执行后,并没有在终端输出信息,这是因为输出已被从默认的标准输出设备(终端)重定向到指定的文件。可以直接打开 test.sh 查看:
在这里插入图片描述
也可以使用 cat 命令查看文件内容:

cat users

在这里插入图片描述

  • 实例2:如果不希望文件内容被覆盖,可以使用 >> 追加到文件末尾:。
echo "Promethus" >> test.sh

在这里插入图片描述

【 3. 输入重定向 】

  • 和输出重定向一样,也可以从文件获取输入,这样,本来需要从键盘获取输入的命令会转移到文件读取内容。 输入重定向的符号是小于号< 。语法为:
command1 < file1
  • 同时替换输入和输出,执行command1,从文件infile读取内容,然后将输出写入到outfile中。语法为:
command1 < infile > outfile
  • 实例1:
    wl 命令统计 users 文件的行数,
wc -l test.sh

在这里插入图片描述
      将输入重定向到 test.sh 文件:

wc -l < test.sh

在这里插入图片描述
      第一个会输出文件名;第二个不会,因为它仅仅知道从标准输入读取内容。

【 4. Here Document 】

  • Here Document 是 Shell 中的一种特殊的重定向方式,用来 将输入重定向到一个交互式 Shell 脚本或程序
  • 基本的语法如下:
    • 它的作用是 将两个 delimiter 之间的内容 document 作为输入传递给 command
    • 开始的 delimiter 前后的空格会被忽略掉。结尾的 delimiter 一定要顶格写,前面不能有任何字符,后面也不能有任何字符,包括空格和 tab 缩进
command << delimiterdocument
delimiter
  • 实例1:通过 wc -l 命令计算 Here Document 的行数。
wc -l << EOF你好!Promethus
EOF

在这里插入图片描述

  • 实例2:将 Here Document 用在脚本中。
#!/bin/bashcat << EOF
你好!
Promethus
EOF

在这里插入图片描述

【 5. /dev/null 文件 】

  • 如果希望执行某个命令,但又不希望在屏幕上显示输出结果,那么可以将输出重定向到 /dev/null。/dev/null 是一个特殊的文件, 写入到它的内容都会被丢弃,如果尝试从该文件读取内容,那么什么也读不到 。但是 /dev/null 文件非常有用, 将命令的输出重定向到它,会起到 “禁止输出” 的效果
command > /dev/null
  • 实例:屏蔽 stdout 和 stderr。
command > /dev/null 2>&1

相关文章:

【Linux Shell】11. 输入/输出 重定向

文章目录 【 1. 重定向简介 】【 2. 输出重定向 】【 3. 输入重定向 】【 4. Here Document 】【 5. /dev/null 文件 】 【 1. 重定向简介 】 大多数 UNIX 系统命令从终端接受输入并将所产生的输出发送回​​到原来输入的终端。一个命令通常从标准输入的地方读取输入&#xff…...

数据库-简单表的操作And查看表的结构

查看表的结构 desc 表名;mysql> use study; Database changed mysql> create table Class(class_id int ,class_name varchar(128),class_teachar varchar(64)) ; Query OK, 0 rows affected (0.06 sec) mysql> show tables; ----------------- | Tables_in_study…...

<设计模式修炼>模板方法模式的使用场景和注意事项学习

介绍 模板方法模式&#xff08;Template Method Pattern&#xff09;&#xff0c;又叫模板模式(Template Pattern)&#xff0c;在一个抽象类公开定义了执行它的方法的模板。它的子类可以按需要重写方法实现&#xff0c;但调用将以抽象类中定义的方式进行。 2) 简单说&#xff…...

android 分享文件

1.在AndroidManifest.xml 中配置 FileProvider <providerandroid:name"android.support.v4.content.FileProvider"android:authorities"com.example.caliv.ffyy.fileProvider"android:exported"false"android:grantUriPermissions"true…...

UE5 C++(十一)— 碰撞检测

文章目录 代理绑定BeginOverlap和EndOverlapHit事件的代理绑定碰撞设置 代理绑定BeginOverlap和EndOverlap 首先&#xff0c;创建自定义ActorC类 MyCustomActor 添加碰撞组件 #include "Components/BoxComponent.h"public:UPROPERTY(VisibleAnywhere, BlueprintRea…...

时序数据库InfluxDB、TimeScaleDB简介

一、时序数据库作用、优点 1、作用&#xff1a; 时序数据库通常被用在监控场景&#xff0c;比如运维和 IOT&#xff08;物联网&#xff09;领域。这类数据库旨在存储时序数据并实时处理它们。 比如。我们可以写一个程序将服务器上 CPU 的使用情况每隔 10 秒钟向 InfluxDB 中…...

复试 || 就业day05(2024.01.08)项目一

文章目录 前言代码模拟梯度下降构建函数与导函数函数的可视化求这个方程的最小值&#xff08;直接求导&#xff09;求方程最小值&#xff08;不令方程导为0&#xff09;【梯度下降】eta0.1eta 0.2eta 50eta 0.01画出eta0.1时的梯度下降x的变化过程 总结 前言 &#x1f4ab;你…...

基于商品列表的拖拽排序后端实现

目录 一&#xff1a;实现思路 二&#xff1a;实现步骤 二&#xff1a;实现代码 三&#xff1a;注意点 一&#xff1a;实现思路 后台实现拖拽排序通常需要与前端进行配合&#xff0c;对商品的列表拖拽排序&#xff0c;前端需要告诉后端拖拽的元素和拖动的位置。 这里我们假…...

小游戏实战丨基于PyGame的贪吃蛇小游戏

文章目录 写在前面PyGame贪吃蛇注意事项系列文章写在后面 写在前面 本期内容&#xff1a;基于pygame的贪吃蛇小游戏 下载地址&#xff1a;https://download.csdn.net/download/m0_68111267/88700188 实验环境 python3.11及以上pycharmpygame 安装pygame的命令&#xff1a;…...

AOP(面向切面编程)基于XML方式配置

概念解释&#xff1a;&#xff08;理解基本概念方可快速入手&#xff09; 连接点&#xff08;joinpoint&#xff09; 被拦截到的点&#xff0c;因为Spring只支持方法类型的连接点&#xff0c;所以在Spring中连接点指的就是被拦截到的方法。 切入点&#xff08;pointcut&#x…...

多线程的概念

多线程 同时执行多个任务&#xff0c;例如一个人一边听歌&#xff0c;一边跳舞 继承Thread类实现多线程的方式 定义一个MyThread类继承Thread类&#xff0c;重写里面的run方法 package com.itxs.demo01;/*** Classname : MyThread* Description : TODO 自定义线程继承Thread类*…...

DeepPurpose 生物化学深度学习库;蛋白靶点小分子药物对接亲和力预测虚拟筛选

参考: https://blog.csdn.net/c9Yv2cf9I06K2A9E/article/details/107649770 https://github.com/kexinhuang12345/DeepPurpose ##安装 pip install DeepPurpose rdkitDeepPurpose包括: 数据: 关联TDC库下载,是同一作者开发的 https://blog.csdn.net/weixin_42357472/artic…...

Java实现责任链模式

责任链模式是一种设计模式&#xff0c;用于处理请求的解耦。在责任链模式中&#xff0c;多个对象都有机会处理请求&#xff0c;从而避免了请求发送者和接收者之间的直接依赖关系。每个处理者都可以决定是否处理请求以及将请求传递给下一个处理者。 简介 责任链模式由一条链组…...

rabbitmq延时队列相关配置

确保 RabbitMQ 的延时消息插件已经安装和启用。你可以通过执行以下命令来安装该插件&#xff1a; rabbitmq-plugins enable rabbitmq_delayed_message_exchange 如果提示未安装&#xff0c;以下是安装流程&#xff1a; 查看mq版本&#xff1a; 查看自己使用的 MQ&#xff08;…...

【工具】推荐一个好用的代码画图工具

PlantUML 官网地址&#xff1a;https://plantuml.com/zh/ 跳转 支持各种结构化数据画图支持代码调用jar包生成图片 提供在线画图能力 https://www.plantuml.com/plantuml/uml/SyfFKj2rKt3CoKnELR1Io4ZDoSa70000 有兴趣可以尝试下 over~~...

Leetcode14-判断句子是否为全字母句(1832)

1、题目 全字母句 指包含英语字母表中每个字母至少一次的句子。 给你一个仅由小写英文字母组成的字符串 sentence &#xff0c;请你判断 sentence 是否为 全字母句 。 如果是&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 示例 1&#xff1a; 输入&am…...

HTTP和TCP代理原理及实现,主要是理解

Web 代理是一种存在于网络中间的实体&#xff0c;提供各式各样的功能。现代网络系统中&#xff0c;Web 代理无处不在。我之前有关 HTTP 的博文中&#xff0c;多次提到了代理对 HTTP 请求及响应的影响。今天这篇文章&#xff0c;我打算谈谈 HTTP 代理本身的一些原理&#xff0c;…...

MySQL中的连接池

数据库的连接池 1 &#xff09;概述 网站连接数据库&#xff0c;为庞大用户的每次请求创建一个连接是不合适的关闭并重新连接的成本是很大的处理方法&#xff1a;设置最大值, 最小值, 设置最多闲置连接&#xff0c;设置等待阻塞 2 &#xff09;示例演示 import threading i…...

css计时器 animation实现计时器延时器

css计时器 animation实现计时器延时器 缺点当切页面导航会休眠不执行 最初需求是一个列表每个项目都有各自的失效时间 然后就想到 计时器延时器轮询等方案 这些方案每一个都要有自己的计时器 感觉不是很好 轮询也占资源 然后突发奇想 css能不能实现 开始想到的是transition测…...

【win11 绕过TPM CPU硬件限制安装】

Qt编程指南 VX&#xff1a;hao541022348 ■ 下载iso文件■ 右键文件点击装载出现如下问题■ 绕过TPM CPU硬件限制安装方法■ 虚拟机安装win11 ■ 下载iso文件 选择Windows11 &#xff08;multi-edition ISO&#xff09;在选择中文 ■ 右键文件点击装载出现如下问题 ■ 绕过T…...

k8s的yaml文件中的kind类型都有哪些?(清单版本)

在操作kubernetes的过程中&#xff0c;我们接触到的yaml文件中的kind类型有很多。他们代表了kubernetes的不同类型的对象&#xff0c;了解了kind的类型&#xff0c;也就相当于了解了k8s都有哪些类型的对象。 类型清单及概要说明 序号类型简述1Pod一个Kubernetes中最基本的资源…...

Jetpack Room使用

Room使用 回顾 数据库有多张表&#xff0c;一张表只能记录一种Class&#xff0c;Class的具体属性是这个表的列&#xff1b;所有对表的操作都要通过Dao来访问 注解说明&#xff1a; Enity 作用于Class上&#xff0c;表示创建一张表记录该Class&#xff0c;Class内部属性使用…...

HarmonyOS应用开发之ArkTS语言学习记录

1、ArkTS介绍 ArkTS是鸿蒙生态的应用开发语言。它在保持TypeScript&#xff08;简称TS&#xff09;基本语法风格的基础上&#xff0c;对TS的动态类型特性施加更严格的约束&#xff0c;引入静态类型。同时&#xff0c;提供了声明式UI、状态管理等相应的能力&#xff0c;让开发者…...

windows 下 mongodb6.0 导入导出json文件

1.运行cmd窗口&#xff0c;进入MongoDB安装路径下的bin文件下&#xff0c;输入以下命令导入数据文件 mongoimport --host 127.0.0.1 --port 27017 --db <数据库名称&#xff0c;根据自个情况> -c <集合名称&#xff0c;自定义> --file <导入文件的路径名> …...

如何给 unplugin-vue-components/vite 写一个简单的 resolver

大部分工作 unplugin-vue-components 都已经处理好了, 我们只需要接收组件名来判断是否是自己的组件, 然后处理对应的导入逻辑。 一共 3 个字段 as 重命名类似 import { componentNameReName } from ‘xxxx’name 组件名 import { componentName } from ‘xxxx’from 导入路径…...

MYSQL篇--索引高频面试题

mysql索引 1什么是索引&#xff1f; 索引说白了就是一种数据结构&#xff0c;可以协助快速查询数据&#xff0c;以及更新数据库表中的数据&#xff0c;更通俗的来说索引其实就是目录&#xff0c;通过对数据建立索引形成目录&#xff0c;便于去查询数据&#xff0c;而mysql索引…...

视频号小店怎么上架商品?实操分享,干货满满!

我是电商珠珠 视频号小店从22年7月到现在也不过才发展了一年&#xff0c;它的风口才刚刚开始。 平台为了吸引商家入驻&#xff0c;会将大量红利向商家倾斜&#xff0c;只要把握住风口&#xff0c;就会很快起飞。 视频号小店对于很多人来说&#xff0c;都是新平台&#xff0c…...

Python 常用数据类型

Python 常用数据类型有以下这些&#xff1a; 数据类型中文解析例子int整数&#xff0c;表示整数值1、2float浮点数&#xff0c;表示带有小数点的数值3.14、2.718complex复数&#xff0c;表示实部和虚部组成的复数12j、3-4jstr字符串&#xff0c;表示文本数据&#xff0c;用引号…...

基于yolov2深度学习网络的车辆行人检测算法matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 MATLAB2022a 3.部分核心程序 .......................................................... load yolov2.mat% 加载训练好的…...

【QT】中英文切换

很高兴在雪易的CSDN遇见你 前言 本文分享QT中如何进行中英文切换&#xff0c;希望对各位小伙伴有所帮助&#xff01; 感谢各位小伙伴的点赞关注&#xff0c;小易会继续努力分享&#xff0c;一起进步&#xff01; 你的点赞就是我的动力(&#xff3e;&#xff35;&#xff3e…...

设计公司网站设计/推广赚钱一个2元

1. 什么是列表列表由一系列按特定顺序排列的元素组成。例如包含所有英文字母的列表&#xff0c;包含班级所有同学姓名的列表&#xff0c;包含你的所有朋友的列表等等。当然列表元素也可以毫无关系&#xff0c;只是一系列数据。Python中用方括号 "[ ]" 表示列表&#…...

专业的家居行业网站开发/百度推广渠道户

公司配置一台4C4GB500GB的机器&#xff0c;内存小了点&#xff0c;为了加快当前项目的迭代速度&#xff0c;加装了一根8GB内存&#xff0c;反正放在家里也是闲着&#xff0c;物尽其用白。...

b2b网站建设注意事项/龙泉驿网站seo

adb即 Android Debug Bridge 是一个通用的命令行工具&#xff0c;可用于通过PC端对连接的Android模拟器设备或连接至电脑的真实物理设备进行命令行操作。目前&#xff0c;许多软件均会借助 adb 工具与移动终端进行交互。这里以 Android Studio 中带有的 adb 工具为例&#xff0…...

做注册任务赚钱的网站/跨境电商怎么做

前几天发布了以串口调试为主的通讯测试工具&#xff0c;今天开始发布Modbus测试工具(Modbus Slave调试工具)&#xff0c;明天发布Modbus测试工具(Modbus Master调试工具)。Modbus Slave调试工具&#xff0c;自然是用来模拟Modbus设备的工具&#xff0c;主要用来模拟Modbus从站设…...

长春二手房/营销网站优化推广

搜索专题的最后一块了&#xff0c;也告别了这些老的东西了 接下来就是些全新的内容了啊&#xff01; 这次的标签是简单搜索技巧和剪枝&#xff0c;也就是优化爆搜 当然&#xff0c;像Dancing links这样的玄学操作还是没有的 2531 题意&#xff1a;给你n个点&#xff0c;你可以把…...

高质量的邯郸网站建设/seo教程书籍

17Tech 消息&#xff1a;瑞星程序员自曝内幕&#xff1a;“瑞星2007程序核心部分内部机密&#xff0c;现在告诉大家&#xff0c;我辞职了” 瑞星2007程序核心部分内部机密&#xff0c;现在告诉大家&#xff0c;我辞职了 我辞职的原因是因为瑞星总部,已经没有精英在了&#xff0…...