第15章 呈现数据

news2024/12/25 9:18:16

在这里插入图片描述
默认情况下,大多数bash命令会将输出导向STDOUT文件描述符。
在这里插入图片描述
数据追加到某个文件用>> 符号来完成。
在这里插入图片描述
who命令生成的输出会被追加到test2文件中已有数据的后面。

只重定向错误STDERR文件描述符被设成2。可以选择只重定向错误消息,将该文件描述符值放在重定向符号前。该值必须紧紧地放在重定向符号前。用这种方法, shell会只重定向错误消息,而非普通数据。
在这里插入图片描述
由于该命令将文件描述符2的输出( STDERR)重定向到了一个输出文件, shell会将生成的所有错误消息直接发送到指定的重定向文件中。

如果想 重定向错误正常输出,必须用两个重定向符号。需要在符号前面放上待重定向数据所对应的文件描述符,然后指向用于保存数据的输出文件。
在这里插入图片描述
shell利用1>符号将ls命令的正常输出重定向到了test7文件,而这些输出本该是进入STDOUT
的。所有本该输出到STDERR的错误消息通过2>符号被重定向到了test6文件。

用特殊的重定向符号&>将STDERR和STDOUT的输出重定向到同一个输出文件。
在这里插入图片描述
相较于标准输出, bash shell自动赋予了错误消息更高的优先级。

临时重定向

使用输出重定向符来将输出信息重定向到STDERR文件描述符。在重定向到文件描述符时,你
必须在文件描述符数字之前加一个&
在这里插入图片描述

这行会在脚本的STDERR文件描述符所指向的位置显示文本。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在脚本中重定向输入

exec命令允许你将STDIN重定向到Linux系统上的文件中:

exec  0<  testfile

从文件testfile中获得输入,而不是STDIN。这个重定向只要在脚本需要输入时就会作用。
在这里插入图片描述
这个脚本用exec命令将文件描述符3重定向到另一个文件。当脚本执行echo语句时,输出内
容会像预想中那样显示在STDOUT上。但你重定向到文件描述符3的那行echo语句的输出却进入
了另一个文件。这样你就可以在显示器上保持正常的输出,而将特定信息重定向到文件中(比如
日志文件)。

也可以不用创建新文件,而是使用exec命令来将输出追加到现有文件中。
exec 3>>test13out
输出会被追加到test13out文件,而不是创建一个新文件。

临时重定向输出,然后恢复默认输出设置的常用方法。
在这里插入图片描述
在这里插入图片描述
首先,脚本将文件描述符3重定向到文件描述符1的当前位置,也就是STDOUT。这意味着任何发送给文件描述符3的输出都将出现在显示器上。第二个exec命令将STDOUT重定向到文件, shell现在会将发送给STDOUT的输出直接重定向到输出文件中。但是,文件描述符3仍然指向STDOUT原来的位置,也就是显示器。如果此时将输出数据发送给文件描述符3,它仍然会出现在显示器上,尽管STDOUT已经被重定向了。
在向STDOUT(现在指向一个文件)发送一些输出之后,脚本将STDOUT重定向到文件描述符
3的当前位置(现在仍然是显示器)。这意味着现在STDOUT又指向了它原来的位置:显示器

创建输入文件描述符

exec 6<&0
exec 0< testfile
count=1
while read line
do
echo "Line #$count: $line"
count=$[ $count + 1 ]
Done
exec 0<&6
read -p "Are you done now? " answer
case $answer in
Y|y) echo "Goodbye";;
N|n) echo "Sorry, this is the end.";;
esac

文件描述符6用来保存STDIN的位置。然后脚本将STDIN重定向到一个文件。
read命令的所有输入都来自重定向后的STDIN(也就是输入文件)。
在读取了所有行之后,脚本会将STDIN重定向到文件描述符6,从而将STDIN恢复到原先的
位置。用另外一个read命令来测试STDIN是否恢复正常。这次它会等待键盘的输入。

在Linux系统上null文件的标准位置是/dev/null。你重定向到该位置的任何数据都会被丢掉,
不会显示。
清除日志文件的一个常用方法,因为日志文件必须时刻准备等待应用程序操作。
在这里插入图片描述
Linux系统有特殊的目录,专供临时文件使用。 Linux使用/tmp目录来存放不需要永久保留的
文件。大多数Linux发行版配置了系统在启动时自动删除/tmp目录的所有文件。
系统上的任何用户账户都有权限在读写/tmp目录中的文件。这个特性为你提供了一种创建临
时文件的简单方法,而且还不用操心清理工作。
mktemp命令可以在/tmp目录中创建一个唯一的临时文件。

将输出同时发送到显示器和日志文件。用特殊的tee命令就行。
tee命令相当于管道的一个T型接头。它将从STDIN过来的数据同时发往两处。一处是
STDOUT,另一处是tee命令行所指定的文件名
在这里插入图片描述

