第1章-小试牛刀(02在终端中显示输出)

1.2.2实战演练
echo是用于终端打印的最基本命令。

默认情况下,echo在每次调用后会添加一个换行符:

caicai@test-hp:~$ echo "Welocom to Bash"
效果:
Welocom to Bash

只需要将文本放入双引号中,echo命令就可以将其中的文本在终端中打印出来。类似地,不使用双引号也可以得到同样的输出结果:

caicai@test-hp:~$ echo Welocom to Bash 
效果:
Welocom to Bash

实现相同效果的另一种方式是使用单引号:

caicai@test-hp:~$ echo 'text in quotes' 
效果:
text in quotes

这些方法看起来相似,但各有特定的用途及副作用。双引号允许shell解析字符串中出现的特殊符。单引号不会对其做任何解释。

如果需要打印像!这样的特殊字符,那就不要将其放入双引号中,而是使用单引号,或是在特殊字符之前加上一个反斜线():

echo "Hello world \$0"
或者
echo 'Hello world $0' 

如果不使用引号,我们无法再echo中使用分号,因为分号在Bash shell中用作命令间的分隔符:

    echo hello;hello

对于上面的命令,Bash将echo hello 作为一个命令,将hello作为另一个命令。

在下一条攻略中将讨论到的变量代替不会在单引号中执行。
另一个可用于终端打印的命令是Printf。该命令使用的参数和C语言中的printf函数一样。
例如:

caicai@test-hp:~$ printf "Hello world"
效果:
Hello worldcaicai@test-hp:~$ 

printf命令接受引用文本或由空格分隔的参数。我们可以在printf中使用格式化字符串来指定字符串的宽度、左右对其方式等。默认情况下,pringf并不会自动添加换行符,我们必须要在需要的时候手动指定,比如在下面的脚本中:

#!/bin/bash
#文件名:printf.sh

printf "%-5s %-10s %-4s\n"No Name Mark
printf "%-5s %-10s %-4.2f\n"1 Sarath 80.3456
printf "%-5s %-10s %-4.2f\n"2 James 90.9989
printf "%-5s %-10s %-4.2f\n"3 Jeff 77.564

效果:

caicai@test-hp:~$ bash printf.sh 
Name  Mark           
NoSarath 80.3456    0.00
1James 90.9989    0.00
2Jeff  77.564     0.00

补充内容
1、 在echo中转义换行符
echo会在输出文本的尾部追加一个换行符。可以使用选项-n来禁止这种行为。echo同样接受双包含转义序列的双引号字符串作为参数。在使用转义序列时,需要使用echo -e“包含转义序列的字符串”这种形式。例如:

caicai@test-hp:~$ echo -e "1\t2\t3"
1       2       3

2、 打印彩色输出
脚本可以使用转义序列在终端中生成彩色文本。
文本颜色是由对应的色彩码来描述的。其中包括:重置=0,黑色=30,红色=31,绿色=32,黄色=33,蓝色=34,洋红=35,青色=36,白色=37.
要打印彩色文本,可输入如下命令:


image.png

其中\e[1;31m是一个转义字符串,可以将颜色设为红色,\e[0m将颜色重新置回。只需要将31替换成想要的色彩码就可以了。

对于彩色背景,经常使用的颜色码是:重置=0,黑色=40,红色=41,绿色=42,黄色=43,蓝色=44,洋红=45,白色=47.

要设置彩色背景的话,可输入如下命令:


image.png

这些例子中包含了一些转义序列。可以使用man console_codes来查看相关文档。

你可能感兴趣的:(第1章-小试牛刀(02在终端中显示输出))