Chinaunix首页 | 论坛 | 博客
  • 博客访问: 435333
  • 博文数量: 55
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 1584
  • 用 户 组: 普通用户
  • 注册时间: 2013-05-04 15:15
个人简介

热衷技术,热爱交流

文章分类

全部博文(55)

文章存档

2014年(7)

2013年(48)

分类: LINUX

2013-06-11 12:01:23

echo 命令几个问题

1.单引号和双引号的区别

使用双引号时候,echo会处理一些特殊字符,例如$;使用单引号时,单引号的内容会原样输出,例如:

oracle[~]$echo '$ORACLE_HOME'
$ORACLE_HOME
oracle[~]$echo "$ORACLE_HOME"
/u01/oracle

2. 字符转义

除了单引号可以进行转义外,使用右斜杠也可以进行转义:

oracle[~]$echo  "\$ORACLE_HOME"
$ORACLE_HOME
oracle[~]$echo  \$ORACLE_HOME  
$ORACLE_HOME

3. 如何打印一些特殊字符

如果没有加别的选项,\用于转义

oracle[~]$echo  \\$ORACLE_HOME
\/u01/oracle


要打印一些特殊字符,那就需要使用-e选项配合右斜杠(\)

-e选项使用方法如下:

 \a 发出警告声;

\b 删除前一个字符;

\c 最后不加上换行符号;

\f 换行但光标仍旧停留在原来的位置;

\n 换行且光标移至行首;

\r 光标移至行首,但不换行;

\t 插入tab;

\v 插入垂直方向上的制表符;

\\ 插入\字符;

 \0NNN  byte with octal value NNN (1 to 3 digits)

\xHH   byte with hexadecimal value HH (1 to 2 digits)

在这个时候,需要加双引号:

(1).不换行输出(类似echo -n):

oracle[~]$echo -e "您好\c"  
您好oracle[~]$

(2).输出tab:

oracle[~]$echo  -e "商品\t\t 单价"
商品             单价

(3).输出某个8进制数表示的ascii码

oracle[~]$echo -e "\0123"
S

(4).输出某个16进制数表示的ascii码

oracle[~]$echo -e "\x53"
S

4.使用转义序列生成彩色输出

文本每种颜色都有自己的对应码:

重置-0,黑色-30,红色-31,绿色-32,黄色-33,蓝色-34,洋红-35,青色-36,白色-37

同样,文本背景色也有自己的对应码:

重置-0,黑色-40,红色-41,绿色-42,黄色-43,蓝色-44,洋红-45,青色-46,白色-47

下面脚本展示彩色输出:

[~/shell/echo]#cat color.sh
#!/bin/bash
echo -e "\e[1;31m 红色\c \e[0m"
echo -e "\e[1;32m 绿色\c \e[0m"
echo -e "\e[1;33m 黄色\c \e[0m" 
echo -e "\e[1;34m 蓝色\c \e[0m"
echo -e "\e[1;35m 洋红\c \e[0m"
echo -e "\e[1;36m 青色\c \e[0m"
echo -e "\e[1;37m 白色\c \e[0m"
echo -e "\e[1;30m 重置 \e[0m" 
echo -e "\e[1;31m \e[1;46m 红色\c \e[0m"
echo -e "\e[1;32m \e[1;46m 绿色\c \e[0m"
echo -e "\e[1;33m \e[1;46m 黄色\c \e[0m" 
echo -e "\e[1;34m \e[1;46m 蓝色\c \e[0m"
echo -e "\e[1;35m \e[1;46m 洋红\c \e[0m"
echo -e "\e[1;36m \e[1;46m 青色\c \e[0m"
echo -e "\e[1;37m \e[1;46m 白色\c \e[0m"
echo -e "\e[1;30m \e[1;46m 重置 \e[0m"

输出内容如下:




阅读(1644) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~