如何取消控制台的色彩(ANSIl转义字符)

如何取消控制台的色彩(ANSIl转义字符)

复制内容到剪贴板
代码:
echo -e '^[[32mgreen ^[[31mred'
刚开始为了好看
脚本里的输出, 都是带彩色的
不过后来发现重定向到文本里
可就没法读了

请教有啥好办法在输出时删除这些转义字符呢      
哈哈,俺就是为了这个问题才问的‘如何判断 stdout 是否是 terminal’
引用:
-(dearvoid@LinuxEden:Forum)-(~/tmp)-
[9960 0] ; cat foo.sh
#!/bin/bash

declare colorBegin colorEnd
if [ -t 1 ]; then
    colorBegin=$'\033[0;32m'
    colorEnd=$'\033[0m'
fi
echo "${colorBegin}Hello, world$colorEnd"
-(dearvoid@LinuxEden:Forum)-(~/tmp)-
[9960 0] ; ./foo.sh
Hello, world
-(dearvoid@LinuxEden:Forum)-(~/tmp)-
[9960 0] ; ./foo.sh | cat
Hello, world
-(dearvoid@LinuxEden:Forum)-(~/tmp)-
[9960 0] ; bye
      
ls 之类的 command 应该也是这么做的,如果 stdout 是 terminal 的话可以显示颜色,但是输出到文件或者管道的时候就没有颜色了       
nice idea      
引用:
原帖由 dearvoid 于 2007-9-15 20:49 发表
ls 之类的 command 应该也是这么做的,如果 stdout 是 terminal 的话可以显示颜色,但是输出到文件或者管道的时候就没有颜色了
想起一件不是重要的事情...

ls 是否要输出色彩以标识文件类型
还是受 --color 这个参数控制的       
不晓得 ls 是否 by default 会显示颜色了, 不过俺是定义了 alias 的       
应该不会,我的默认是

alias ls='ls --color=auto'

终端下有颜色      
ls在debian, ubuntu , rhel中默认是不显颜色嘀      
另外

如果以以下方式运行一个cmd
ssh remote_host "cmd"
cmd的STDOU, STDERR全是socket
而不是某个tty
dearvoid的方法在  ssh remote_host "cmd" > file中就不好使了
不知道有啥好办法

      
引用:
原帖由 li-jiahuan 于 2007-9-18 23:33 发表
另外

如果以以下方式运行一个cmd
ssh remote_host "cmd"
cmd的STDOU, STDERR全是socket
而不是某个tty
dearvoid的方法在  ssh remote_host "cmd" > file中就不好使了
不知道有啥好办法
socket 也不是 terminal 啊, 怎么不好使了的?