可以用它配合管道命令来重定向命令输出。
在这里插入图片描述
在这里复习一下管道命令。

管道命令

在命令行环境下,管道命令(Pipeline)是一种非常有用的技术,它允许将多个命令连接起来,其中一个命令的输出作为另一个命令的输入。这样可以实现数据流的传递和处理,提高命令行的灵活性和效率。

在大多数类Unix系统(如Linux、macOS)中,管道命令使用竖线符号 | 表示。下面是一些常见的管道命令的示例:

  1. 简单的管道:

    command1 | command2
    

    这个命令将 command1 的输出作为 command2 的输入。command1 执行完毕后,将其输出传递给 command2 进行处理。

  2. 过滤和排序:

    cat file.txt | grep "keyword" | sort
    

    这个命令将 file.txt 文件的内容传递给 grep 命令进行关键字过滤,然后将过滤结果传递给 sort 命令进行排序。

  3. 统计命令输出:

    ls -l | wc -l
    

    这个命令将 ls -l 命令的输出传递给 wc -l 命令进行行数统计,从而得到文件或目录的数量。

  4. 多重管道:

    command1 | command2 | command3
    

    这个命令将 command1 的输出传递给 command2,再将 command2 的输出传递给 command3。可以通过多个管道命令连接多个命令。

通过使用管道命令,可以将多个简单的命令组合起来,实现更复杂的数据处理和操作。管道命令在命令行环境下非常灵活和强大,可以大大提高命令行的效率和便利性。

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

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

相关文章

day02_springboot综合案例

day02_springboot综合案例 订单操作 查询所有订单 查询所有订单流程 查询订单&#xff0c;要把订单对应的产品也要查出来 Orders实体类 Data public class Orders {private String id;private String orderNum;DateTimeFormat(pattern"yyyy-MM-dd HH:mm")privat…

多线程面试题--线程安全

synchronized关键字的底层原理 基础版 当我们对代码就行反编译&#xff0c;会发现其实synchronized就是monitor Monitor 假如现在有一个线程过来了&#xff0c;要执行当前代码&#xff0c;会执行到synchronized (lock)&#xff0c;lock是一个对象锁。首先会让这个lock对象和m…

Clion开发stm32之微妙延迟(采用nop指令实现)

前言 需要借助逻辑分析仪动态调整参数此次测试的开发芯片为stm32f103vet6 延迟函数 声明 #define NOP_US_DELAY_MUL_CNT 5 /*nop 微妙延迟需要扩大的倍数(根据实际动态修改)*/ void bsp_us_delay_nop(uint32_t us);void bsp_ms_delay_nop(uint32_t ms);定义 void bsp_us_dela…

【深度学习】yolov5以及yolov8的微调后的模型精度对比

文章目录 前言1. 训练1.1 yolov5 的 yolov5m61.2 yolov5 的 yolov5l61.3 yolov8 的训练 结论&#xff1a; 前言 做了一个烟火识别&#xff0c;用了2W张图片&#xff0c;标注包括&#xff1a;fire&#xff0c;smoke 。在coco80类的模型上进行ft&#xff0c; 借此机会进行比较一…

koa2 从0使用mysql2做第一个接口

全局安装Koa命令行工具: npm install -g koa/cli 2. 创建新项目: koa new my-app 这将生成如下目录结构: my-app ├── app.js ├── package.json └── src └── index.js 3. 安装依赖: cd my-app npm install 4. 启动项目: npm start 5.安装mysql2 yarn add…

升级JDK17问题记录

1. 放开标准库的模块访问限制 Jdk9模块后, 有些类访问, 需要通过如下配置打开访问权限 --add-opensjava.base/jdk.internal.miscALL-UNNAMED --add-opensjava.base/java.langALL-UNNAMED --add-opensjava.base/java.utilALL-UNNAMED --add-opensjava.base/java.lang.refle…

加载数据集

批量梯度下降法&#xff08;Batch Gradient Descent&#xff0c;BGD&#xff09;&#xff1a;在更新参数时&#xff0c;BGD根据batch中的所有样本对参数进行更新。&#xff08;计算速度快&#xff09; 随机梯度下降法&#xff08;Stochastic Gradient Descent&#xff0c;SGD&…

实训笔记7.21

实训笔记7.21 7.21一、MapReduce编程代码的打包问题与大数据集群环境中运行问题1.1 MR程序在运行的时候&#xff0c;job提交作业的时候会自动识别我们的运行环境&#xff0c;如果我们是在windows本地运行的话&#xff0c;MR程序识别的环境未LocalRunner这么一个环境&#xff0c…

王道考研数据结构--4.2循环队列

目录 前言 1.循环队列的定义 2.循环队列的结构 3.循环队列的操作 3.1定义循环队列 3.2初始化 3.3入队 3.4出队 3.5遍历&#xff0c;求表长 3.6清空销毁 4.完整代码 前言 日期&#xff1a;2023.7.25 书籍&#xff1a;2024年数据结构考研复习指导&#xff08;王道考研…

