[20150428]grep加颜色小问题.txt

[20150428]grep加颜色小问题.txt

--我以前写的:
grep的问题 => http://blog.itpub.net/267265/viewspace-82985/
grep显示加颜色 => http://blog.itpub.net/267265/viewspace-663079/

--以前一直不理解color=always表示什么,做一个例子.

$ echo $GREP_COLOR
01;32
--表示显示是高亮绿色.

--我的演示版本是redhat 4.3,有点低,但是还是能说明问题的.

$ ls -l
total 588
drwxr-xr-x   2 oracle11g oinstall     4096 2015-01-13 16:18:07 bbed
drwxr-xr-x   2 oracle11g oinstall     4096 2015-04-27 08:43:05 bin
drwxr-xr-x   2 oracle11g oinstall     4096 2011-11-22 09:45:43 Desktop

$ export GREP_OPTIONS='--color=always'
$ ls -l | grep bbed | cut -c64-
bbed
--注:存在彩色的输出.

$ ls -l | grep bbed | cut -c65-
[01;32mbbed
--我少取一个字符,这样颜色显示部分破坏.导致取出一些控制字符.实际上上面也取出,只不过作为显示部分.

$ export GREP_OPTIONS='--color=auto'
$ ls -l | grep bbed | cut -c64-
bbed
$ ls -l | grep bbed | cut -c65-
bed
--没有颜色输出.

--always和auto的区别就是,always会在任何情况下都给匹配字段加上颜色标记,当通过管道或重定向时就会多出一些控制字符.
--理解这点很重要,一些安装软件如果通过管道比如例子使用cut,或者过滤的情况,会导致安装存在问题,这点在工作中要注意.

--做一个假设,假设shell脚本如下:

$ cat a.sh
#! /bin/bash
ls -l | grep bbed | cut -c65-

$ chmod 755 a.sh

$ export GREP_OPTIONS='--color=always'
$ ./a.sh
bbed

$ . ./a.sh
[01;32mbbed

$ source ./a.sh
[01;32mbbed

--可以发现第1种执行方式的显示与第2,3种不一样.再来看看--color=auto情况:

$ export GREP_OPTIONS='--color=auto'
$ ./a.sh

$ . ./a.sh
bed
$ source ./a.sh
bed

--哦! 第1种执行方式竟然没有输出.奇怪吧!当然你估计演示不出来:

$ /bin/ls -l | /bin/grep bbed
drwxr-xr-x   2 oracle11g oinstall     4096 Jan 13 16:18 bbed

$ ls -l | /bin/grep bbed
drwxr-xr-x   2 oracle11g oinstall     4096 2015-01-13 16:18:07 bbed

--因为我定义的别名跟别人的不一样

$ alias ls
alias ls='ls --color=tty --time-style=+"%Y-%m-%d %H:%M:%S"'

--总之在安装软件时特别执行一些shell脚本时注意别名以及一些其它情况!

上一篇:服务器ldap认证配置


下一篇:RH423-8 LDAP基于Kerberos的sasl认证