`

Linux Shell编程之标准彩色对齐打印

 
阅读更多

看到Linux系统中好多软件包括系统本身启动的时候打印整整齐齐的[ OK ], [ Failed ],感觉非常舒服。

但是自己写了很多shell程序,提示语句都是简单的echo或printf,最多可以打印个彩色的状态提示。

近来总是写升级包、安装包的脚本,Shell编程也感觉越来越顺手,所以想解决这个问题。

 

我解决这个问题用了很简单的方法,可能有高人有更加简洁的代码可以实现,但是我写这个代码容易读懂,思想也简单,希望能帮助搜索到这篇博客的童鞋。

 

基本思想:

用函数Echo实现白色文字加状态提示。

用函数ColorEcho实现彩色文字加状态提示。

状态提示颜色固定。

每行都按66个字符进行对齐。也就是说最后的状态是对齐的,前面写文字,之间是空格。

实现方法为:每次记录当前打印的字符数,如果遇到OK或Failed(大小写区分),就认为当前打印字符数为0,并打印状态信息。

 

代码如下(可复制使用):

使用时刻保存为单独文件,在别的shell脚本中调用即可,比如存为color_echo.sh以后,同目录下的shell脚本可以这样调用:

. color_echo.sh;

就是一个点,一个空格,加上文件路径,打个冒号(冒号可选,shell语法,有冒号的话,同一行还可以写代码,这个你懂的)。

 

# 前景色:30(黑色)、31(红色)、32(绿色)、 33(黄色)、34(蓝色)、35(洋红)、36(青色)、37(白色)。
# 背景色:十位换成4
okstatus="[ \033[0;32;40mOK\033[0m ]\n"
failstatus="[ \033[0;31;40mFAILED\033[0m ]\n"
last_len=0
function Echo()
{
	content=$1
	if [[ $content = "OK" ]]; then
		content=$okstatus
		content_len=0
	elif [[ $content = "Failed" ]]; then
		content=$failstatus
		content_len=0
	else
		content_len=${#content}
		endlen=$content_len
		((startlen=endlen-2))
		if [[ ${content:$startlen:$endlen} = "\n" ]]; then
			content_len=0
		fi
	fi
	if [ $last_len -ne 0 -a $content_len -eq 0 ]; then
		((blank_len=66-last_len))
		printf "%${blank_len}s" " "
	fi
	echo -en "$content"
	((last_len=last_len+content_len))
	if [ $content_len -eq 0 ]; then
		((last_len=0))
	fi
}

function ColorEcho()
{
	color=white
	if [ $# -ge 2 ]; then
		color=$1
		content=$2
	elif [ $# -eq 1 ]; then
		content=$1
	else
		return
	fi
	case $color in 
		black)
			color=30
			;;
		red)
			color=31
			;;
		green)
			color=32
			;;
		yellow)
			color=33
			;;
		"blue")
			color=34
			;;
		magenta)
			color=35
			;;
		cyan)
			color=36
			;;
		white)
			color=37
			;;
		*)
			color=0
			;;
	esac
	if [[ $content = "OK" ]]; then
		content=$okstatus
		content_len=0
	elif [[ $content = "Failed" ]]; then
		content=$failstatus
		content_len=0
	else
		content_len=${#content}
		endlen=$content_len
		((startlen=endlen-2))
		if [[ ${content:$startlen:$endlen} = "\n" ]]; then
			content_len=0
		fi
	fi
	if [ $last_len -ne 0 -a $content_len -eq 0 ]; then
		((blank_len=66-last_len))
		printf "%${blank_len}s" " "
	fi
	if [ $color -gt 0 ]; then
		content="\033[0;${color};40m${content}\033[0m"
	fi
	echo -en "$content"
	((last_len=last_len+content_len))
	if [ $content_len -eq 0 ]; then
		((last_len=0))
	fi
}

if [ 0 -gt 1 ]; then
	Echo "Start to do ... "
	Echo "OK"
	Echo "Stop xxx ..."
	Echo "Failed"
fi

  

分享到:
评论

相关推荐

    LinuxShell编程基础教程.pdf

    Linux Shell 编程基础教程 本资源为 Linux Shell 编程基础教程,涵盖了 Linux Shell 编程的基础知识,包括语法基本介绍、变量、环境变量、Shell 命令和流程控制等。 一、语法基本介绍 在 Linux Shell 编程中,...

    linux Shell编程入门 实例讲解详解

    Linux Shell编程入门实例讲解详解 Linux Shell编程是Linux系统中一种非常灵活的工具,通过shell编程可以自动化大量的任务,especially适合那些易用性、可维护性和便携性比效率更重要的任务。下面是Linux Shell编程...

    LinuxShell编程基础.pdf

    Linux Shell 编程基础 Linux Shell 编程基础是 Linux 操作系统中一个非常重要的组件,它提供了一个交互式命令行界面,允许用户输入命令来执行各种操作。在 Linux 系统中,Shell 是一个命令解释器,它可以解释用户...

    Linux Shell编程从入门到精通

    本书由浅入深、循序渐进地详细讲解了LinuxShell编程的基本知识。这些基本知识包括Shell编程的基本知识、文本处理的工具和方法、正则表达式、Linux系统知识等。  本书旨在通过理清Linux Shell编程的脉络,从基本概念...

    linux shell 编程1

    10. **Shell内置命令**:如`echo`(打印文本到标准输出)、`read`(从标准输入读取数据)、`source`(执行脚本中的命令,不创建子进程)等。 在学习和实践Linux Shell编程时,建议从简单的脚本开始,逐步增加复杂性...

    实战LINUX_SHELL编程与服务器管理.pdf

    Linux Shell编程与服务器管理是系统管理员和网络管理员必须掌握的高级技能之一。Shell作为操作系统的一个重要组件,是用户与系统核心之间的接口,几乎所有管理者在日常工作中都会频繁地与Shell打交道。Shell具有解释...

    linux shell编程手册

    Linux Shell编程是Linux系统中非常重要的一个环节,它是一种命令解释器,同时也是脚本编程语言。Shell编程使得用户可以通过编写脚本来自动化重复性任务,提高工作效率。这份"Linux Shell编程手册"将引领初学者深入...

    2本linux shell 编程chm

    Linux Shell编程是Linux系统管理与自动化任务的核心技术之一,它主要指的是使用Shell脚本来执行一系列命令,实现自动化操作。在Linux环境中,Bash(Bourne-Again SHell)是最常用的Shell,也是许多Linux发行版的默认...

    LINUX SHELL编程从初学到精通

    但根据文件信息中的标题和描述,可以推断出本书内容涉及Linux Shell编程的基础知识和技能提升。下面将基于Linux Shell编程这一主题,详细说明相关知识点。 Linux Shell编程是学习Linux系统管理和自动化脚本的重要...

    linux Shell 编程实例书一本

    Linux Shell编程是Linux系统管理与自动化任务的核心技术之一。Shell脚本可以理解为Linux环境下的批处理程序,它允许用户通过编写脚本来执行一系列命令,从而实现自动化操作,提高工作效率。这本书《Linux Shell编程...

    linux shell 编程教材配套PPT

    Linux Shell编程是Linux系统管理与自动化任务处理的重要组成部分。Shell脚本可以理解为Linux环境下的批处理程序,它允许用户通过编写简单的命令序列来执行复杂的任务。这份"Linux Shell编程教材配套PPT"将帮助你深入...

    linux shell编程指南

    linux shell编程经典书籍,该版本为中文版,读懂这本书,你将成为Linux编程高手

    Linux Shell编程基础 linux编程 shell编程

    Linux Shell编程基础 linux编程 shell编程 linux基础编程

    Linux与UNIX Shell编程指南.pdf

    "Linux与UNIX Shell编程指南" Linux与UNIX Shell编程指南是计算机科学领域中一本经典的指南手册,旨在帮助读者快速掌握Linux与UNIX操作系统下的shell编程技术。下面是从该书中生成的相关知识点: 1. Shell概述 ...

    linux Shell 编程视频10

    linux Shell 编程视频,适合初学者

    实战Linux Shell编程与服务器管理

    实战Linux Shell编程与服务器管理 自己做的书签

    shell编程入门经典--LINUX与UNIX Shell编程指南 (中文pdf版)

    《LINUX与UNIX Shell编程指南》是一本专为初学者设计的shell编程教程,它深入浅出地介绍了在Linux和UNIX系统中如何使用Shell进行高效自动化任务处理。Shell编程是Linux和UNIX系统中的核心技术,它允许用户通过命令行...

    LinuxShell编程全攻略

    Linux Shell编程是利用Shell语言进行的一种编程方式,它是Linux操作系统中不可或缺的一部分。Shell可以解释和执行用户输入的命令,同时也可以用于编写脚本程序,实现自动化的任务处理。Shell编程的主要特点包括定义...

    Linux shell编程

    8. **脚本示例**:“新手看招 Linux Shell编程简单一例”可能会展示如何编写简单的脚本,如创建一个打印“Hello, World!”的脚本。 9. **命令解析过程**:“转载:bash命令解析过程”可能会深入探讨Bash是如何解析...

    linux shell 编程指南

    在IT领域,Linux Shell编程是系统管理员和开发者必备的技能之一。它允许用户通过命令行接口与操作系统进行交互,执行自动化任务,编写脚本,甚至进行复杂的系统管理。本篇文章将深入探讨“Linux Shell编程指南”中...

Global site tag (gtag.js) - Google Analytics