bash 中的高级 printf 解释
advanced printf explanation in bash
我刚刚在我儿子的 Bash 文件中找到了这个编程片段。我是一个新手,无法理解 printf 语法。有人可以向我解释下面部分中的 COMMENTED printf 吗??
#printf "3[1;34m"
while [ -d /proc/$PROC ]; do
printf '3[s3[u[/] %s3[u' "$str"; sleep "$delay"
printf '3[s3[u[—] %s3[u' "$str"; sleep "$delay"
printf '3[s3[u[\] %s3[u' "$str"; sleep "$delay"
printf '3[s3[u[|] %s3[u' "$str"; sleep "$delay"
done
#printf '3[s3[u%*s3[u3[0m' $((${#str}+6)) " " # return to normal(It disappears.)
它只不过是一个 busy/wait 微调器,注释行除了设置蓝色前景色外什么都不做,最后删除微调器和文本的行。 3
只是字符 27
,它是 ANSI 转义的一部分,后跟 [
。请参阅此处 's' 保存光标位置,'u' 将光标位置恢复到上次保存的位置 - 你很好,没有恶意......(我很确定这正是该代码的来源)
更详细:
#printf "3[1;34m" /* simply sets a blue foreground color */
然后决赛:
#printf '3[s3[u%*s3[u3[0m' $((${#str}+6)) " "
3[s
保存光标位置,
3[u
恢复到上次保存,
'%*s'
正常 printf
格式说明符 对于带有 *
的字符串要注意 字段宽度 将由第一个参数指定,
3[u
恢复到上次保存的位置,
3[0m
return 默认颜色。
第一个参数是 $((${#str}+6))
您打印的字符串的长度 plus 微调器的 6 个字符,例如'[ \ ] '
和第二个参数,space
(例如 " "
)用于实际字符串以用空格覆盖该行。
它只是擦除其中与微调器一起使用的线。
通过注释行,颜色保留为默认值(第一个注释),带有字符串的最后一行和最后一个微调器位置保留在屏幕上(第二个注释 printf
)
这里是 ANSI Escape sequences 进一步解释转义的参考...
我刚刚在我儿子的 Bash 文件中找到了这个编程片段。我是一个新手,无法理解 printf 语法。有人可以向我解释下面部分中的 COMMENTED printf 吗??
#printf "3[1;34m"
while [ -d /proc/$PROC ]; do
printf '3[s3[u[/] %s3[u' "$str"; sleep "$delay"
printf '3[s3[u[—] %s3[u' "$str"; sleep "$delay"
printf '3[s3[u[\] %s3[u' "$str"; sleep "$delay"
printf '3[s3[u[|] %s3[u' "$str"; sleep "$delay"
done
#printf '3[s3[u%*s3[u3[0m' $((${#str}+6)) " " # return to normal(It disappears.)
它只不过是一个 busy/wait 微调器,注释行除了设置蓝色前景色外什么都不做,最后删除微调器和文本的行。 3
只是字符 27
,它是 ANSI 转义的一部分,后跟 [
。请参阅此处
更详细:
#printf "3[1;34m" /* simply sets a blue foreground color */
然后决赛:
#printf '3[s3[u%*s3[u3[0m' $((${#str}+6)) " "
3[s
保存光标位置,3[u
恢复到上次保存,'%*s'
正常printf
格式说明符 对于带有*
的字符串要注意 字段宽度 将由第一个参数指定,3[u
恢复到上次保存的位置,3[0m
return 默认颜色。
第一个参数是 $((${#str}+6))
您打印的字符串的长度 plus 微调器的 6 个字符,例如'[ \ ] '
和第二个参数,space
(例如 " "
)用于实际字符串以用空格覆盖该行。
它只是擦除其中与微调器一起使用的线。
通过注释行,颜色保留为默认值(第一个注释),带有字符串的最后一行和最后一个微调器位置保留在屏幕上(第二个注释 printf
)
这里是 ANSI Escape sequences 进一步解释转义的参考...