echo命令用法
linux的echo命令, 在shell编程中极为常用, 在终端下打印变量value的时候也是常常用到的, 因此有必要了解下echo的用法,echo命令的功能是在显示器上显示一段文字,一般起到一个提示的作用。
该命令的一般格式为: echo [ -n ] 字符串
其中选项n表示输出文字后不换行;字符串能加引号,也能不加引号。
用echo命令输出加引号的字符串时,将字符串原样输出;
用echo命令输出不加引号的字符串时,将字符串中的各个单词作为字符串输出,各字符串之间用一个空格分割。
语 法:echo [-ne][字符串]
echo [–help][–version]
补充说明:echo会将输入的字符串送往标准输出。输出的字符串间以空白字符隔开, 并在最后加上换行号。
参 数:-n 不要在最后自动换行
-e 若字符串中出现以下字符,则特别加以处理,而不会将它当成一般文字输出:
\a 发出警告声 \b 删除前一个字符 \c 最后不加上换行符号 \f 换行但光标仍旧停留在原来的位置 \n 换行且光标移至行首 \r 光标移至行首,但不换行 \t 插入tab \v 与\f相同 \\ 插入\字符 \nnn 插入nnn(八进制)所代表的ASCII字符
1、显示普通的字符串,双引号可以省略
[root@localhost ~]#echo "it is a test" it is a test [root@localhost ~]#echo it is a test it is a test
2、显示转义字符
[root@localhost ~]#echo "\"it is a test\"" "it is a test"
3、显示变量
[root@localhost ~]#vim test.sh #!/bin/bash read name echo "$name is me" [root@localhost ~]#./test.sh bob #标准输入 bob is me
4、显示命令执行结果
命令的执行结果赋值给某个变量有两种方式:
value=`command`
value=$(command)
[root@localhost ~]#echo `date` Sun Apr 2 23:27:19 CST 2017 [root@localhost ~]#echo $(date) Sun Apr 2 23:27:27 CST 2017
5、echo -e 启用反斜杠转义的功能,意思是所有反斜杠字符都是有特殊功能,
[root@localhost ~]#echo -e "what a beautiful day" #正常输出 what a beautiful day [root@localhost ~]#echo -e "what a beautiful day\c" #默认是最后换行,-c:不换行 what a beautiful day[root@localhost ~]# [root@localhost ~]#echo -e "what a beautiful day\nyes" #换行 what a beautiful day yes [root@localhost ~]#echo -e "what a\tbeautiful day\nyes\r" #加一个tab,空格 what a beautiful day yes [root@localhost ~]#echo -e "what a\tbeautiful day\nyes\\" #显示\ what a beautiful day yes\
6、echo显示字符颜色
shell脚本中echo显示内容带颜色显示,echo显示带颜色,需要使用参数-e
格式如下:
echo -e "\033[字背景颜色;文字颜色m字符串\033[0m"
例如:
echo -e "\033[41;36m something here \033[0m"
其中41的位置代表底色, 36的位置是代表字的颜色 ,最后是控制字符,含义见下面
注:
1、字背景颜色和文字颜色之间是英文的";"
2、文字颜色后面有个m
3、字符串前后可以没有空格,如果有的话,输出也是同样有空格
下面是相应的字和背景颜色,可以自己来尝试找出不同颜色搭配
例如
echo -e "\033[31m 红色字 \033[0m" echo -e "\033[34m 黄色字 \033[0m" echo -e "\033[41;33m 红底黄字 \033[0m" echo -e "\033[41;37m 红底白字 \033[0m"
——————
字颜色:30—–37
echo -e "\033[30m 黑色字 \033[0m" echo -e "\033[31m 红色字 \033[0m" echo -e "\033[32m 绿色字 \033[0m" echo -e "\033[33m 黄色字 \033[0m" echo -e "\033[34m 蓝色字 \033[0m" echo -e "\033[35m 紫色字 \033[0m" echo -e "\033[36m 天蓝字 \033[0m" echo -e "\033[37m 白色字 \033[0m"
—————————
字背景颜色范围:40—–47
echo -e "\033[40;37m 黑底白字 \033[0m" echo -e "\033[41;37m 红底白字 \033[0m" echo -e "\033[42;37m 绿底白字 \033[0m" echo -e "\033[43;37m 黄底白字 \033[0m" echo -e "\033[44;37m 蓝底白字 \033[0m" echo -e "\033[45;37m 紫底白字 \033[0m" echo -e "\033[46;37m 天蓝底白字 \033[0m" echo -e "\033[47;30m 白底黑字 \033[0m"
7、echo控制字符闪烁
如果要将文字添加一些控制符号,例如闪烁灯花样,需要设置如下
echo -e "\033[背景颜色;字符颜色;控制字符m字符串\033[0m"
例如:显示结果为绿底黑字,然后在闪烁,这里的5是控制字符,具体的含义见下面,代表闪烁的功能,“\033[42;30;5m”这是一个控制符号,是对后面显示的字符生效,即“***”,后面又是一个控制符“\033[0m”表示将所有的属性都清除掉,也是对后面的字符生效,意思是后面所有的显示都是正常的了,
echo -e "\033[42;30;5m***\033[0m"
如果后面的控制符号没有的话,连下面的终端都会一同跟着闪烁,
[root@localhost ~]#echo -e "\033[42;30;5m***"
最后面控制选项说明
\33[0m 关闭所有属性 \33[1m 设置高亮度 \33[4m 下划线 \33[5m 闪烁 \33[7m 反显 \33[8m 消隐 \33[30m — \33[37m 设置前景色 \33[40m — \33[47m 设置背景色 \33[nA 光标上移n行 \33[nB 光标下移n行 \33[nC 光标右移n行 \33[nD 光标左移n行 \33[y;xH设置光标位置 \33[2J 清屏 \33[K 清除从光标到行尾的内容 \33[s 保存光标位置 \33[u 恢复光标位置 \33[?25l 隐藏光标 \33[?25h 显示光标
示例:显示闪烁的三角形在命令界面
[root@localhost ~]#echo -e "\033[;;5m*********\033[0m \n \033[;;4m*******\033[0m \n \033[;31m*****\033[0m \n \033[42;30;5m***\033[0m \n \ \033[43;32;4m*\033[0m"
执行结果:第一行和第四行在闪烁
8、模拟服务启动
这样和正常的服务脚本显示的启动打印的界面是一样的,以后可以自己写服务脚本来实现服务的启动和停止,下面有更好的方法,可以格式化输出
[root@localhost ~]#vim test.sh #!/bin/bash echo -e "stopping nginx: \c" touch a echo -e "[\033[32m OK \033[0m]" echo -e "starting nginx: \c" touch a echo -e "[\033[31mFAILED\033[0m]" [root@localhost ~]#./test.sh stopping nginx: [ OK ] starting nginx: [FAILED] [root@localhost ~]#service sshd restart Stopping sshd: [ OK ] Starting sshd: [FAILED]
9、printf函数
printf 命令模仿 C 程序库(library)里的 printf() 程序。使用printf的脚本比使用echo移植性好。
printf 使用引用文本或空格分隔的参数,外面可以在printf中使用格式化字符串,还可以制定字符串的宽度、左右对齐方式等。默认printf不会像 echo 自动添加换行符,我们可以手动添加 \n。
printf 命令的语法:
printf format-string [arguments…]
参数说明:
format-string: 为格式控制字符串
arguments: 为参数列表。
例子:printf不会自动换行
[root@localhost ~]#echo "hello world" hello world [root@localhost ~]#printf "hello world" hello world[root@localhost ~]# [root@localhost ~]#printf "hello world \n" hello world
例子:格式化输出,最好都使用英文,英文下一个空格和一个字符占的宽度是一样的,如果既有英文,又有中文,输出是正确的,但是一个汉字占1.5个位置,看起来不是对齐的
[root@localhost ~]#cat a.sh #!/bin/bash printf "%-10s %-8s %-4s\n" name sex kg printf "%-10s %-8s %-4.2f\n" andy man 66.1234 printf "%-10s %-8s %-4.2f\n" bob woman 48.1 [root@localhost ~]#bash a.sh name sex kg andy man 66.12 bob woman 48.10
说明:
%s %c %d %f都是格式替代符
%-10s 指一个宽度为10个字符(-表示左对齐,没有则表示右对齐),任何字符都会被显示在10个字符宽的字符内,如果不足则自动以空格填充,超过也会将内容全部显示出来。
%-4.2f 指格式化为小数,其中.2指保留2位小数。
printf也有转义符,遇到转义符,安装转义符的含义来进行操作
序列 | 说明 |
---|---|
\a | 警告字符,通常为ASCII的BEL字符 |
\b | 后退 |
\c | 抑制(不显示)输出结果中任何结尾的换行字符(只在%b格式指示符控制下的参数字符串中有效),而且,任何留在参数里的字符、任何接下来的参数以及任何留在格式字符串中的字符,都被忽略 |
\f | 换页(formfeed) |
\n | 换行 |
\r | 回车(Carriage return) |
\t | 水平制表符 |
\v | 垂直制表符 |
\\ | 一个字面上的反斜杠字符 |
\ddd | 表示1到3位数八进制值的字符。仅在格式字符串中有效 |
\0ddd | 表示1到3位的八进制值字符 |
不能输出颜色,不好,要想实现rpm安装的服务那样来启动关闭服务的时候显示ok和failed,用下面的方法来实现,感觉是个好方法,不管前面的字符多长,都会格式化输出
[root@localhost ~]#vim a.sh #!/bin/bash printf "%-59s" "Starting nginx:" echo -e "[\033[32m OK \033[0m]" printf "%-59s" "Stopping nginx:" echo -e "[\033[31mFAILED\033[0m]" echo printf "%-59s" "Starting mysqld:" echo -e "[\033[32m OK \033[0m]" printf "%-59s" "Stopping mysqld:" echo -e "[\033[31mFAILED\033[0m]" [root@localhost ~]#bash a.sh Starting nginx: [ OK ] Stopping nginx: [FAILED] Starting mysqld: [ OK ] Stopping mysqld: [FAILED]
–
–
–
评论前必须登录!
注册