Shell输出、重定向与管道符

Shell输出、重定向与管道符

      • 1、Shell输出
        • 1.1、标准输入输出
        • 1.2、echo指令
        • 1.3、print与printf指令
      • 2、Shell重定向
      • 3、Shell管道符




由于Shell脚本批处理的特殊性,其大部分操作过程位于后台,不需要用户进行干预,因此,使用重定向和管道进行执行信息的过滤和提取显得尤为重要

1、Shell输出

1.1、标准输入输出

在Shell中,交互式硬件设备标准输入(stdin)和标准输出(stdout)是非常重要的概念

类型设备文件文件描述编号/代码默认设备功能描述
标准输入/dev/stdin0键盘从该设备接收用户输入的数据
标准输出/dev/stdout1显示器通过该设备向用户输出数据
标准错误输出/dev/stderr2显示器通过该设备报告执行出错信息

以下是使用Shell标准输入输出的示例:

# 使用echo命令输出到stdout
echo "Hello, World!"
# 使用管道将前一个命令的stdout作为后一个命令的stdin
echo "Hello, World!" | grep "World"
cat file.txt | grep "World"
1.2、echo指令

echo是Shell中的一个内部指令,用于将指定字符串打印输出到屏幕(标准输出)

echo指令常用选项及说明如下:

选项说明
-n不追加换号输出(默认追加换行输出)
-e启用对特殊字符的转义

以下是一些使用示例:

1)打印字符串文本

echo "Hello, World!"       # Hello, World!

2)打印变量值

name="Alice"
echo "He name is $name"    # He name is Alice

3)打印转义字符

echo "\"Hello, World!\""   # "Hello, World!"

4)打印特殊字符

# 开启转义:\n将被解释为换行,\c将被解释为不换行
echo -e "Hello \n"
echo "World"
# \n输出
Hello World
# \c输出
Hello World

5)打印命令执行结果

echo `date`                # Sat Aug 24 16:28:41 CST 2024
1.3、print与printf指令

printprintf是Shell中的两个标准格式输出指令,其中,printksh(Korn Shell)的内置命令,printfbash(Bourne Again Shell)的内置命令

print只是一个简单的打印命令,每个标准输出后自动换行;printf则是格式化输出指令,printf不会自动在每个标准输出后添加换行符,如果需要换行,需要手动添加\n

printf指令的语法如下:

printf fs args
  • fs:格式字符串(format-string
  • args:参数列表

常用的格式字符串有:

  • %s:字符串,%ns指定输出n个字符(默认右对齐,%-ns表示左对齐)
  • %i:整数,%ni指定输出n个数字(默认右对齐)
  • %c:字符
  • %d:十进制整数
  • %f:浮点数
  • %e:科学计数法表示的浮点数
  • %m.nf:浮点数,共输出m位数,保留n位小数

以下是一个示例:

printf %s\n 1 2 3
printf "%s 体重 %4.2f kg\n" Tom 68.6543
printf "%3s\n" 12 3

输出结果如下:

123
Tom 体重 68.65 kg123

2、Shell重定向


Shell(输出)重定向是指不通过标准输出到显示器上,而是输出到指定的位置(文件)。重定向一般通过在命令间插入特定的操符号来实现

类型操作符功能
重定向输入<从指定文件读取数据,而非键盘输入
重定向输出>将输出结果保存到指定文件(覆盖原有内容)
重定向输出(追加)>>将输出结果换行追加到指定文件尾部
重定向错误输出2>将错误信息保存到指定文件(覆盖原有内容)
重定向错误输出(追加)2>>将错误信息追加到指定文件尾部
混合输出&>将标准输出、标准错误的内容保存到同一个文件中

以下是一个示例:

1)输出到文件

# 如果文件存在,则覆盖内容
echo "Hello, World!" > file.txt

2)追加到文件

# 追加到文件末尾
echo "Hello, World!" >> file.txt

3、Shell管道符


在Shell中,可以使用|连接两个命令,Shell会将前后两个进程的输入输出用一个管道相连,以便达到进程间通信的目的

Shell管道符|将前一个命令的标准输出,作为后一个命令的标准输入

