Linuxshell之打印输出
经常需要和shell命令打交道,但是⼀直没有系统的学习,接下来会花1到2个⽉的时间系统的学习⼀下shell命令,接下来就开启shell命令的奇妙旅⾏吧。本章主要介绍shell的打印输出。
知识要点
shell脚本都是以#!/bin/bash开头;这是固定的写法,其中/bin/bash是bash命令的路径。
⼀般都会通过chmod授予shell脚本的可执⾏权限。
在shell脚本中的打印输出通常会有echo和printf两种,前者会⾃动换⾏。
在shell中如果⽤双引号("")作为打印输出的内容时,如果双引号中有特殊字符需要在特殊字符前加上转义字符\,当然也可以使⽤单引号或者不使⽤引号直接输出,使⽤单引号或者不使⽤就不需要⽤到转义字符。
格式替代符
有⼀些常⽤的格式替代符会经常在打印输出中被⽤到,格式替代符只能⽤在printf输出中。
%-5s:表⽰5个字符宽度,其中的-表⽰左对齐
%-4.2f:其中的f表⽰浮点型,4.2代表长度为4个字符且⼩数点2位,如果⼩数点超过2会进⾏四舍五⼊,-表⽰左对齐。
整形:
%d:整数的参数会被转成⼀有符号的⼗进制数字
%u:整数的参数会被转成⼀⽆符号的⼗进制数字
%o:整数的参数会被转成⼀⽆符号的⼋进制数字
%x:整数的参数会被转成⼀⽆符号的⼗六进制数字, 并以⼩写abcdef表⽰
%X:整数的参数会被转成⼀⽆符号的⼗六进制数字, 并以⼤写ABCDEF表⽰
浮点型数:
%f double型的参数会被转成⼗进制数字, 默认取⼩数点以下六位, 四舍五⼊
%e double型的参数以指数形式打印, 有⼀个数字会在⼩数点前, 六位数字在⼩数点后, ⽽在指数部分会以⼩写的e来表⽰.
%E 与%e作⽤相同, 唯⼀区别是指数部分将以⼤写的E来表⽰.
%g double型的参数会⾃动选择以%f或%e的格式来打印, 其标准是根据欲打印的数值及所设置的有效位数来决定.
%G 与%g作⽤相同, 唯⼀区别在以指数形态打印时会选择%E格式.
字符及字符串:
%c 读字符串的第⼀个字符
%s 输出指定宽度的字符内容.
%p 如果是参数是"void *"型指针则使⽤⼗六进制格式显⽰
打印输出
在写脚本的时候更多的会使⽤echo作为打印输出,且习惯性的会使⽤双引号。
echo
[root@localhost tmp]# echo "hello word"
hello word
printf
默认printf是不换⾏的
[root@localhost tmp]# printf "hello word"
hello word[root@localhost tmp]#
需要换⾏加上\n参数
[root@localhost tmp]# printf "hello word\n"
hello word
[root@localhost tmp]#
编写shell脚本
vim scrip.sh
#!/bin/bash
printf "%-5s %-10s %-4s\n" No Name Mark;
printf "%-5s %-10s %-4.2f\n" 1 aaa 10.111;
printf "%-5s %-10s %-4.2f\n" 2 bbb 20.146;
授予脚本执⾏权限:chmod u+x scrip.sh
如果使⽤echo就不能⽤格式替代符
#!/bin/bash
echo No Name Mark;
echo 1 aaa 10.111;
echo 2 bbb 20.146;
注意事项
在echo,printf中使⽤-e,-n参数时,-e,-n应该出现在命令⾏其它字符之前。
-e:如果要在echo的双引号使⽤转义序列作为参数得需要使⽤-e参数
-n:忽略末尾的换⾏符
linux换行按哪个键不使⽤-e参数
[root@localhost tmp]# echo "1\n2"
1\n2
使⽤-e参数
[root@localhost tmp]# echo -e "1\n2"
1
2
转义序列:
/
n:换⾏
/t:tab键
彩⾊输出
字体颜⾊包括:0=重置,30=⿊⾊,31=红⾊,32=绿⾊,33=黄⾊,34=蓝⾊,35=洋红,36=青⾊,37=⽩⾊背景颜⾊包括:0=重置,40=⿊⾊,41=红⾊,42=绿⾊,43=黄⾊,44=蓝⾊,45=洋红,46=青⾊,47=⽩⾊echo -e "\e[1;32m hello word \e[0m"
\e[1;32m:将字体颜⾊设为绿⾊,\e[0m:将颜⾊重置
总结
如果输出的内容涉及到特殊字符建议使⽤printf来输出。