代码之家  ›  专栏  ›  技术社区  ›  duckyflip

涂色后保留ls颜色

  •  23
  • duckyflip  · 技术社区  · 15 年前

    $ ls -l --color=always
    

    我在目录中得到了一个文件列表,并为不同的文件类型添加了一些漂亮的颜色等等。。

    现在,我想能够管道的彩色输出 ls 通过 grep 过滤掉一些我不需要的文件。关键是我仍然希望在grep过滤器之后保留颜色。

    $ ls -l --color=always | grep -E some_regex
    

    ^我在格雷普之后失去了色彩

    编辑:我使用的是无头服务器Ubuntu8.10,Bash3.2.39,基本上是一个没有花哨配置的库存安装

    2 回复  |  直到 15 年前
        1
  •  52
  •   yoniLavi qwwqwwq    9 年前

    你的grep可能正在删除 ls 的颜色代码,因为它打开了自己的颜色。

    ls -l --color=always | grep --color=never pattern
    

    然而,非常重要的是,你要明白你到底在做什么 grep 发出砰的声响 ls 不必要的(使用 glob 相反,这种特殊情况是 格雷普 ping不仅可以通过文件名和文件统计信息,还可以通过 !

    你问题的真正答案是:不要 格雷普 信息技术永远不需要吹管 ls ls 仅用于人类解释(例如 至少 仅限shell,当然,出于此目的,它非常方便)。如前所述,您可以过滤哪些文件 ls

    ls -l *.txt      # Show all files with filenames ending with `.txt'.
    ls -l !(foo).txt # Show all files with filenames that end on `.txt' but aren't `foo.txt'. (This requires `shopt -s extglob` to be on, you can put it in ~/.bashrc)
    

    非常 建议您阅读这两份关于此事的优秀文件:

        2
  •  0
  •   TheBonsai    15 年前

    /bin/ls ....
    

    因为:您所描述的代码确实应该可以工作,除非ls忽略--color=总是因为一些奇怪的原因或bug。

    我怀疑某个别名或函数(直接或通过变量)添加了一些选项。仔细检查,确认情况并非如此。