Io-Redirection

ls 的輸出重定向到文件時出現奇怪的字元

  • June 8, 2018

我想在文本文件中列出目前工作目錄的組件

ls -1 > textfile

輸出看起來不錯。

1010661085645
1010729039145
1010747080245
1010849051345
1010859053445
1011046075845

但是,當我用 emacs 查看這個文本文件時,出現了幾個奇怪的字元

[0m[01;34m1010661085645[0m
[01;34m1010729039145[0m
[01;34m1010747080245[0m
[01;34m1010849051345[0m
[01;34m1010859053445[0m
[01;34m1011046075845[0m

誰能解釋這裡發生了什麼?

那些“奇怪的字元”是用於為輸出著色的轉義序列。

這將以藍色列印該數字:

echo -e '\033[01;34m1010729039145\033[0m'

有關man console_codes更多詳細資訊,請參閱。


您可以判斷ls在哪些情況下它會輸出顏色:

  --color[=WHEN]
         colorize the output; WHEN can be 'never', 'auto', or 'always' (the default); more info below

看起來你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.

嘗試less textfileless -R textfile..

引用自:https://unix.stackexchange.com/questions/115012