(002)Linux下Shell终端打印

十年运维系列之基础篇 - Linux

作者:曾林 

联系:1494445739@qq.com

网站:www.jplatformx.com

版权:文章未经同意请勿转载


 

一、引言

  终端作为交互式工具,用户可以通过它与shell环境进行交互。在终端中打印文本是绝大多数shell脚本和工具日常需要进行的基本任务。能够执行打印的方法有很多,格式也各有不同。

 

二、终端打印

1. echo命令

  echo是用于终端打印的基本命令。在默认情况下,echo在每次调用后会添加一个换行符。

  有点特别需要注意的是,我们在使用echo来打印的时候,最好使用""来引用需要打印的内容。比如:

echo "hello world! "

  如果用单引号来引用内容的话,如果有变量(比如:$PATH)出现在单引号内的话,bash并不会对单引号内的变量进行求值,而不知单纯地照原样来进行显示。如下图:

  在默认情况下,echo会将一个换行符追加到输出文本的尾部。使用选项-n来忽略结尾的换行符。如下图所示:

echo同样接受双引号字符串内的转义序列(escape sequence)作为参数。如果需要使用转义序列,则采用echo -e "包含转义序列的字符串"这种形式。如下图:

 

2. printf命令

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

printf "hello jplatformx"

  printf使用引用文本或由空格分隔的参数。我们可以在printf中使用格式化字符串。我们还可以指定字符串的宽度、左右对齐的方式等。在默认的情况下,printf并不像echo命令一样会自动添加换行符,我们必须在需要的时候手动添加,比如在下面的脚本中:

1 #!/bin/bash
2 
3 # printf.sh: test "printf" statement
4 
5 printf "%-5s %-10s %-4s\n" No Name Mark
6 printf "%-5s %-10s %-4.2f\n" 1 Sarath 80.3456
7 printf "%-5s %-10s %-4.2f\n" 2 James 90.9989
8 printf "%-5s %-10s %-4.2f\n" 3 Jeff 77.564

  我们会得到如下格式化的输出,如下图所示:

  %s、%c、%d和%f都是格式替代符,其所对应的参数可以置于带引号的格式字符串之后。

  %-5s指明了一个格式为左对齐并且宽度为5的字符串替代(-表示左对齐)。如果不用-指定对齐方式,字符串则采用右对齐形式。宽度指定了保留给某个变量的字符数。对Name而言,保留宽度是10。因此,任何Name字段的内容都会被显示在10字符宽的保留区域内,如果内容不足10字符,余下的则以空格符填充。

  对于浮点数,我们可以使用其他参数对小数部分进行舍入。

  对于Mark字段,我们将其格式化为%-4.2f,其中.2指定保留2个小数位。注意,在每行格式字符串后都有一个换行符\n。

 

posted @ 2015-03-26 23:40  jplatformx  阅读(413)  评论(0编辑  收藏  举报