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

管道和重定向分号-连接符

本文介绍shell脚本常用命令连接符:管道符( | )、重定向( < 、>、>>、2> 、&> )、分号( ; )

本文内容同微信公众号【凡登】,关注不迷路,学习上高速,欢迎关注共同学习。

1、管道

进程的通信方式之一,连接多个命令,将一个命令的输出作为下一个命令的输入连接起来,实现命令之间的交互。

语法如下: 命令1 | 命令2

"|" 称为管道符 是Shell经常用到的通信工具, 将前一个应用程序的输出作为第二个应用程序的输入。

即对于Shell来说

  • 将前一个命令的执行结果传递给后面的命令;
  • 为两个连接的命令分别创建两个子进程;需要注意的是,程序在子进程中执行,所以不会影响到父进程环境,尤其是对于内建命令需要操作父进程环境,则需要特别注意。详情参见

创建管道连接

[@root ~]#  cat | ps -f 
UID        PID  PPID  C STIME TTY          TIME CMD
root      7898 10913  0 20:28 pts/0    00:00:00 cat           # 子进程 cat  
root      7899 10913  0 20:28 pts/0    00:00:00 ps -f         # 子进程 ps  
root     10913 10911  0 17:46 pts/0    00:00:00 -bash         # 父进程 bash 进程 

查看管道连接

注:新开一个会话窗口, 查看上述cat子进程7898

[@root ~]# ll /proc/7898/fd
总用量 0
lrwx------ 1 root root 64 10月 12 20:45 0 -> /dev/pts/0
l-wx------ 1 root root 64 10月 12 20:45 1 -> pipe:[2711081098]
lrwx------ 1 root root 64 10月 12 20:45 2 -> /dev/pts/0

2、重定向

输入和输出文件建立连接; 一个进程默认会打开标准输入、标准输出、错误输出三个文件描述符

2.1、输入

< :此处重定向输入主要是针对文件

# 如: hello.txt文件中有 hello world 
[root@VM-0-9-centos ~]# cat < hello.txt 
hello world# 从hello.txt文件中读取数据传递给变量s
[root@VM-0-9-centos ~]# read s < hello.txt
[root@VM-0-9-centos ~]# echo $s
hello world

2.2、输出

默认是输出到终端

  • > : 先清空指定文件,再将信息输出到文件,即覆盖文件。
  • >> : 将信息输出到指定文件末尾,即追加文件。
  • 2> : 当命令执行异常时,会把异常输出到指定文件,即异常输出。
  • &> : 无论命令执行失败与否,会把命令执行的结果信息输出到指定文件,即输出。

注:尽量避免输出到系统配置文件

演示 >>> 输出重定向
# > 输出
[root@VM-0-9-centos ~]# echo "123" > 123.txt
[root@VM-0-9-centos ~]# echo "456" > 123.txt
# >> 输出
[root@VM-0-9-centos ~]# echo "123" >> 456.txt
[root@VM-0-9-centos ~]# echo "456" >> 456.txt
# 查看文件
[root@VM-0-9-centos ~]# cat 123.txt ; echo "=========" ; cat 456.txt 
456
=========
123
456

总结:从输出内容可以看出 > 仅保留最后一次的输出内容,即覆盖操作, >> 输出两次的输出内容,追加操作

演示输出重定向输出错误信息
# 2> 演示错输出信息 
[root@VM-0-9-centos ~]# echooo "hello world output1" 2> output1.txt
# &> 演示错误输出信息 
[root@VM-0-9-centos ~]# echooo "hello world output2" &> output2.txt
# 打印
[root@VM-0-9-centos ~]# cat output1.txt ; echo "======="; cat output2.txt
bash: echooo: command not found
=======
bash: echooo: command not found# 2> 演示正确输出信息 
[root@VM-0-9-centos ~]# echo "hello world output3" 2> output3.txt
hello world output3
# &> 演示正确输出信息 
[root@VM-0-9-centos ~]# echo "hello world output4" &> output4.txt
# 查看结果
[root@VM-0-9-centos ~]# cat output3.txt ; echo "======="; cat output4.txt 
=======
hello world output4

总结:从输出结果看,错误信息的时候都重定向输出到文件,而当命令执行正确,没异常信息时,只有&> 输出到文件

可以看到 2> 输出接受错误的信息, &> 接受全部输出信息

2.3、扩展输出

扩展重定向是一种将命令的输出插入到脚本中的一种方法。它使用重定向符号  > 或 >>,将命令的输出写入到文件中,从而将文件的内容插入到脚本中

