[实践OK]echo和ls --color=auto实现对查找的字符串上色,在linux下给grep命令添加颜色--color。

jackxiang 2017-6-29 23:49 | |
echo $PATH | grep --color=auto 'go'


默认的ls是由"ls --color=auto"组成的,假如某个目录中的文件特别多,我不希望显示颜色(可以加快显示),那就需要指定单独的参数。

[root@localhost ~]# ls --color=never
[root@localhost ~]# ls --color=any
[root@localhost ~]# ls --color=always

来自:http://www.cnblogs.com/t-road/p/6830037.html
实践如下:



在Linux下给grep命令添加颜色

Java代码 复制代码 收藏代码
grep --color "test" test.json  
[java] view plain copy print?
grep --color "test" test.json  

自动给grep加颜色

Java代码 复制代码 收藏代码
vim ~/.bashrc  
alias grep='grep --color'  
source ~/.bashrc  
[java] view plain copy print?
vim ~/.bashrc  
alias grep='grep --color'  
source ~/.bashrc  

在管道中的其他程序也可以有颜色

这里用到grep的一个参数--color,color有三个值供选择:never、always、auto。always和auto的区别就是,always会在任何情况下都给匹配字段加上颜色标记,当通过管道或重定向时就会多出一些控制字符,结果会变成
export ^[[1;32m^[[KGREP^[[m^[[K_OPTIONS='--color=always'
export ^[[1;32m^[[KGREP^[[m^[[K_COLOR='1;32'
而auto则只在输出到终端时才加上颜色。
可以在.bashrc里加上
export GREP_OPTIONS='--color=auto'
来实现高亮匹配,具体用什么颜色,可以通过
export GREP_COLOR='a;b' #默认是1;31,即高亮的红色
来设置,其中:
a可以选择:【0,1,4,5,7,8】
0 关闭所有属性
1 设置高亮度
4 下划线
5 闪烁
7 反显
8 消隐

Java代码 复制代码 收藏代码
vim ~/.bashrc  
export GREP_OPTTIONS='--color=always'  
source ~/.bashrc  

来自:http://blog.csdn.net/diy534/article/details/7025640


`--color` 选项在 `grep` 命令中用于控制输出时是否使用颜色来高亮匹配的文本。它有三个可能的值:`always`,`auto`,和 `never`。每个值的解释如下:

1. **`--color=always`**:
   - **解释**:无论输出是否是终端,始终使用颜色高亮匹配的文本。
   - **用例**:当你希望输出总是带有颜色时,例如将输出重定向到文件并希望在查看文件时看到颜色。

   ```sh
   echo $PATH | grep --color=always 'go'
   ```

2. **`--color=auto`**:
   - **解释**:仅当输出是终端时使用颜色高亮匹配的文本。如果输出被重定向到文件或管道,则不使用颜色。
   - **用例**:这是最常用的选项,因为它在你直接查看输出时显示颜色,但在你将输出重定向或管道时不显示颜色。

   ```sh
   echo $PATH | grep --color=auto 'go'
   ```

3. **`--color=never`**:
   - **解释**:从不使用颜色高亮匹配的文本。
   - **用例**:当你不希望看到任何颜色高亮时,可以使用这个选项。

   ```sh
   echo $PATH | grep --color=never 'go'
   ```

### 示例和应用

假设你的 `$PATH` 是这样的:

```sh
/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/go/bin
```

如果你运行以下命令:

```sh
echo $PATH | grep --color=always 'go'
```

输出将是:

```sh
/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/go/bin
```

其中,`go` 会始终用颜色高亮显示。

如果你运行以下命令:

```sh
echo $PATH | grep --color=auto 'go'
```

如果输出到终端,`go` 会高亮显示。如果输出重定向到文件或管道,`go` 将不高亮显示。

### 实际用例

要将 `$PATH` 中包含 `go` 的路径高亮显示,并确保颜色只在终端中有效:

```sh
echo $PATH | tr ':' '\n' | grep --color=auto 'go'
```

这个命令会输出每个路径在新行,并高亮显示包含 `go` 的路径。

```sh
/usr/local/go/bin
```

`go` 将高亮显示,但只有在输出是终端时。

作者:jackxiang@向东博客 专注WEB应用 构架之美 --- 构架之美,在于尽态极妍 | 应用之美,在于药到病除
地址:https://jackxiang.com/post/9314/
版权所有。转载时必须以链接形式注明作者和原始出处及本声明!


最后编辑: jackxiang 编辑于2024-7-1 14:39
评论列表
发表评论

昵称

网址

电邮

打开HTML 打开UBB 打开表情 隐藏 记住我 [登入] [注册]