Linux常用命令--echo与printf
摘要
-
在编写 shell 脚本时,echo 和 printf 是两个常用的命令,用于输出信息到标准输出设备。虽然它们看似简单,但深入理解它们的使用方式和内部机制对于编写高效、可读性强的脚本至关重要。
echo 命令
基本语法和用法
-
echo
命令的基本语法为:
1 | echo [选项] [字符串或变量] |
-
参数和选项
1 | -n:不换行输出。 |
实际应用示例
1 | - 打印一个文本消息。注意:引号是可选的 |
echo输出颜色化文本
1 | echo -e "\e[1;31mError:\e[0m Something went wrong." |
printf 命令
基本语法和用法
-
printf
命令的基本语法为:
1 | printf [格式化字符串] [参数] |
实际应用示例
1 | - 打印文本消息: |
在 printf 命令中,支持的格式化符号用于指定输出的格式,包括整数、浮点数、字符串等。
以下是常用的格式化符号及其使用示例:
-
1.整数格式化符号:
- %d:以十进制形式输出整数。
- %.nd:指定数字占几位,不足部分前面补0。
- %o:以八进制形式输出整数。
- %x 或 %X:以十六进制形式输出整数(小写或大写)。
1
2
3
4
5printf "%d\n" 42 # 输出:42
printf "%.3d\n" 42 # 输出:042
printf "%o\n" 42 # 输出:52
printf "%x\n" 42 # 输出:2a
printf "%X\n" 42 # 输出:2A -
2.浮点数格式化符号:
- %f:以十进制形式输出浮点数。
- %.nf:指定小数点后保留 n 位小数。
1
2printf "%f\n" 3.14159 # 输出:3.141590
printf "%.2f\n" 3.14159 # 输出:3.14 -
3.字符串格式化符号:
- %c:输出单个字符。
- %s:输出字符串。
1
2printf "%c\n" 'A' # 输出:A
printf "%s\n" "Hello" # 输出:Hello -
4.其他格式化符号:
- %p:以十六进制形式输出指针地址。
- %u:输出无符号整数。
- %e 或 %E:以科学计数法形式输出浮点数(小写或大写)。
- %g 或 %G:根据实际情况自动选择 %f 或 %e 格式输出浮点数(小写或大写)。
- %%:输出一个百分号。
1
2
3
4
5
6
7printf "%p\n" $var # 输出:0x7ffeefbff748 (变量 var 的地址)
printf "%u\n" -42 # 输出:4294967254
printf "%e\n" 123.456 # 输出:1.234560e+02
printf "%E\n" 123.456 # 输出:1.234560E+02
printf "%g\n" 123.456 # 输出:123.456
printf "%G\n" 123.456 # 输出:123.456
printf "100%%\n" # 输出:100%
不同进制之间进行相互转换
10进制转其它进制
1 | # 10进制转2进制,obase=2 指定输出进制为二进制,默认为10进制。 |
2进制转其它进制
1 | # 2进制转10进制,ibase=2 指定输入进制为二进制,默认为10进制。 |
8进制转其它进制
1 | # 8进制转10进制 |
16进制转其它进制
1 | # 16进制转10进制 |
echo 与 printf 的比较
输出效果的比较
-
echo 会自动换行,而 printf 需要显式指定换行符。
-
printf 提供更灵活的格式化输出方式。
性能比较
-
在大量输出时,echo 通常比 printf 更高效。
适用场景的选择
-
简单文本输出场景,使用 echo。
-
需要格式化输出或者更精确控制输出格式时,使用 printf。