shell中可以用于打印的命令

shell中我们可以使用echo和printf命令在终端打印,下边我们将对echoshell进行简单的描述。

echo命令

在默认个的情况下,echo在每次调用后都会添加一个换行符。我们可以使用echo -n命令忽略结尾的换行符。

1
2
3
4
5
$ echo "Welcome to Bash"
Welcome to Bash

$ echo -n "Welcom to Bash"
Welcom to Bash%

我们可以看出只需要带双引号的文本,结合echo命令就可以将该文本在终端打印出来。

一个有趣的特性是可以利用echo在终端生成彩色的输出 shell中每种颜色都有对应的颜色码,其中分为字体颜色码值和背景颜色码值:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
*** 字体颜色 ***
重置    =   0
黑色    =   30
红色    =   31
绿色    =   32
黄色    =   33
蓝色    =   34
洋红    =   35
青色    =   36
白色    =   37

*** 背景颜色 ***
重置    =   0
黑色    =   40
红色    =   41
绿色    =   42
黄色    =   43
蓝色    =   44
洋红    =   45
青色    =   46
白色    =   47

可以发现除了重置,字体颜色和背景颜色码值相差10

要打印红色文本,可以使用如下命令:

1
2
3
4
5
6
echo -e "\e[1;31m This is Red text \e[0m"

#命令解析
\e[1;31m    将字体颜色设置为红色
\e[0m       将颜色重新置会,否则终端中的字体颜色会变为红色
只需要将31m中的31替换成想要的上述表格中的颜色码即可(取值只能为[31,37]之间)

要打印背景为红色的字体,可以使用如下命令:

1
echo -e "\e[1;41m This is Red Backgroud \e[0m"

printf命令

printf命令可以格式化输出内容,其格式化参数和C语言中的printf函数一样

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
$ printf "Welcom to Bash\n"
Welcom to Bash


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

# 输出内容:
   No       Name       Mark
    1     Sarath      80.35
    2      James      91.00
    3       Jeff      98.70

No    Name       Mark      
1     Sarath     80.35     
2     James      91.00     
3     Jeff       98.70

%s %c %d和%f都是格式控制符,其所对应的参数可以置于带引号的格式字符串之后。%-5s指明了一个格式为左对齐并且宽度为5的字符串替换(-表示左对齐),如果不用-指定对齐方式,字符串就采用右对齐的方式。