1.2 终端打印

《Linux Shell 脚本攻略(第 2 版)》读书笔记

echo

echo 是用于终端打印的基本命令。

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

示例:

$ echo 'Hello world !abc'
Hello world !abc
$ echo "Hello world !abc"
-bash: !abc: event not found
$ echo Hello world !abc
-bash: !abc: event not found

上面三种使用方式只有使用单引号才能正常打印,各种打印方式会存在如下限制:

  1. 单引号:不能使用变量替换;
  2. 双引号:打印感叹号(!)会有问题;
  3. 无引号:不能打印分号( ; ),因为分号在 Bash shell 中被用作命令界定符;不能使用转义字符;

命令选项

  • -n: 用于忽略结尾的换行符;
  • -e: 用于引号内的字符串中使用转义字符;

打印彩色输出

$ echo -e "\e[1;31m This is red text \e[0m"

\e[1;31m 将颜色设置为红色,\e[0m 将颜色重新值回。要设置成别的颜色,只要将31替换成想要的颜色码就行了。

常用颜色码:

  • 重置 0
  • 黑色 30
  • 红色 31
  • 绿色 32
  • 黄色 33
  • 蓝色 34
  • 洋红 35
  • 青色 36
  • 白色 37

printf

printf 是另一个终端打印命令。printf 使用的参数和C语言中的printf函数一样。

默认情况下,printf并不像echo命令一样会自动添加换行符,我们必须在需要的时候手动添加,比如在下面的脚本中:

#!/bin/bash

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

执行后输出如下:

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

补充内容

在 echo 和 printf 中使用命令选项时,要确保选项出现在所有字符串之前,否则会被视为字符串。

你可能感兴趣的:(1.2 终端打印)