moa*_*eep 2 ls io-redirection special-characters escape-characters
我想在一个文本文件中列出当前工作目录的组件
ls -1 > textfile
Run Code Online (Sandbox Code Playgroud)
输出看起来不错,更多。
1010661085645
1010729039145
1010747080245
1010849051345
1010859053445
1011046075845
Run Code Online (Sandbox Code Playgroud)
但是当我用 emacs 查看这个文本文件时,出现了几个奇怪的字符
[0m[01;34m1010661085645[0m
[01;34m1010729039145[0m
[01;34m1010747080245[0m
[01;34m1010849051345[0m
[01;34m1010859053445[0m
[01;34m1011046075845[0m
Run Code Online (Sandbox Code Playgroud)
谁能解释这里发生了什么?
那些“奇怪的字符”是用于为输出着色的转义序列。
这将以蓝色打印该数字:
echo -e '\033[01;34m1010729039145\033[0m'
Run Code Online (Sandbox Code Playgroud)
有关man console_codes
更多详细信息,请参阅。
您可以判断ls
在哪些情况下它应该输出颜色:
--color[=WHEN]
colorize the output; WHEN can be 'never', 'auto', or 'always' (the default); more info below
Run Code Online (Sandbox Code Playgroud)
看起来您ls
实际上是ls --color=always
. (键入type ls
以进行验证。)
通常ls --color=auto
会做正确的事情:它会在屏幕上打印颜色,但不会打印到文件中。
如果您真的想要文件中的颜色,则必须决定是要查看实际的转义序列还是已解释的颜色。
例如,该less
命令将默认打印实际序列,但您可以使用以下-R
选项告诉它显示颜色:
-R or --RAW-CONTROL-CHARS
Like -r, but only ANSI "color" escape sequences are output in "raw" form.
Run Code Online (Sandbox Code Playgroud)
尝试less textfile
vs. less -R textfile
.
归档时间: |
|
查看次数: |
2470 次 |
最近记录: |