Linux下终端打印

本文详细介绍了在终端中使用echo和printf命令进行文本打印,包括转义换行符、颜色输出以及printf的格式化功能。特别强调了echo中字符串处理的特性与printf的类似之处。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


前言

终端作为交互式工具,用户可以通过它与shell环境进行交互。在终端中打印文本是绝大多数shell脚本和工具日常需要进行的基本任务。能够执行打印的方法有很多,格式也各有不同。


一、打印命令echo

echo是用于终端打印的基本命令;在默认情况下,echo在每次调用后会添加一个换行符。

可以使用 双引号"" 单引号’’ 或者不加,都能完成任务,例如:

echo "nihao"
echo 'nihao'
echo  nihao

但是如果你希望打印特殊字符,那就不要将其放入双引号中,或者你可以在其之前加上一个特殊的转义字符(\)将!转义。当在echo中使用带双引号的文本时,你应该在echo之前使用set +H,以便能够正常地显示!。

每种方法的副作用如下:

  • 使用不带引号的echo时,你没法在所要显示的文本中使用分号(;),因为分号(;)在bash shell中被用作命令定界符。
    以echo hello;hello为例,echo hello被视为一个命令,第二个hello则被视为另一个命令。
  • 使用带单引号的echo时,Bash不会对单引号中的变量(如$var)求值,而只是照原样显示。
    这就意味着:$ echo '$var’将会返回$var,而$ echo $var将会根据变量$var定义与否,返回$var的值,或者什么都不返回。

1、在echo中转义换行符

在默认情况下,echo会将一个换行符追加到输出文本的尾部。可以使用标志-n来忽略结尾的换行符。
echo同样接受双引号字符串内的转义序列作为参数。如果需要使用转义序列,则采用echo -e"包含转义序列的字符串"这种形式。

echo -e "1\t2\t3"
1 2 3

2、打印颜色输出

在终端中生成彩色输出相当好玩,我们可以使用转义序列来实现。

要打印彩色文本,可输入如下命令:

# 改变字符串颜色
echo -e "\e[1;31m This is red text \e[0m"
# 改变字符串背景颜色
echo -e "\e[1;41m This is red text \e[0m"

获得结果:
在这里插入图片描述

\e[1;31 将颜色设为红色,\e[0m 将颜色重新置回。
设置字符串颜色:重置=0,黑色=30,红色=31,绿色=32,黄色=33,蓝色=34洋红=35,青色=36,白色=37。
设置彩色背景:重置=0,黑色=40,红色=41,绿色=42,黄色=43,蓝=44,洋红=45,青色=46,白色=47。

二、打印命令printf

另一个可用于终端打印的命令是printf。printf使用的参数和C语言中的printf函数一样。例如:

printf "Hello world"

printf使用引用文本或由空格分隔的参数。我们可以在printf中使用格式化字符串。我们还可以指定字符串的宽度、左右对齐方式等。在默认情况下,printf并不像echo命令一样会自动添加换行符,我们必须在需要的时候手动添加

shell脚本如下:

#!/bin/bash
printf "%-5s %-10s %-4s\n" No Name Mark
printf "%-5s %-10s %-4.2f\n" 1 LZC 80.3456

获得结果如下:

No    Name       Mark
1     LZC        80.35

%s、%c、%d和%f都是格式替代符,其所对应的参数可以置于带引号的格式字符串之后,与C语言的格式处理大同小异。%-5s指明了一个格式为左对齐且宽度为5的字符串替代(-表示左对齐)。如果不用-指定对齐方式,字符串则采用右对齐形式。对于Mark字段,我们将其格式化为%-4.2f,其中.2指定保留2个小数位
注意,在每行格式字符串后都有一个换行符\n。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值