摘要
echo 命令
基本语法和用法
1 2 3 4 5
| -n:不换行输出。 -e:解释转义字符。 -E:禁止解释转义字符。
常见的转义字符包括 \n(换行)、\t(制表符)等。
|
实际应用示例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| - 打印一个文本消息。注意:引号是可选的 echo "Hello World"
- 打印一个带环境变量的消息 echo "My path is $PATH"
- 打印一个不带尾随换行符的消息 echo -n "Hello World"
- 将消息追加到文件中 echo "Hello World" >> file.txt
- 启用反斜杠转义(特殊字符)的解释 echo -e "Column 1\tColumn 2"
- 打印最后一个执行命令的退出状态 echo $?
|
echo输出颜色化文本
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
| echo -e "\e[1;31mError:\e[0m Something went wrong."
echo -e "\033[1;31mError:\033[0m Something went wrong."
\e[1;31m:这部分控制文本的颜色和样式。 其中: \e 表示这是一个转义字符,它是 ANSI 转义序列的起始,后跟一系列用于控制文本颜色、样式等的数字和字符。这里\e也可以用\033替代。 1 表示设置文本为粗体(或者称为高亮)。 31 表示设置文本颜色为红色。不同的数字代表不同的颜色,这里的 31 对应红色。
\e[0m:这部分重置文本格式为默认值。这样做是为了确保在之后的输出中文本样式不受之前的影响。
因此,这条命令会输出一个红色的“Error:”,接着是一个空格,然后是普通文本“Something went wrong.”。整体效果是,错误消息以红色高亮显示,使其在输出中更加醒目。
颜色: 30:黑色 31:红色 32:绿色 33:黄色 34:蓝色 35:紫色 36:青色 37:白色
样式: 0:重置所有样式(默认值) 1:粗体(或高亮) 2:暗色(不常见,视终端而定) 3:斜体(不常见,视终端而定) 4:下划线 5:闪烁(不常见,视终端而定) 7:反显(前景色与背景色交换) 8:隐藏(文本不可见)
这些数字和字符可以单独使用,比如\e[1m 表示加粗,\e[31m 表示设置文本颜色为红色。 也可以组合使用,比如 \e[1;31m 表示设置文本为红色并加粗,中间用分号隔开。
|
printf 命令
基本语法和用法
实际应用示例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| - 打印文本消息: printf "%s\n" "Hello world"
- 以蓝色粗体打印整数:使用方法同echo printf "\e[1;34m%.3d\e[0m\n" 42
- 打印带有Unicode Euro符号的浮点数: printf "\u20AC %.2f\n" 123.4
- 打印由变量组成的文本消息: printf "var1: %s\tvar2: %s\n" "$var1" "$var2"
- 将格式化的消息存储在变量中: printf -v myvar "This is %s = %d\n" "a year" 2016 echo $myvar This is a year = 2016
|
在 printf 命令中,支持的格式化符号用于指定输出的格式,包括整数、浮点数、字符串等。
以下是常用的格式化符号及其使用示例:
-
1.整数格式化符号:
- %d:以十进制形式输出整数。
- %.nd:指定数字占几位,不足部分前面补0。
- %o:以八进制形式输出整数。
- %x 或 %X:以十六进制形式输出整数(小写或大写)。
1 2 3 4 5
| printf "%d\n" 42 printf "%.3d\n" 42 printf "%o\n" 42 printf "%x\n" 42 printf "%X\n" 42
|
-
2.浮点数格式化符号:
- %f:以十进制形式输出浮点数。
- %.nf:指定小数点后保留 n 位小数。
1 2
| printf "%f\n" 3.14159 printf "%.2f\n" 3.14159
|
-
3.字符串格式化符号:
1 2
| printf "%c\n" 'A' printf "%s\n" "Hello"
|
-
4.其他格式化符号:
- %p:以十六进制形式输出指针地址。
- %u:输出无符号整数。
- %e 或 %E:以科学计数法形式输出浮点数(小写或大写)。
- %g 或 %G:根据实际情况自动选择 %f 或 %e 格式输出浮点数(小写或大写)。
- %%:输出一个百分号。
1 2 3 4 5 6 7
| printf "%p\n" $var printf "%u\n" -42 printf "%e\n" 123.456 printf "%E\n" 123.456 printf "%g\n" 123.456 printf "%G\n" 123.456 printf "100%%\n"
|
不同进制之间进行相互转换
10进制转其它进制
1 2 3 4 5 6 7 8 9 10 11 12
| echo "obase=2; 255" | bc
echo "obase=8; 255" | bc printf "%o\n" 255
echo "obase=16; 255" | bc printf "%x\n" "255" printf "%X\n" "255"
|
2进制转其它进制
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| echo "ibase=2; 11111111" | bc echo $((2#11111111)) printf "%d\n" "0b11111111" printf "%d\n" $((2#11111111))
echo "obase=16; ibase=2; 11111111" | bc printf "%X\n" "0b11111111" printf "%x\n" "0b11111111" printf "%X\n" $((2#11111111)) printf "%x\n" $((2#11111111))
echo "obase=8; ibase=2; 11111111" | bc printf "%o\n" "0b11111111" printf "%o\n" $((2#11111111))
|
8进制转其它进制
1 2 3 4 5 6 7 8 9 10 11 12 13
| echo "ibase=8; 377" | bc echo $((8#377)) printf "%d\n" $((8#377))
echo "obase=2; ibase=8; 377" | bc
echo "obase=16; ibase=8; 377" | bc printf "%X\n" "$((8#377))" printf "%x\n" "$((8#377))"
|
16进制转其它进制
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| echo "ibase=16; FF" | bc echo $((16#FF)) printf "%d\n" "0xFF" printf "%d\n" $((16#FF))
echo "obase=2; ibase=16; FF" | bc
echo "obase=8; ibase=16; FF" | bc printf "%o\n" "0xFF" printf "%o\n" "$((16#FF))"
|
echo 与 printf 的比较
输出效果的比较
性能比较
适用场景的选择