以下是一个示例:

cat file.txt | grep "World"


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

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

相关文章

在Windows Server 2012 R2上安装.NET Framework 3.5

在Windows Server 2012 R2上安装.NET Framework 3.5&#xff0c;可以按照以下步骤进行&#xff1a; 打开服务器管理器&#xff1a; 首先&#xff0c;登录到Windows Server 2012 R2的服务器。然后&#xff0c;打开“服务器管理器”。添加角色和功能&#xff1a; 在“服务器管理…

react面试题五

一、请解释React中的高阶组件&#xff08;HOC&#xff09;和Hooks。 在React中&#xff0c;高阶组件&#xff08;High-Order Components, HOCs&#xff09;和Hooks是两种强大的特性&#xff0c;它们用于重用组件逻辑。尽管它们的目的相似&#xff0c;但它们在实现和使用方式上有…

使用Python恢复Windows、Linux、MacOS回收站中的文件和目录

一、使用Python恢复Windows回收站中的文件和目录 import os import platformdef put_back_trash():# 获取操作系统类型os_type platform.system()if os_type "Windows": # Windowsfrom winshell import recycle_binfor item in recycle_bin():winshell.undelete(…

针对防火墙IPSec业务不通或业务丢包问题,防火墙如何做流量统计、远程抓包、报文示踪

问题描述 针对防火墙IPSec业务不通或业务丢包问题&#xff0c;防火墙如何做流量统计、远程抓包、报文示踪 解决方案 1&#xff09;配置流统和远程抓包用的ACL&#xff1b; system [sysname] acl 3555 [sysname-acl-adv-3555] rule permit icmp source 10.82.100.215 0 destin…

结构型模式之代理模式

一、概述 1、代理模式&#xff1a;给某一个对象提供一个代理或占位符&#xff0c;并由代理对象来控制对原对象的访问。 2、代理对象在客户端和目标对象之间起到中介作用 3、引入一个新的代理对象&#xff0c;代理模式的主要目的是在不改变原始对象接口的前提下&#xff0c;增…

DORIS学习网址

DORIS学习网址 序号学习网址备注1ApacheDoris系列&#xff5c;Bucket(分桶)数量设置和自动分桶-CSDN博客自动分桶2Apache Doris 入门教程23&#xff1a;自动分桶和Broker概念介绍_doris broker-CSDN博客新版自动分桶说明3一文教你玩转 Apache Doris 分区分桶新功能&#xff5c;…

Spring 中AbstractRefreshableWebApplicationContext

AbstractRefreshableWebApplicationContext 是 Spring Framework 中用于 Web 应用程序的一个抽象类&#xff0c;位于 org.springframework.web.context.support 包中。它继承自 AbstractRefreshableApplicationContext&#xff0c;主要用于支持 Web 应用程序的上下文管理。 主…

[C语言]一、C语言基础(函数)

G:\Cpp\C语言精讲 6. 函数 6.1函数的基本使用 6.1.1 为什么需要函数 《街霸》游戏中&#xff0c;每次人物出拳、出脚或跳跃等动作都需要编写50-80行的代码&#xff0c;在每次出拳、出脚或跳跃的地方都需要重复地编写这50-80行代码&#xff0c;这样程序会变得很臃肿&#xff…

C++基础面试题 | C和C++的区别?

人生如逆旅&#xff0c;我亦是行人。 - 《临江仙送钱穆父》(苏轼) 2024.8.23 回答重点&#xff1a;C可以认为是C语言的超集&#xff0c;绝大部分C语言代码可以使用C运行 在设计思想上&#xff1a;面向过程 vs 面向对象 C是一种面向过程的编程语言&#xff0c;它侧重于函数和过程…

python学习8-数据获取与整理4

pandas迭代 在 Pandas 中&#xff0c;通常情况下你不需要迭代&#xff08;遍历&#xff09;DataFrame 或 Series&#xff0c;因为很多操作都是矢量化的&#xff0c;可以直接应用于整个数据集。然而&#xff0c;有时候你可能需要遍历数据帧&#xff08;DataFrame&#xff09;或…

