📜  bash 中的 printf - Shell-Bash (1)

📅  最后修改于: 2023-12-03 14:39:27.921000             🧑  作者: Mango

Bash 中的 printf - Shell-Bash

在 Bash 中,printf 是一个非常有用的命令,它可以根据格式化字符串输出带有格式的文本。printf 命令具有以下语法:

printf format-string [arguments...]

其中,format-string 是一个包含特定格式选项的字符串,arguments 是 printf 命令需要打印的值。

格式化字符串

用于格式化输出的字符串称为格式化字符串,它包含一个或多个格式符,这些格式符控制输出字符串的格式。格式符以百分号(%)字符开头,后面跟着一个单个字符,使用这些格式符可以控制输出的颜色、位置、日期、时间、数字等等。

下面是一些常用的格式符:

| 格式符 | 描述 | | --- | --- | | %s | 字符串 | | %d | 有符号十进制整数 | | %f | 浮点数 | | %c | 字符 | | %e | 科学计数法 | | %x | 十六进制数 | | %o | 八进制数 | | %p | 指针地址 | | %n | 数字 | | %% | 输出 % 符号 |

例如:

#!/bin/bash
NAME="John Doe"
AGE=25
printf "Name: %s, Age: %d\n" $NAME $AGE

输出结果为:

Name: John Doe, Age: 25
转义字符

printf 命令还可以输出一些特殊字符,例如换行符(\n)、水平制表符(\t)和退格符(\b)等。这些特殊字符称为转义字符,需要在格式化字符串中使用反斜杠(\)转义。

#!/bin/bash
printf "Hello\nWorld\n"
printf "Name:%s\tAge:%d\n" $NAME $AGE

输出结果为:

Hello
World
Name:John Doe    Age:25
颜色输出

printf 命令还可以用于在终端上以不同颜色输出文本。这可以通过 ANSI 转义序列来实现,可以实现更好的命令行界面。下面是一些常见的 ANSI 转义序列:

| 序列 | 描述 | | --- | --- | | \033[0m | 关闭所有属性 | | \033[1m | 设置高亮度 | | \033[4m | 下划线 | | \033[5m | 闪烁 | | \033[7m | 反显 | | \033[8m | 消隐 | | \033[30m | 设置前景色为黑色 | | \033[31m | 设置前景色为红色 | | \033[32m | 设置前景色为绿色 | | \033[33m | 设置前景色为黄色 | | \033[34m | 设置前景色为蓝色 | | \033[35m | 设置前景色为紫红色 | | \033[36m | 设置前景色为青蓝色 | | \033[37m | 设置前景色为白色 | | \033[40m | 设置背景色为黑色 | | \033[41m | 设置背景色为红色 | | \033[42m | 设置背景色为绿色 | | \033[43m | 设置背景色为黄色 | | \033[44m | 设置背景色为蓝色 | | \033[45m | 设置背景色为紫红色 | | \033[46m | 设置背景色为青蓝色 | | \033[47m | 设置背景色为白色 |

例如:

#!/bin/bash
printf "\033[31m%s\033[0m\n" "This text is in red"
printf "\033[34m%s\033[0m\n" "This text is in blue"

输出结果为:

This text is in red
This text is in blue

以上就是 Bash 中的 printf 命令的简单介绍,通过 printf 命令的格式化字符串,我们可以打印具有格式的文本,以及在终端上输出彩色文本。