有时候,不幸遇到不如意的系统,ls后就带有不可见字符,只好想方设法解决。
看系统是否如意,可以用下面命令检查:
ls | od -c
如果结果显示有
0000000 033 [ 0 0 m 033 [ 0 0 ; 3 4 m d o c
之类字符,就悲剧了。如果没有,那就不用看下文了。
==========如何对付悲剧
下面的字符是不需要的:
033 [ 0 0 m 033 [ 0 0 ; 3 4 m
可以用sed删除它们。
fileName=`ls|sed -r "s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]//g"`
echo ${fileName}|od -c
解释:
sed -r "s/字符串1/字符串2/g"
-r 用extended regular expressions
s表示要执行替换命令
字符串1=\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]
字符串2为空,故执行删除
g表示全局
字符串1=\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]
\x1B Hex码,==、033==ESC,Escape
参考:
http://www.commandlinefu.com/commands/view/3584/remove-color-codes-special-characters-with-sed