MySQL 中一条 SQL 的查询与更新

MySQL 中一条 SQL 的查询与更新 1 SQL 的查询1.1 MySQL 的逻辑架构图1.2 连接器1.3 查询缓存1.4 分析器1.5 优化器1.6 执行器 2 SQL 的更新2.1 redo log&#xff08;重做日志&#xff09;2.2 binlog&#xff08;归档日志&#xff09;2.3 redo log 和 binlog 日志的差异2.4 示例…

【Java SE】类和对象

目录 【1】面向对象的初步认识 【1.1】什么是面向对象 【1.2】面向对象与面向过程 【2】类定义和使用 【2.1】简单认识类 【2.2】类的定义格式 【2.3】练习 【2.3.1】定义一个狗类 【2.3.2】定义一个学生类 【3】类的实例化 【3.1】什么是实例化 【3.2】类和对象的…

Acwing.282 石子合并(动态规划)

题目 设有N堆沙子排成一排&#xff0c;其编号为1&#xff0c;2&#xff0c;3&#xff0c;…&#xff0c;N。 每堆沙子有一定的质量&#xff0c;可以用一个整数来描述&#xff0c;现在要将这N堆沙子合并成为一堆。 每次只能合并相邻的两堆&#xff0c;合并的代价为这两堆沙子的…

应用层协议——http

文章目录 1. HTTP协议1.1 认识URL1.2 urlencode和urldecode1.3 HTTP协议格式1.3.1 HTTP请求1.3.2 HTTP响应1.3.3 外网测试1.3.4 添加html文件1.3.5 HTTP常见Header1.3.6 GET和POST 1.4 HTTP的状态码1.4.1 301和3021.4.2 代码实现 1.5 Cookie1.5.1 代码验证1.5.2 Cookiesession …

【Nodejs】Puppeteer\爬虫实践

puppeteer 文档:puppeteer.js中文文档|puppeteerjs中文网|puppeteer爬虫教程 Puppeteer本身依赖6.4以上的Node&#xff0c;但是为了异步超级好用的async/await&#xff0c;推荐使用7.6版本以上的Node。另外headless Chrome本身对服务器依赖的库的版本要求比较高&#xff0c;c…

海外网红营销合作指南:详解海外合同与协议要点

随着互联网的发展和社交媒体的普及&#xff0c;海外网红营销成为了品牌推广和营销的重要力量。然而&#xff0c;这种跨国合作需要谨慎考虑&#xff0c;签订合适的合同与协议显得尤为重要&#xff0c;以确保各方权益得到保障并促进合作的顺利进行。本文Nox聚星将详细介绍与海外网…

Stable Diffusion - 扩展 Segment Anything 和 GroundingDINO 实例分割算法 插件的配置与使用

欢迎关注我的CSDN&#xff1a;https://spike.blog.csdn.net/ 本文地址&#xff1a;https://blog.csdn.net/caroline_wendy/article/details/131918652 Paper and GitHub&#xff1a; Segment Anything: SAM - Segment Anything GitHub: https://github.com/facebookresearch/s…

学习机器视觉要点:

图像采集&#xff1a;了解镜头、光源、相机选型&#xff0c;打光对图像质量的重要性。 图像处理&#xff1a;掌握压缩、增强、匹配、识别等图像处理技术&#xff0c;包括滤波、连通域、腐蚀膨胀等基本操作。 矩视智能低代码平台&#xff1a;使用该平台进行快速开发&#xff0…

mac电脑强大的解压缩软件BetterZip 5.3.4 for Mac中文版及betterzip怎么压缩

BetterZip 5.3.4 for Mac 是Mac系统平台上一款功能强大的文件解压缩软件&#xff0c;不必解压就能快速地检查压缩文档。它能执行文件之间的合并并提供密码。使用它&#xff0c;用户可以更快捷的向压缩文件中添加和删除文件。它支持包括zip、gz、bz、bz2、tar、tgz、tbz、rar、7…

华为数通HCIA-数通网络基础

基础概念 通信&#xff1a;两个实体之间进行信息交流 数据通信&#xff1a;网络设备之间进行的通信 计算机网络&#xff1a;实现网络设备之间进行数据通信的媒介 园区网络&#xff08;企业网络&#xff09;/私网/内网&#xff1a;用于实现园区内部互通&#xff0c;并且需要部…

Python实现人脸识别功能

Python实现人脸识别功能 闲来没事&#xff0c;记录一下前几天学习的人脸识别小项目。 要想实现人脸识别&#xff0c;我们首先要搞明白&#xff0c;人脸识别主要分为哪些步骤&#xff1f;为了提高人脸识别的准确性&#xff0c;我们首先要把图像或视频中的人脸检测出来&#xf…