#!/bin/bash  # 执行命令并将输出写入文件  
echo "echo \"Hello, World!\"" > hello.sh # 将文件内容插入到脚本中  
[root@VM-0-9-centos ~]# cat hello.sh 
echo "Hello, World!"# 执行新的脚本[root@VM-0-9-centos ~]# bash hello.sh Hello, World!

2.4、输入和输出的组合

用于shell脚本生成一个指定文件

# 编写op.sh脚本
#!/bin/bash
cat > /root/hello.sh <<EOF
echo "hello world"
EOF[root@VM-0-9-centos ~]# bash op.sh 
[root@VM-0-9-centos ~]# ll
total 56
-rw-r--r-- 1 root root  19 Oct 13 15:11 hello.sh# 查看生成文件
[root@VM-0-9-centos ~]# cat hello.sh 
echo "hello world"# 执行文件
[root@VM-0-9-centos ~]# bash hello.sh 
hello world

3、分号( ; )

隔开命令,第一执行完,再执行第二条,两条命令没有关系,可以使命令按照顺序执行,因此可以将多个命令组合在一行进行执行。

if [ 2 -lt 3 ] 
then echo " 2 < 3"
fi
# 通过分隔符 ; 改为 一行
if [ 2 -lt 3 ] ; then echo " 2 < 3" ; fi# 连接多个命令按顺序执行,进入root目录,将hello world内容覆盖hw.txt,查看当前文件
[root@VM-0-9-centos ~]# cd /root ; echo "hello world" > hw.txt ; ll ; cat hw.txt
total 60
-rw-r--r-- 1 root root  12 Oct 13 15:35 hw.txt
hello world

相关文章:

管道和重定向分号-连接符

本文介绍shell脚本常用命令连接符&#xff1a;管道符( | )、重定向( < 、>、>>、2> 、&> )、分号( ; ) 本文内容同微信公众号【凡登】&#xff0c;关注不迷路&#xff0c;学习上高速&#xff0c;欢迎关注共同学习。 1、管道 进程的通信方式之一&#xf…...

WSL VScode连接文件后无法修改(修改报错)

权限问题 usrname:用户名 dirpath:要修改的文件夹路径 sudo chown -R usrname /dirpath...

迷你Ceph集群搭建(超低配设备)

我的博客原文链接&#xff1a;https://blog.gcc.ac.cn/post/2023/%E8%BF%B7%E4%BD%A0ceph%E9%9B%86%E7%BE%A4%E6%90%AD%E5%BB%BA/ 环境 机器列表&#xff1a; IP角色说明10.0.0.15osdARMv7&#xff0c;512M内存&#xff0c;32G存储&#xff0c;百兆网口10.0.0.16clientARM64…...

Python数据挖掘项目实战——自动售货机销售数据分析

摘要&#xff1a;本案例将主要结合自动售货机的实际情况&#xff0c;对销售的历史数据进行处理&#xff0c;利用pyecharts库、Matplotlib库进行可视化分析&#xff0c;并对未来4周商品的销售额进行预测&#xff0c;从而为企业制定相应的自动售货机市场需求分析及销售建议提供参…...

TortoiseGit使用教程

文章目录 一. 创建仓库二. Clone仓库三. 查看修改记录四. 版本回溯五. 创建分支六. 切换分支七. 合并分支八. 删除分支九. TortoiseGit配置1. 常规配置2. 配置远程仓库账户密码3. 配置远程仓库 一. 创建仓库 在需要创建仓库的文件上右键→Git Create repository here… 创建仓…...

如何测量GNSS信号和高斯噪声功率及载波比?

引言 本文将介绍如何测量德思特Safran GSG-7或GSG-8 GNSS模拟器的输出信号功率。此外&#xff0c;还展示了如何为此类测量正确配置德思特Safran Skydel仿真引擎以及如何设置射频设备&#xff0c;从而使用频谱分析仪准确测量信号的射频功率。 什么是载波噪声密度C/N0 GNSS接收…...

动态壁纸软件iWall mac中文特色

iWall for mac是一款动态壁纸软件&#xff0c;它可以使用任何格式的漂亮视频(无须转换)&#xff0c;音频(可视化功能)&#xff0c;图片&#xff0c;动画&#xff0c;Flash&#xff0c;gif&#xff0c;swf&#xff0c;程序&#xff0c;网页&#xff0c;网站做为您的动态壁纸&…...

xtrabackup全备 增备

版本针对mysql8.0版本 官方下载地址 https://www.percona.com/downloads 自行选择下载方式 yum安装方式 1、下载上传服务器 安装软件 [rootmaster mysql]# ll percona-xtrabackup-80-8.0.33-28.1.el7.x86_64.rpm -rw-r--r--. 1 root root 44541856 Oct 10 13:25 percona-x…...

【广州华锐互动】灭火器使用VR教学系统应用于高校消防演练有什么好处?

