Linux系统shell工具打印输出
目前创新互联公司已为上千余家的企业提供了网站建设、域名、网络空间、网站改版维护、企业网站设计、比如网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。
shell脚本都是以#!/bin/bash开头;这是固定的写法,其中/bin/bash是bash命令的路径。那么Linux系统shell工具如何打印输出呢?跟我一起来看看吧!
一般都会通过chmod授予shell脚本的可执行权限。
在shell脚本中的打印输出通常会有echo和printf两种,前者会自动换行。
在shell中如果用双引号("")作为打印输出的内容时,如果双引号中有特殊字符需要在特殊字符前加上转义字符\,当然也可以使用单引号或者不使用引号直接输出,使用单引号或者不使用就不需要用到转义字符。
格式替代符
有一些常用的格式替代符会经常在打印输出中被用到,格式替代符只能用在printf输出中。
%-5s:表示5个字符宽度,其中的-表示左对齐
%-4.2f:其中的f表示浮点型,4.2代表长度为4个字符且小数点2位,如果小数点超过2会进行四舍五入,-表示左对齐。
整形:
%d:整数的参数会被转成一有符号的十进制数字
%u:整数的参数会被转成一无符号的十进制数字
%o:整数的参数会被转成一无符号的八进制数字
%x:整数的参数会被转成一无符号的十六进制数字,并以小写abcdef表示
%X:整数的参数会被转成一无符号的十六进制数字,并以大写ABCDEF表示
浮点型数:
%fdouble型的参数会被转成十进制数字,默认取小数点以下六位,四舍五入
%edouble型的参数以指数形式打印,有一个数字会在小数点前,六位数字在小数点后,而在指数部分会以小写的e来表示.
%E与%e作用相同,唯一区别是指数部分将以大写的'E来表示.
%gdouble型的参数会自动选择以%f或%e的格式来打印,其标准是根据欲打印的数值及所设置的有效位数来决定.
%G与%g作用相同,唯一区别在以指数形态打印时会选择%E格式.
字符及字符串:
%c读字符串的第一个字符
%s输出指定宽度的字符内容.
%p如果是参数是"void*"型指针则使用十六进制格式显示
打印输出
在写脚本的时候更多的会使用echo作为打印输出,且习惯性的会使用双引号。
echo
[root@localhosttmp]#echo"helloword"
helloword
printf
默认printf是不换行的
[root@localhosttmp]#printf"helloword"
helloword[root@localhosttmp]#
需要换行加上\n参数
[root@localhosttmp]#printf"helloword\n"
helloword
[root@localhosttmp]#
编写shell脚本
vimscrip.sh
#!/bin/bash
printf"%-5s%-10s%-4s\n"NoNameMark;
printf"%-5s%-10s%-4.2f\n"1aaa10.111;
printf"%-5s%-10s%-4.2f\n"2bbb20.146;
授予脚本执行权限:chmodu+xscrip.sh
如果使用echo就不能用格式替代符
#!/bin/bash
echoNoNameMark;
echo1aaa10.111;
echo2bbb20.146;
注意事项
在echo,printf中使用-e,-n参数时,-e,-n应该出现在命令行其它字符之前。
-e:如果要在echo的双引号使用转义序列作为参数得需要使用-e参数
-n:忽略末尾的换行符
不使用-e参数
[root@localhosttmp]#echo"1\n2"
1\n2
使用-e参数
[root@localhosttmp]#echo-e"1\n2"
转义序列:
/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;32mhelloword\e[0m"
\e[1;32m:将字体颜色设为绿色,\e[0m:将颜色重置
;
Linux系统日志文件存放在/var/log下
/var/log/cron 记录了系统定时任务相关的日志;
/var/log/cups 记录打印信息的日志;
/var/log/dmesg 记录了系统在开机时内核自检的信息,也可以使用dmesg命令直接查看内核自检信息。
/var/log/btmp 记录错误登录的日志,这个文件是二进制文件,不能直接vi查看,而要使用lastb命令查看;
/var/log/lastlog 记录系统中所有用户最后一次的登录时间的日志。这个文件也是二进制文件,不能直接vi,而要使用lastlog命令查看。
/var/log/mailog 记录邮件信息;
/var/log/message 记录系统重要信息的日志,记录Linux系统的绝大多数重要信息,如果系统出现问题,首先要检查的就是应该是这个日志文件;
/var/log/secure 记录验证和授权方面的信息,只要涉及账户和密码的程序都会记录。比如说系统的登录,ssh的登录,su切换用户,sudo授权,甚至添加用户和修改用户密码;
/var/log/wtmp 永久记录所有用户的登录、注销信息,同时记录系统的启动、重启、关机事件。同样这个文件也是一个二进制文件不能直接vi而需要使用last命令来查看;
/var/run/utmp 记录当前已经登录的用户的信息。这个文件会随着用户的登录和注销而不断变化,只记录当前登录用户的信息,同样这个文件不能直接vi,要使用w,who,users等命令;
printf终端打印
printf使用的参数和C语言中的printf函数一样,使用引用文本或由空格分隔的参数。在printf函数中,我们可以使用格式化字符串,指定字符串的宽度、左右对齐方式等。在默认情况下,printf不会在行尾添加换行符,需要手动添加。
复制代码代码如下:
printf "Hello world" #使用引用字符
printf "%-5s %-10s %-4s\n" No Name Mark #指定宽度及左对齐方式
printf "%-5s %-10s %-4s\n" 1 Sarath 80.3456
----仅供参考
当前 Linux 系统采用两套软件配合显示和管理打印。第一,CUPS(Common Unix Printing
507System,一般 Unix 打印系统),用于提供打印驱动和打印任务管理;第二,Ghostscript,一种
PostScript 解析器,作为 RIP 使用。
CUPS 通过创建并维护打印队列来管理打印机。如前所述,Unix 下的打印原本是设计成多
用户共享中央打印机的管理模式的。由于打印机本身比连接到它的电脑要慢,打印系统就需要
对打印任务进行调度使其保持顺序。CUPS 还能识别出不同类型的数据(在合理范围内)并转
换文件为可打印的格式。
为打印准备文件
作为命令行用户,尽管打印各种格式的文本都能实现,不过打印最多的,还是文本。
23.3.1 pr - 转换需要打印的文本文件
前面的章节我们也有提到过 pr 命令,现在我们来探讨一下这条命令结合打印使用的一些选
项。我们知道,在打印的历史上,基于字符的打印机曾经用过等宽字体,致使每页只能打印固
定的行数和字符数,而 pr 命令则能够根据不同的页眉和页边距排列文本使其适应指定的纸张。