printf 与 echo 文本输出命令
概述
printf, fprintf, sprintf, snprintf, vprintf, vfprintf, vsprintf, vsnprintf - 格式化输出转换
printf 命令:格式化并且打印数据 format and print data
主要用于对 ARGUMENTs 进行格式化输出,ARGUMENTs 可以是字符串、数值等等,甚至可以通过变量引用;FORMAT 主要是对 ARGUMENTs 里的各种数据进行格式化输出,e.g.每个 ARGUMENT 是什么类型的(字符、整数、2 进制、16 进制等等),各个 ARGUMENT 中间使用什么分隔符、是否换行等等。
语法格式:printf FORMAT [ARGUMENT…]
主要用于按照 FORMAT 定义的格式来输出 ARGUMENT…给出的内容
FORMAT 包括:格式替代符,自定义内容,格式控制符,这 3 个在使用的时候没有先后顺序
格式替代符 # 用于控制输出的每个 Argument 的类型。一个“格式替代符”对应后面一个 Argument,如果想要输出的类型与 Argument 给定的类型不符,则进行类型转换后输出 e.g.Argument 给了一个整数 100,而格式替代符使用的是%X,则会输出 64;若 Argument 不够 FORMAT 的个数,则以空白补充。一般情况格式替代符使用双引号引起来
- %b # 相对应的参数被视为含有要被处理的转义序列之字符串。
- %c # ASCII 字符。显示相对应参数的第一个字符
- %d, %i # 十进制整数
- %e, %E, %f # 浮点格式
- %g #%e 或%f 转换,看哪一个较短,则删除结尾的零
- %G #%E 或%f 转换,看哪一个较短,则删除结尾的零
- %o # 不带正负号的八进制值
- %s # 字符串
- %u # 不带正负号的十进制值
- %x # 不带正负号的十六进制值,使用 a 至 f 表示 10 至 15
- %X # 不带正负号的十六进制值,使用 A 至 F 表示 10 至 15
%%
# 字面意义的%
自定义内容 # 在输出内容的格式中,可以自己添加任务字符串
格式控制符 # 用于控制输出内容整体的格式。i.e.每个参数有之间有多少空白符,在哪里换行等等
- \a # 警告字符,通常为 ASCII 的 BEL 字符
- \b # 后退
- \c # 抑制(不显示)输出结果中任何结尾的换行字符(只在%b 格式指示符控制下的参数字符串中有效),而且,任何留在参数里的字符、任何接下来的参数以及何留在格式字符串中的字符,都被忽略
- \f # 换页(formfeed)
- \n # 换行
- \r # 回车(Carriage return)
- \t # 水平制表符 i.e.tab
- \v # 垂直制表符
- . \ # 一个字面上的反斜杠字符
- \ddd # 表示 1 到 3 位数八进制值的字符。仅在格式字符串中有效
- \0ddd # 表示 1 到 3 位的八进制值字符
ARGUMENTs 包括各种想要输出的具体内容,可以是字符串、整数等、甚至可以引用变量
每个 Argument 使用空格进行分割,一个 Argument 中的内容传递给 FORMAT 中的“格式替代符”
EXAMPLE
~]# printf "%-10s %-8s %-4s\n" 姓名 性别 体重kg; printf "%-10s %-8s %-4.2f\n" 郭靖 男 66.1234;printf "%-10s %-8s %-4.2f\n" 杨过 男 48.6543;printf "%-10s %-8s %-4.2f\n" 郭芙 女 47.9876
姓名 性别 体重kg
郭靖 男 66.12
杨过 男 48.65
郭芙 女 47.99
%s %c %d %f 都是格式替代符
%-10s 指一个宽度为 10 个字符(-表示左对齐,没有则表示右对齐),任何字符都会被显示在 10 个字符宽的字符内,如果不足则自动以空格填充,超过也会将内容全部显示出来。
%-4.2f 指格式化为小数,其中.2 指保留 2 位小数。
\n 表示“换行符”,i.e.输出完这一段就换行,否则每个 printf 输出的内容都在一行了
hi 是自定义内容,可以随便写
Echo # 显示文本
Bash 脚本是非常流行的最简单的脚本语言。 与任何编程或脚本语言一样,您会在终端上遇到打印文本。 这可能发生在许多场景中,例如当您想要输出文件的内容或检查变量的值时。 程序员还可以通过在控制台上打印变量值来调试应用程序。 因此,在我们深入研究另一个教程的 bash 脚本之前,让我们看一下在终端中输出文本的不同方式。
为了在终端上输出文本,Echo 是您需要知道的最重要的命令。 正如名称本身所示,echo 在终端的标准输出上显示数字或字符串。 它还有许多选项,如下表所示。
根据 Linux 文档,以下是 echo 命令的语法。
echo [OPTIONS] [ARG….]
OPTIONS
- -n # 不打印后面的换行符
- -E # 禁用反斜杠转义字符的解释,默认自带选项。
- -e # 启用反斜杠转义的解释
- 输出 args,以空格分隔,后跟换行符。返回状态始终为 0。 -E 选项禁用这些转义符的解释,即使在默认情况下已解释它们的系统上也是如此。 xpg_echo shell 选项可用于动态确定 echo 默认情况下是否扩展这些转义字符。回声并不意味着选项的结束。 echo 解释以下转义序列
- 如果给出-e 选项,则启用对以下反斜杠转义字符的解释:
- \a 显示警告字符
- \b 退格符。
- \c 在输出中禁止另外跟在最终参数后面的换行字符。所有跟在 \c 序列后的字符都被忽略。
- \e Escape
- \E
- \f 换页
- \n 新行
- \r 回车
- \t 水平选项卡
- \v 垂直制表符
- \ backslash
发送文本到标准输出
要输出终端上的任何字符串、数字或文本,请键入以下命令并按 enter。
echo “Hello World Linux 公社www.linuxidc.com”
以下输出将显示在终端上
打印一个变量
让我们声明一个变量并在终端上打印它的值。假设 x 是我们在 160 处初始化的一个变量。
x=160
现在,我们将在终端上输出变量的值。
echo $x
终端将打印 160。同样,您也可以将字符串存储在变量中并将其输出到终端。
试一试,让我们知道这对你来说是否容易。
删除单词之间的空格
这是我最喜欢的 echo 选项之一,因为它消除了句子中不同单词之间的所有空格,并将它们混在一起。在这个特性中,我们将使用表 1 中提到的两个选项。
echo -e “欢迎来到 \bLinux \b 公社 \bwww \b.linuxidc \b.com”
显示:欢迎来到 Linux 公社www.linuxidc.com
从上面的示例中可以看到,我们正在启用反斜杠转义的解释以及添加退格。输出如下所示。
以新行输出单词
在使用 bash 脚本时,echo 的这个选项非常方便。大多数情况下,你需要在完成后移动到下一行。因此,这是最好的选择。
echo -e “欢迎来到 \nLinux \n 公社 \nwww \n.linuxidc \n.com”
输出将在单独的一行中显示每个单词,如下面的屏幕截图所示。
输出带声音的文本
这是一个使用 bell 或 alert 输出文本的简单选项。为此,键入以下命令。
echo -e “hello \a 欢迎来到 Linux 公社www.linuxidc.com”
确保系统的音量足够大,以便在终端输出文本时能够听到微小的铃声。
删除后面新行
echo 的另一个选项是删除后面的换行符,以便在同一行输出所有内容。为此,我们使用“\c”选项,如下图所示。
echo -e “欢迎来到 Linux 公社www.linuxidc.com \c 你是谁你是谁”
显示以下输出
将回车符添加到输出中
要在输出中添加特定的回车符,我们有“\r”选项。
echo -e “Linux 公社www.linuxidc.com \r 欢迎您的来到”
在终端上显示以下输出。
在输出中使用选项卡
在终端上打印输出时,您也可以添加水平和垂直标签。 这些产品可以用于更清洁的产品。 要添加水平制表符,您必须添加“\t”,对于垂直制表符,请添加“\v”。 我们将为这些中的每一个做一个样本,然后组合一个。
echo -e “www.linuxidc.com \t 欢迎来到 Linux 公社”
这个命令的输出如下所示
echo -e “www.linuxidc.com \v 欢迎来到 Linux 公社”
这个命令的输出如下所示
这就是在终端上打印文本的所有选项。这是一个需要学习的重要特性,因为当您开始使用 bash 脚本时,它将进一步帮助您。确保你实现了每一个选项并努力练习。如果本教程帮助您解决了问题,请告诉我们。
反馈
此页是否对你有帮助?
Glad to hear it! Please tell us how we can improve.
Sorry to hear that. Please tell us how we can improve.