在科技发展的大潮中&#xff0c;虚拟现实&#xff08;VR&#xff09;技术以其独特的沉浸式体验赢得了各个领域的青睐&#xff0c;其中包括教育和培训。在高校消防演练中&#xff0c;VR也成为了一种新的消防教育方式。 由广州华锐互动开发的VR消防演练系统&#xff0c;就包含了校…...

Pymol做B因子图

分子动力学模拟结束后&#xff0c;获得蛋白的平均结构&#xff0c; 比如获得的平均结构为WT-average.pdb 然后将平均结构导入到Pymol 中&#xff0c;可以得到B因子图。 gmx rmsf -f md_0_100_noPBC.xtc -s md_0_100.tpr -o rmsf-per-residue.xvg -ox average.pdb -oq bfactors…...

EKF例程 matlab

% 不含IMU误差方程的EKF滤波典型程序&#xff0c;适用于多次滤波的第二级 % author:Evand % date: 2023-09-20 % Ver1 clear;clc;close all; global T %% initial T 0.1; %采样率 t [T:T:100]; Q 0.1diag([1,1,1]);wsqrt(Q)randn(size(Q,1),length(t)); R 1diag([1,1,1]);v…...

【C语言】atoi函数的模拟

atoi对于初学者来说大概率是一个陌生的函数 但不要害怕&#xff0c;我们可以通过各种网站去查询 例如&#xff1a; cplusplus就是一个很好的查询网站 目录 函数介绍模拟实现需要注意的点 函数介绍 我们发现这是一个将字符串转换为整形数字的函数 例如&#xff1a; int main()…...

JAXB 使用记录 bean转xml xml转bean 数组 继承 CDATA(转义问题)

JAXB 使用记录 部分内容引自 https://blog.csdn.net/gengzhy/article/details/127564536 基础介绍 JAXBContext类&#xff1a;是应用的入口&#xff0c;用于管理XML/Java绑定信息 Marshaller接口&#xff1a;将Java对象序列化为XML数据 Unmarshaller接口&#xff1a;将XML数…...

Linux Centos安装Sql Server数据库,结合cpolar内网穿透实现公网访问

目录 前言 1. 安装sql server 2. 局域网测试连接 3. 安装cpolar内网穿透 4. 将sqlserver映射到公网 5. 公网远程连接 6.固定连接公网地址 7.使用固定公网地址连接 前言 简单几步实现在Linux centos环境下安装部署sql server数据库&#xff0c;并结合cpolar内网穿透工具…...

Vulnhub系列靶机---Raven: 2

文章目录 信息收集主机发现端口扫描目录扫描用户枚举 漏洞发现漏洞利用UDF脚本MySQL提权SUID提权 靶机文档&#xff1a;Raven: 2 下载地址&#xff1a;Download (Mirror) 信息收集 靶机MAC地址&#xff1a;00:0C:29:15:7F:17 主机发现 sudo nmap -sn 192.168.8.0/24sudo arp…...

计算机视觉与深度学习 | 视觉惯性SLAM的基础理论

===================================================== github:https://github.com/MichaelBeechan CSDN:https://blog.csdn.net/u011344545 ===================================================== 视觉惯性SLAM的基础理论 引言三维空间刚体的运动表示旋转矩阵(Rotatio…...

[电源选项]没有系统散热方式,没有被动散热选项

背景 笔记本的风扇声音太大&#xff0c;想改成被动散热方式&#xff0c;又不想影响性能。 于是我打开了控制面板\所有控制面板项\电源选项&#xff0c;点更改计划设置-> 更改高级电源设置。 想把散热方式改成被动散热。发现win11中好像没有这个选项了&#xff01; 如何…...

房产中介租房小程序系统开发搭建

随着移动互联网的发展&#xff0c;租房小程序已经成为许多房产中介公司转型线上的重要工具。通过租房小程序&#xff0c;房产中介公司可以方便地展示房源信息、吸引租户、达成交易。那么&#xff0c;如何通过乔拓云网开发租房小程序呢&#xff1f;下面是详细的开发指南。 1.进入…...

RS485电路设计

引言 今天学习RS485电路的设计。 首先先来了解一下RS485电路是什么干什么。 RS485是一种串行通信协议&#xff0c;也是一种电气标准。它可以用于在远距离范围内传送数据&#xff0c;最长传输距离可以达到1200米&#xff0c;可以支持多个设备同时通信。RS485通常应用于工业自…...

分布式文件服务器——Windows环境MinIO的三种部署模式

