Linux的输出、输入重定向和管道
目录
输出重定向
输入重定向
<
<<
管道操作
输出重定向
当我输⼊⼀个命令之后,回⻋,命令产⽣了结果,结果默认是输出到屏幕上的。
默认情况,⽆论⼀个命令执⾏正确与否,结果都会默认输出到屏幕上。
在有些情况下,我可能需要保留命令或脚本输出的结果。当作log,用作后面分析。
cat /cat /etc/hosts 产生的结果是正确的,我们可以使用 > 和 >> 见这个命令的正确结果输出到一个文件中
[root@bogon ~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
[root@bogon ~]# cat /etc/hosts > /root/file1
[root@bogon ~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
[root@bogon ~]# cat file1
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
cat /etc/hosts > /root/file1 就是将 > 前面命令的结果送到 /root/file1 文件中,而不是屏幕上。
-
>和>>:是正确的重定向,能将正确的结果重定向到⽂件中,区别是>会将指向的⽂件内容完全覆盖>>会将重定向的内容追加到指定的⽂件,>就是正确的覆盖,>>就是正确的追加 -
2>:就是错误的覆盖 -
2>>:就是错误的追加 -
&>:正确错误都覆盖 -
&>>:正确错误都追加 -
&>> /dev/null:/dev/null是⼀个特殊的⽂件,如果将重定向指向这个⽂件,那么就相当于将执⾏结果送到⿊洞中。直接没了,有些时候,我们不想让这个命令的输出显示到任何地⽅,就送到⿊洞中。
输入重定向
可以将交互式命令变成非交互式命令
<
<和<<的作用完全不一样
< 可以将<前命令需要执行后产生需要进行交互的内容,通过后面文本中预先写好的内容进行操作,这个看起来很是鸡肋,但是在编写shell脚本是不可缺少的。
为了刚明显的看出,举个实例:
## 编辑一个1.txt文件,在里面写入一些内容
[root@bogon ~]# cat 1.txt
helld world!!!## 在2.txt写入y,表示yes
[root@bogon ~]# echo y > 2.txt
[root@bogon ~]# cat 2.txt
y## 编辑3.txt文件,在里面写一些不同于1.txt的内容
[root@bogon ~]# cat 3.txt
I love the world!!!## 将1.txt文件中的内容覆盖到3.txt文件中,会显示"cp: overwrite '3.txt'? ",只需要输入y,就能将1.txt的内容已经覆盖3.txt文件
[root@bogon ~]# cp 1.txt 3.txt
cp: overwrite '3.txt'? y
[root@bogon ~]# cat 3.txt
helld world!!!## 重新对3.txt进行编写
[root@bogon ~]# cat 3.txt
I love the world!!!## 如果使用输入重定向,就可以不用手动输入y,可以将2.txt中的内容,进行输出,直接完成结果
[root@bogon ~]# cp 1.txt 3.txt < 2.txt
cp: overwrite '3.txt'? [root@bogon ~]# cat 3.txt
helld world!!!
<<
一般是和cat进行连用
当执行一个单个的cat时候,会进入到交互界面,退出时执行使用 Ctrl+C 进行终止,但是使用 << 就可以手动进行终止
在<<后面写入的内容,会作为结束的标志,进行退出
[root@bogon ~]# cat << qqq
> nihao
> hello
> aaaa
> adsad
> qqq
nihao
hello
aaaa
adsad
[root@bogon ~]#
在<<后面些qqq之后,在cat界面,输入qqq之后,就会执行出现在前方写入的内容,紧接着就会退出cat的交互式界面
这种方式多使用在脚本编写中,可以将内容输入到指定的文件中,一般情况下<<之后写的是END,这里便于理解,就随便写了一串字母
[root@bogon ~]# cat > 4.txt << ooo
> aaaa
> bbbb
> ccccasd
> aasdexffd
> ooo
[root@bogon ~]# cat 4.txt
aaaa
bbbb
ccccasd
aasdexffd
[root@bogon ~]#
管道操作
管道的符号是 |
⽂件管理⾥⾯⽐较重要的内容
管道左边的命令会产⽣输出结果,输出结果经过了管道之后,就会变成输⼊。
管道右边的命令,总是接收输⼊的命令
[root@bogon ~]# cat hello.txt
How are you?
what are you doing?
## 查看hello.txt中的内容,并把所有字母转变为大写
[root@bogon ~]# cat hello.txt | tr 'a-z' 'A-Z'
HOW ARE YOU?
WHAT ARE YOU DOING?
## 转变为大写之后,输出,并保存到hello2.txt文件中
[root@bogon ~]# cat hello.txt | tr 'a-z' 'A-Z' | tee hello2.txt
HOW ARE YOU?
WHAT ARE YOU DOING?
[root@bogon ~]# cat hello2.txt
HOW ARE YOU?
WHAT ARE YOU DOING?
## 查找hello2.txt中有HOW的内容
[root@bogon ~]# cat hello2.txt | grep HOW
HOW ARE YOU?
## 显示有HOW内容的行数
[root@bogon ~]# cat hello2.txt | grep HOW | wc -l
1
相关文章:
Linux的输出、输入重定向和管道
目录 输出重定向 输入重定向 < << 管道操作 输出重定向 当我输⼊⼀个命令之后,回⻋,命令产⽣了结果,结果默认是输出到屏幕上的。 默认情况,⽆论⼀个命令执⾏正确与否,结果都会默认输出到屏幕上。 在有…...
java-新手笔记(枚举)
枚举(Enumeration)是一种特殊的类,用于表示固定数量的常量值。 枚举类型使得代码更加清晰,易于维护,同时也增加了类型安全。 这边使用一个枚举封装重要数据 enum Day {SUNDAY,MONDAY,TUESDAY,WEDNESDAY,THURSDAY,FR…...
Centos7 安装postgresql14后无法连接数据库
1、数据库服务器允许外部访问5432端口。 2、postgresql.conf 3、pg_hba.conf a、制定某个IP(192.168.0.107)访问 b、指定ip段访问 允许10.1.1.0~10.1.1.255网段登录数据库 host all all 10.1.1.0/24 trust c、指定全网访问 host a…...
GaussDB(DWS)运维利刃:TopSQL工具解析
在生产环境中,难免会面临查询语句出现异常中断、阻塞时间长等突发问题,如果没能及时记录信息,事后就需要投入更多的人力及时间成本进行问题的定位和解决,有时还无法定位到错误出现的地方。在本期《GaussDB(DWS)运维利刃࿱…...
信息安全、网络安全以及数据安全三者之间的区别
随着信息技术的飞速发展,网络安全、信息安全、数据安全等词汇在平时出现的频率越来越高,尤其是数据安全,是大家都关心的一个重要话题。事实上,有很多人对网络安全、信息安全、数据安全的概念是区分不清的,下面由我帮大…...
初阶数据结构之---堆的应用(堆排序和topk问题)
引言 上篇博客讲到了堆是什么,以及堆的基本创建和实现,这次我们再来对堆这个数据结构更进一步的深入,将讲到的内容包括:向下调整建堆,建堆的复杂度计算,堆排序和topk问题。话不多说,开启我们今…...
架构师面试100问?
面试架构师时,需要考察广泛的知识领域,包括技术、架构设计、团队管理、沟通能力等方面。以下是一些可能的面试问题,涵盖了多个方面问题: 介绍一下你的技术背景和经验。你在之前的项目中扮演过哪些角色?你对微服务架构…...
visualization_msgs::Marker 的pose设置,map坐标系的3d box显示问题
3D框显示 3D框显示可以使用visualization_msgs::Marker::LINE_LIST或者LINE_STRIP,前者使用方法需要指明线的两个端点,后者自动连接相邻两个点。 姿态问题 网上看了一些,没有涉及到朝向设置,Pose.orientation默认构造为4个0 至…...
c语言:输入定制
输入定制 任务描述 输入数据是一大串数字,要求读取五个数,但要求你只处理其中的第1、3、5个数,输出这三个数的和。第一个数只读1位数,第二个数只读2位数,第三个数只读3位数,第四个数只读4位数,…...
Python批量提取Word文档表格数据
在大数据处理与信息抽取领域中,Word文档是各类机构和个人普遍采用的一种信息存储格式,其中包含了大量的结构化和半结构化数据,如各类报告、调查问卷结果、项目计划等。这些文档中的表格往往承载了关键的数据信息,如统计数据、项目…...
【Qt】四种绘图设备详细使用
绘图设备有4个: 绘图设备是指继承QPainterDevice的子类—QPixmap QImage QPicture QBitmap(黑白图片) QBitmap——父类QPixmapQPixmap图片类,主要用来显示,它针对于显示器显示做了特殊优化,依赖于平台的,只能在主线程中使用(UI线…...
区块链web3智能合约Solidity学习资源整理
简单说明: Solidity 是一门面向合约的、为实现智能合约而创建的高级编程语言。这门语言受到了 C,Python 和 Javascript 语言的影响,设计的目的是能在以太坊虚拟机(EVM)上运行。 Solidity中文官方文档: ht…...
python学习、开发实用文档分享
今天给大家分享两个好用的关于python django框架使用的在线文档 Django中文在线文档: Django 文档 | Django 文档 | Django django rest framework 文档 1 - Serialization - Django REST framework中文站点 有开发和学习中遇到不会的, 或者需要学习的技能点直接去上面两个…...
Docker compose部署redis哨兵集群
Docker compose部署redis哨兵集群 安装Docker和docker-compose准备docker-compose文件redis exporter本地部署准备Redis配置文件ACL用户权限配置Linux内核参数优化启停Redis实例主从复制配置 环境准备: IP版本角色172.x.x.11RHEL 7.9master172.x.x.12RHEL 7.9repli…...
Python 导入Excel三维坐标数据 生成三维曲面地形图(面) 4-1、线条平滑曲面(原始图形)
环境和包: 环境 python:python-3.12.0-amd64包: matplotlib 3.8.2 pandas 2.1.4 openpyxl 3.1.2 scipy 1.12.0 代码: import pandas as pd import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D from scipy.interpolate import griddata fro…...
有趣的数学 毕达哥拉斯定理
随便找个学生,让他举出一位著名的数学家——如果他能想到的话,他往往会选择毕达哥拉斯。如果不是,也许他想到的是阿基米德。哪怕是杰出的艾萨克牛顿,在两位古代世界的巨星面前也只能叨陪末座了。阿基米德是一位思想巨人࿰…...
理解记忆相关
foreach循环 在 Java 中,foreach 循环(也称为增强型 for 循环)是一种简洁的语法,用于遍历数组或集合(如 List、Set、Map 等)。以下是 foreach 循环的基本用法: 遍历数组: String[] …...
零基础学习JS--基础篇--使用对象
JavaScript 的设计是一个简单的基于对象的范式。一个对象就是一系列属性的集合,一个属性包含一个名和一个值。一个属性的值可以是函数,这种情况下属性也被称为方法。除了浏览器里面预定义的那些对象之外,你也可以定义你自己的对象。本章节讲述…...
DHCP中继实验(华为)
思科设备参考:DHCP中继实验(思科) 一,技术简介 DHCP中继,可以实现在不同子网和物理网段之间处理和转发DHCP信息的功能。如果DHCP客户机与DHCP服务器在同一个物理网段,则客户机可以正确地获得动态分配的IP…...
【数据结构】初识二叉搜索树(Binary Search Tree)
文章目录 1. 二叉搜索树的概念2. 二叉搜索树的操作1.1 二叉搜索树的查找1.2 二叉搜索树的插入1.3 二叉搜索树的删除 1. 二叉搜索树的概念 二叉搜索树又称二叉排序树,它可能是一棵空树,也可能是具有以下性质的二叉树: 若它的左子树不为空&am…...
springboot 百货中心供应链管理系统小程序
一、前言 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,百货中心供应链管理系统被用户普遍使用,为方…...
Lombok 的 @Data 注解失效,未生成 getter/setter 方法引发的HTTP 406 错误
HTTP 状态码 406 (Not Acceptable) 和 500 (Internal Server Error) 是两类完全不同的错误,它们的含义、原因和解决方法都有显著区别。以下是详细对比: 1. HTTP 406 (Not Acceptable) 含义: 客户端请求的内容类型与服务器支持的内容类型不匹…...
ES6从入门到精通:前言
ES6简介 ES6(ECMAScript 2015)是JavaScript语言的重大更新,引入了许多新特性,包括语法糖、新数据类型、模块化支持等,显著提升了开发效率和代码可维护性。 核心知识点概览 变量声明 let 和 const 取代 var…...
基于Flask实现的医疗保险欺诈识别监测模型
基于Flask实现的医疗保险欺诈识别监测模型 项目截图 项目简介 社会医疗保险是国家通过立法形式强制实施,由雇主和个人按一定比例缴纳保险费,建立社会医疗保险基金,支付雇员医疗费用的一种医疗保险制度, 它是促进社会文明和进步的…...
WordPress插件:AI多语言写作与智能配图、免费AI模型、SEO文章生成
厌倦手动写WordPress文章?AI自动生成,效率提升10倍! 支持多语言、自动配图、定时发布,让内容创作更轻松! AI内容生成 → 不想每天写文章?AI一键生成高质量内容!多语言支持 → 跨境电商必备&am…...
汇编常见指令
汇编常见指令 一、数据传送指令 指令功能示例说明MOV数据传送MOV EAX, 10将立即数 10 送入 EAXMOV [EBX], EAX将 EAX 值存入 EBX 指向的内存LEA加载有效地址LEA EAX, [EBX4]将 EBX4 的地址存入 EAX(不访问内存)XCHG交换数据XCHG EAX, EBX交换 EAX 和 EB…...
全志A40i android7.1 调试信息打印串口由uart0改为uart3
一,概述 1. 目的 将调试信息打印串口由uart0改为uart3。 2. 版本信息 Uboot版本:2014.07; Kernel版本:Linux-3.10; 二,Uboot 1. sys_config.fex改动 使能uart3(TX:PH00 RX:PH01),并让boo…...
C++ Visual Studio 2017厂商给的源码没有.sln文件 易兆微芯片下载工具加开机动画下载。
1.先用Visual Studio 2017打开Yichip YC31xx loader.vcxproj,再用Visual Studio 2022打开。再保侟就有.sln文件了。 易兆微芯片下载工具加开机动画下载 ExtraDownloadFile1Info.\logo.bin|0|0|10D2000|0 MFC应用兼容CMD 在BOOL CYichipYC31xxloaderDlg::OnIni…...
Docker 本地安装 mysql 数据库
Docker: Accelerated Container Application Development 下载对应操作系统版本的 docker ;并安装。 基础操作不再赘述。 打开 macOS 终端,开始 docker 安装mysql之旅 第一步 docker search mysql 》〉docker search mysql NAME DE…...
【Redis】笔记|第8节|大厂高并发缓存架构实战与优化
缓存架构 代码结构 代码详情 功能点: 多级缓存,先查本地缓存,再查Redis,最后才查数据库热点数据重建逻辑使用分布式锁,二次查询更新缓存采用读写锁提升性能采用Redis的发布订阅机制通知所有实例更新本地缓存适用读多…...
