方法
カラー表示される標準出力からカラーを除く
コマンド | sed -r "s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[mGK]//g"
出力をパイプで繋いで色を表してる[33m
とかをsed
で消す。
alias登録
zsh
~/.zshrcにグローバルエイリアスとして登録
% alias -g I='| sed -r "s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[mGK]//g"'
bash
bash派の人は~/.bashrcにaliasを登録
$ alias ic='sed -r "s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[mGK]//g"'
zshで% ls --color I
やbashで$ ls --color | ic
などと打ってみて確かめてください。
補足
よく設定されているalias
よくあるshell上では最初から
alias ls='ls --color=auto'
などと最初からカラー表示で設定してあると思うので、わざわざ--colorなんてオプションはいらないのですが念の為。
aliasの回避としてバックスラッシュ
以上のようなaliasが登録されている環境でlsをカラー表示したくないならls
の前にバックスラッシュをつけて\ls
とすればaliasを無視して本来のls
が使えます。
ここでわざわざls
を例にあげているのは単純にみんな知っているコマンドだからです。
今回この記事を書くキッカケとなった自作コマンド([git ailias]本日のまとめログと最後のタグからのコミットログ、その他参照)がカラー表示で、lsのようにcolorオプションがあるわけではないので、一時的にカラー表示を無効化したい時にと思って何か方法がないか調べたまででした。
参考
参考というか丸パクリ: Stack over flow - Removing colors from output
日本語記事で存在しなかったのでここにメモしておきます。
以上