上节简单聊到MinIO&#xff1a;分布式文件存储服务——初识MinIO-CSDN博客&#xff0c;但没具化&#xff0c;本节开始展开在Windows环境下 MinIO的三种部署模式&#xff1a;单机单节点、单机纠删码、集群模式。 部署的几种模式简要概括 所谓单机单节点模式&#xff1a;即MinI…...

AFL++实战:从零开始用WSL搭建模糊测试环境(附libxml2案例)

AFL实战指南&#xff1a;WSL环境下的模糊测试从入门到精通 模糊测试&#xff08;Fuzz Testing&#xff09;作为软件安全测试的重要手段&#xff0c;近年来在漏洞挖掘领域展现出惊人的效果。对于Windows平台开发者而言&#xff0c;Windows Subsystem for Linux&#xff08;WSL&…...

Cursor Pro免费激活终极指南:如何突破试用限制重新获得AI编程体验

Cursor Pro免费激活终极指南&#xff1a;如何突破试用限制重新获得AI编程体验 【免费下载链接】cursor-free-vip [Support 0.45]&#xff08;Multi Language 多语言&#xff09;自动注册 Cursor Ai &#xff0c;自动重置机器ID &#xff0c; 免费升级使用Pro 功能: Youve reach…...

AI辅助开发:让快马平台Kimi模型帮你构建《构石》官网智能搜索功能

最近在帮《构石》期刊官网开发智能搜索功能时&#xff0c;发现用传统方式写代码效率太低。尝试了InsCode(快马)平台的AI辅助开发后&#xff0c;整个过程变得特别顺畅。这里分享下具体实现思路和平台使用体验。 需求分析 期刊官网需要支持多条件组合搜索&#xff0c;包括年份范围…...

BEYOND REALITY Z-Image避坑指南:解决生成图片模糊、全黑的常见问题

BEYOND REALITY Z-Image避坑指南&#xff1a;解决生成图片模糊、全黑的常见问题 1. 为什么你的Z-Image生成效果不理想&#xff1f; 当你第一次使用BEYOND REALITY Z-Image时&#xff0c;可能会遇到这样的困扰&#xff1a;明明输入了详细的提示词&#xff0c;生成的图片却要么…...

终极B站界面美化指南:如何用BewlyBewly插件快速打造个性化体验

终极B站界面美化指南&#xff1a;如何用BewlyBewly插件快速打造个性化体验 【免费下载链接】BewlyBewly Just make a few small changes to your Bilibili homepage. (English | 简体中文 | 正體中文 | 廣東話) 项目地址: https://gitcode.com/gh_mirrors/be/BewlyBewly …...

Git子模块更新报错?手把手教你解决‘Unable to find origin/master revision‘问题

Git子模块更新报错深度解析&#xff1a;从原理到实战解决方案 1. 问题现象与核心原因分析 当你执行git submodule update --remote命令时&#xff0c;突然遇到fatal: Unable to find current origin/master revision in submodule path错误提示&#xff0c;这种场景在团队协作…...

比Jenkins轻量10倍!用Gitea Actions搭建内网自动化部署的完整踩坑记录

企业级内网CI/CD革命&#xff1a;Gitea Actions轻量化实战指南 在当今快节奏的软件开发环境中&#xff0c;持续集成与持续部署(CI/CD)已成为企业提升交付效率的关键。然而&#xff0c;传统解决方案如Jenkins往往伴随着沉重的资源消耗和复杂的配置流程&#xff0c;让许多中小团队…...

告别重复操作:用快马生成智能浏览器扩展,极速提升前端调试与数据提取效率

作为一名前端开发者&#xff0c;每天都要和网页元素打交道。调试样式、提取数据这些重复性工作&#xff0c;如果全靠手动操作&#xff0c;不仅效率低下还容易出错。最近我发现用InsCode(快马)平台可以快速生成定制化的浏览器扩展&#xff0c;把那些繁琐操作变成一键自动化&…...

intv_ai_mk11效果惊艳案例:为初创公司1小时生成完整BP商业计划书框架

intv_ai_mk11效果惊艳案例&#xff1a;为初创公司1小时生成完整BP商业计划书框架 1. 商业计划书生成效果展示 1.1 从零到完整的商业计划书 intv_ai_mk11在商业计划书生成方面展现出惊人的效率和质量。我们实测了一个真实案例&#xff1a;一家智能硬件初创公司需要准备融资用…...

FigmaCN:解决Figma英文界面障碍的设计师专属中文方案

FigmaCN&#xff1a;解决Figma英文界面障碍的设计师专属中文方案 【免费下载链接】figmaCN 中文 Figma 插件&#xff0c;设计师人工翻译校验 项目地址: https://gitcode.com/gh_mirrors/fi/figmaCN 作为一名设计师&#xff0c;您是否曾因Figma全英文界面而减慢工作流程&…...