echo命令与printf命令详解
文章目录
echo
echo是用于终端打印的基本命令。
在默认情况下,echo会将一个换行符追加到输出文本的尾部。可以使用标志-n来忽略结尾的换行符。
$ echo "Welcome to Bash"
WeXcome to Bash
只需要使用带双引号的文本,结合echo命令就可以将该文本在终端中打印出来。类似地,不带双引号的文本也可以得到同样的输出结果:
$ echo Welcome to Baah
Welcome to Bash
使用单引号也可以完成同样的任务:
$ echo * text in quote
这些方法看起来相似,但各有一些特殊用途和副作用。思考下面这行命令:
$ echo ncazmot include exclamation - 1 within double quotes11
这条命令将会返回:
bash: \: event not found error
因此,如果你希望打印!,那就不要将其放入双引号中,或者你可以在其之前加上一个特殊的转义字符’'将!转义。
$ echo Hello world !
或者
$ echo 'Hello world !'
或者
$ echo "Hello world \!" #Bscape character N prefixed.
每种方法的副作用如下:
-
使用不带引号的echo时,你没法在所要显示的文本中使用,因为在bash shell中被用作命令定界符。
以echo hello;hello为例,echo hello被视为一个命令,第二个hello则被视为另一个命令。
-
使用带单引号的echo时,Bash不会对单引号中的变量(如$var)求值,而只是照原样显示。
这就意味着:$ echo,$var,将会返回$var,而$ echo $var将会根据变量$var定义与否,返回$var的值,或者什么都不返回。
如果需要使用转义序列,则采用echo-e"包含转义序列的字符串”这种形式(单双引号皆可)。例如:
echo -e "1\t2\t3" 1 2 3
printf
如果你熟悉C语言编程的话,printf命令用法也是一样,允许指定具体如何显示数据的指令。
下面是printf命令的格式:
printf "format string", var1, var2 . . .
format string是格式化输出的关键。它会用文本元素和格式化指定符来具体指定如何呈 现格式化输出。格式化指定符是一种特殊的代码,会指明显示什么类型的变量以及如何显示。gawk 程序会将每个格式化指定符作为占位符,供命令中的变量使用。第一个格式化指定符对应列出的 第一个变量,第二个对应第二个变量,依此类推。
格式化指定符采用如下格式:
%[modifier]control-letter
其中control-letter是一个单字符代码,用于指明显示什么类型的数据,而modifier则定义了可选的格式化特性.
|
|
除了控制字母外,还有3种修饰符可以用来进一步控制输出。
-
width:指定了输出字段最小宽度的数字值。如果输出短于这个值,printf会将文本右 对齐,并用空格进行填充。如果输出比指定的宽度还要长,则按照实际的长度输出。
-
prec:这是一个数字值,指定了浮点数中小数点后面位数,或者文本字符串中显示的最 大字符数。
-
-(减号):指明在向格式化空间中放入数据时采用左对齐而不是右对齐。
注意,你需要在printf命令的末尾手动添加换行符来生成新行。没添加的话,printf命令会继续在同一行打印后续输出。
如果需要用几个单独的printf命令在同一行上打印多个输出,这就会非常有用。
$ gawk 'BEGIN{FS=","} {printf "%s ", $1} END{printf "\n"}' data1
每个printf的输出都会出现在同一行上。为了终止该行,END部分打印了一个换行符。
通过添加一个值为16的修饰符,我们强制第一个字符串的输出宽度为16个字符。默认情况下,printf命令使用右对齐来将数据放到格式化空间中。要改成左对齐,只需给修饰符加一个减号 即可。
{printf "%-16s %s\n", $1, $4}
可以使用%5.1f格式指定符来强制printf命令将浮点值近似到小数点后一位
打印彩色输出
在终端中生成彩色输出相当好玩,我们可以使用转义序列来实现。
每种颜色都有对应的颜色码。比如:重置=0,黑色=30,红色=31,绿色=32,黄色=33,蓝色=34,洋红=35,青色=36,白色=37。
要打印彩色文本,可输入如下命令:
echo -e "\e[1;31m Thia is red text \e[0m"
\e[1;31m将颜色设为红色,\e[0m将颜色重新置回。你只需要将31替换成想要的颜色码就可以了。
要设置彩色背景,经常使用的颜色码是:重置=0,黑色=40,红色=41,绿色=42,黄色=43,蓝色=44,洋红=45,青色=46,白色=47。
要打印彩色文本,可输入如下命令:
echo -e "\e[1;42m Green Background \e[0m"
文章作者 Forz
上次更新 2017-09-07