通过Python绘制不同数据类型适合的可视化图表

在数据可视化中&#xff0c;对于描述数值变量与数值变量之间的关系常见的有散点图和热力图&#xff0c;以及描述数值变量与分类变量之间的关系常见的有条形图&#xff0c;饼图和折线图&#xff0c;可以通过使用Python的matplotlib和seaborn库来绘制图表进行可视化表达&#xff…

如何使用ssm实现ssm框架的购物网站+vue

TOC ssm113ssm框架的购物网站vue 绪论 1.1 研究背景 当前社会各行业领域竞争压力非常大&#xff0c;随着当前时代的信息化&#xff0c;科学化发展&#xff0c;让社会各行业领域都争相使用新的信息技术&#xff0c;对行业内的各种相关数据进行科学化&#xff0c;规范化管理。…

如何评估Redis的性能

如果系统中出现了大 key、热 key 等&#xff0c;往往会导致 Redis 变慢&#xff0c;但是这个慢该如何界定&#xff1f;多久算慢&#xff1f;1秒还是3秒&#xff1f; 这个肯定是没有标准答案&#xff0c;因为这个和你的硬件设备有关。 硬件差一些&#xff0c;平时响应时间都是…

[C++] 初识 智能指针

标题&#xff1a;[C] 初识 智能指针 水墨不写bug 目录 一、前言 二、智能指针 1. 什么是RAII&#xff1f; 2.智能指针分类 三、智能指针简介 1.std::auto_ptr 2.std::unique_ptr 3.std::shared_ptr 正文开始&#xff1a; 一、前言 C智能指针的出现是有一定的背景的&am…

今天你City了吗?维乐Angel Revo带你穿梭都市自由随风~

当7月的热浪在都市中翻滚&#xff0c;你是否渴望逃离钢筋水泥的束缚&#xff0c;寻找一片属于自己的绿意盎然&#xff1f;今天你City了吗&#xff1f;快带上VELO Angel Revo一起抓住夏日的尾巴&#xff0c;用一场骑行与这座城市的风景共舞&#xff01;      轻巧出行&#…

Centos安装Jenkins教程详解版(JDK8+Jenkins2.346.1)

本教程基于 JDK8 和 Jenkins2.346.1 JDK安装 下载OpenJDK8文件 wget https://mirrors.tuna.tsinghua.edu.cn/Adoptium/8/jdk/x64/linux/OpenJDK8U-jdk_x64_linux_hotspot_8u422b05.tar.gz解压到指定目录 # 创建目录 mkdir -p /usr/local/software# 解压文件到指定目录&#…

linux-基础知识1

简单命令 init 0 关机 int 6 重启 pwd 查看当前所在目录&#xff0c; cd切换目录 ls 列出目录下的内容 clear 清屏 date 查看时间 路径 linux表示硬件设备的文件在dev目录 /tmp是临时目录&#xff0c;可以创建目录和文件&#xff0c;但不能保证安全 df查看文件系统…

oracle共享池(shared pool):一、工作原理、组成部分 二、软硬解析过程

文章目录 oracle整体结构图共享池&#xff08;shared pool&#xff09;shared pool的作用shared pool的组成查询 shared pool 各组成部分大小硬解析和软解析 oracle整体结构图 共享池&#xff08;shared pool&#xff09; shared pool的作用 1、 将 sql 语句解析成执行计划 …

【Node】【2】创建node应用

创建node应用 node应用&#xff0c;不仅可以实现web应用&#xff0c;也能实现http服务器。 如果是php写后端&#xff0c;还需要有http服务器&#xff0c;比如apache 或者 nginx。 但是现在主流都是java写后端&#xff0c;也可以像 Node.js 一样用于实现 Web 应用和 HTTP 服务…

easypoi模板导出word多页导出加强版

说明 上一篇文章提到多页导出&#xff0c;但是后边发现一个问题&#xff0c;如果用同一个模板导出多页内容&#xff0c;我们去获取多页内容的时候&#xff0c;会发现全部都一样&#xff0c;举个例子&#xff1a; XWPFDocument document WordExportUtil.exportWord07(outputU…