Shell输出、重定向与管道符

embedded/2024/9/24 15:11:31/

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.ppmy.cn/embedded/100846.html

相关文章

小兔鲜首页制作css

一、项目目录 项目名-客户端 xtx-pc 1.images&#xff1a;存放固定使用的图片&#xff0c;例如&#xff1a;logo、样式修饰图 2.uploads:存放非固定图片&#xff0c;例如&#xff1a;商品图、宣传图等需要上传的图片 3.iconfont:字体图标素材 4.css文件&#xff1a; 4.1base.cs…

超分之最近邻插值、线性插值、双线性插值、双三次插值原理

文章目录 插值与图像插值不同的插值方法最近邻域插值&#xff08;Nearest Neighbor Interpolation&#xff09;线性插值 (Linear Interpolation)双线性插值 (Bilinear Interpolation)双三次插值 (Bicubic Interpolation) 插值与图像插值 插值&#xff1a;利用已知数据去预测位…

Django后端架构开发:从匿名用户API节流到REST自定义认证

&#x1f3af;Django后端架构开发&#xff1a;从匿名用户API节流到REST自定义认证 在现代Web应用中&#xff0c;后端架构的开发至关重要。无论是用户的认证与权限管理&#xff0c;还是API的节流与数据序列化&#xff0c;都需要一个高效且安全的实现方案。本文将带领大家深入探…

Docker绑定挂载使用手册

目录 目标 官方文档 绑定挂挂载&#xff08;Bind mounts&#xff09; 简介 基本创建方法 控制读写权限&#xff08;默认有读写权限&#xff09; 为什么绑定挂载不适合做数据库持久化 为什么绑定挂载更适合做热部署 临时挂载&#xff08;tmpfs mounts&#xff09; 简介…

NLP从零开始------13.文本中阶序列处理之语言模型(1)

语言模型( language model) 用于计算一个文字序列的概率&#xff0c; 评估该序列作为一段文本出现在通用或者特定场景中的可能性。每个人的语言能力蕴涵了一个语言模型&#xff0c;当我们说出或写下一段话的时候&#xff0c;已经在不自觉地应用语言模型来帮助我们决定这段话中的…

Spark MLlib 特征工程系列—特征转换Polynomial Expansion

Spark MLlib 特征工程系列—特征转换Polynomial Expansion 1. Polynomial Expansion 简介 PolynomialExpansion 是 Spark MLlib 中的一种特征转换工具,主要用于将原始特征进行多项式扩展。多项式扩展通过生成原始特征的所有多项式组合来增加特征的维度,从而提高模型的表达能…

qt-内置图片遍历-Lambda按钮

内置图片遍历-Lambda按钮 知识点widget.hwidget.cppmain.cpp运行图 知识点 使用新的connect语法连接信号和槽 --Lambda 使用 connect(btn, &QToolButton::clicked, this, [this, btn,index]() { onToolButtonClicked(btn)}); // Lambda表达式中调用成员函数&#xff0c;并…

VS实用调试技巧

目录 1. 什么是bug 2. 什么是调试(debug) 3. Debug和Release 4. VS调试快捷键 4.1 环境准备 4.2 快捷键调试 5. 监视和内存观察 5.1 监视 5.2 内存 6. 调试举例 7. 编程常见错误归类 7.1 编译型错误 7.2 链接型错误 ​7.3 运行时错误 1. 什么是bug bug本意是&qu…