2014 年 11 月の記事一覧です(2 件)

[less][percol]色付きlsをlessにパイプした時の文字化けの対応(ついでにpercolも)

タイトルで文字化けと書きましたが、正確には文字化けではなく、ターミナル上でカラー表示させる為の ANSI escape sequence が実際の色に変換されずに文字列そのものが表示されてしまうことです。

同じような現象の方がググってここにたどり着きやすくする為、便宜的にこの言葉を使いました。

例えば、ls --color や ls --color=always をless にパイプした時、次のようになります。

ESC[0mESC[34mdevESC[0m
ESC[34mdotfilesESC[0m
ESC[34mlocalESC[0m
ESC[34mpitfilesESC[0m
ESC[34mtmpESC[0m
ESC[34mダウンロードESC[0m
ESC[34mテンプレートESC[0m
ESC[34mデスクトップESC[0m
ESC[34mドキュメントESC[0m
ESC[34mビデオESC[0m
ESC[34mピクチャESC[0m
ESC[34mミュージックESC[0m
ESC[34m公開ESC[0m
(END)
これはデフォルト設定のlessが ANSI escape sequence を色として表示してくれないからです。

この現象を回避するいくつか方法の内、カラー表示させたい場合は

$ls --color | less -R
カラーじゃなくても ANSI escape sequence が表示されなければよいよ、という場合は
$ls --color=auto | less
sedを駆使したテクニック!
$ls --color | sed -r "s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]//g" | less

percolにパイプする場合はlessでいうところのRオプションがなさそうなので、カラー表示は出来なさそう。なので less --color=autoにするか、 作者様も言っているように sedでクリーニングするかでしょうか。

確認した環境

$uname -a
Linux ubuntu1404 3.13.0-32-generic #57-Ubuntu SMP Tue Jul 15 03:51:08 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux

$less -V
less 458 (GNU regular expressions)

参照サイト


[GitHub]GitHubに非人間認定された話


20141108_01

昨日、何を血迷ったのか、26,000行程のテキストファイルをGist.vim経由でGistにアップロードしてしまい、写真にあるようなメッセージを喰らいました。。

One of our mostly harmless robots seems to think you are not a human. Because of that, it’s hidden your profile from the public. If you really are human, please contact support to have your profile reinstated. We promise we won’t require DNA proof of your humanity.

結構焦ったのですが、該当メッセージをググると、偉大なる先人たちの知見がインデックスされていました。

先人たちと同様にコンタクトフォームからプロファイルの復旧をお願いしました。2,3時間で復活するかな〜と見積もっていましたが、結局8時間程かかりました(16時にメールして、返信がきたのが0時くらいでした)。タイミングなんでしょうね。因みに返信メールはこのようなもの

Hi xxxx Sorry for the trouble! The robots have been known to be wrong once in a while. I've cleared your account, so everything should be back to normal. Your fellow human, Emily

以後気をつけます。


PAGE TOP