からのカラー出力を持つことが通常いいですls、grepなど、しかし、あなたは(たとえば、あなたが別のコマンドに結果をパイプしているスクリプトのように)それをしたくないときにそれをオフにすることができますスイッチはありますか? デフォルトではない場合ls -G(BSDから派生した一部のバージョンでls)ls +Gオンにしますが、オフにしません。他に何かありますか?
からのカラー出力を持つことが通常いいですls、grepなど、しかし、あなたは(たとえば、あなたが別のコマンドに結果をパイプしているスクリプトのように)それをしたくないときにそれをオフにすることができますスイッチはありますか? デフォルトではない場合ls -G(BSDから派生した一部のバージョンでls)ls +Gオンにしますが、オフにしません。他に何かありますか?
回答:
のカラー出力lsは、現在、ほとんどのディストリビューションでエイリアスを介して有効になっています。
$ alias ls
alias ls='ls --color=auto'
エイリアスの前にバックスラッシュを付けることで、いつでも一時的にエイリアスを無効にできます。
$ \ls
上記を実行すると、この1回の呼び出しだけでエイリアスが短絡されます。エイリアスを無効にする場合はいつでも使用できます。
command lsもちろんを使用することもできますが、これは少し高速です。
GNU lsでは、ls --color=neverカラー出力を明示的に無効にするように指定できます。(を使用している場合でも、alias ls='ls --color=auto'実行ls --color=neverするとに展開されls --color=auto --color=never、後のオプションが優先されます。)
alias ls=ls
または
unalias ls
これにより、色が永久に無効になります。
lsエイリアスに追加した他のオプションはすべて失われ、単一のコマンドではなくセッション全体でそれらを失います。
多くのLinuxディストリビューションでは、これはユーザーのデフォルトで有効になっています.bashrc。
~/.bashrc次のような行を編集して削除します。
alias ls='ls --color=auto'
将来このマシンで生成されるすべての新しいアカウントでこの機能を無効にする場合は、次から同じ行を削除します。
/etc/skel/.bashrc
Centos7では、これが設定されてい/etc/profile.d/colorls.shます...このスクリプトの最後の3行は次のとおりです。
alias ll='ls -l --color=auto' 2>/dev/null
alias l.='ls -d .* --color=auto' 2>/dev/null
alias ls='ls --color=auto' 2>/dev/null
あなたが欲望と許可を持っている場合...望ましくない行をコメントアウトすると、トリックを行う必要があります。
unalias ls ll l、あなた.bashrcが許可を持っていない場合
他に何かが起こっているかもしれません。lsインタラクティブなものに接続されていると思わない限り、色を使用しないでください。別のプログラムにパイプするときに色を付けるべきではありません。
エイリアスは一般的に悪いアイデアです。なぜなら、そのオプションを取り除くことは決してできず、作業しなければならない他のマシンに持ち込むことができないかもしれない個人設定に慣れるからです。パイプを切って他の何かにパイプする必要がある場合は、そのパイプのスイッチを使用します。しかし、パイプの中に色があってはいけません。
についてlsは、LS_COLORS環境変数がサポートされているかどうかを確認してください。trapd00r / LS_COLORSの THTがどのように機能するかを示します。dircolorsを使用すると、ファイルタイプごとに色を細かく調整できます。設定せずにLS_COLORS色付けをオンにすると、多くlsのシステムコールが実行され、ファイルの種類と属性がわかり、何を色付けするかがわかります。Sherlockの背後にいる人々は、設定LS_COLORSがそれをすべて回避し、速度を40倍改善できることに気付きました。彼らの血なまぐさい詳細を読んで、彼らが見つけたものを見てください。
すべてのファイルタイプでデフォルトの色を使用します。
$ export LS_COLORS='bd=0:ca=0:cd=0:di=0:do=0:ex=0:pi=0:fi=0:ln=0:mh=0:no=0:or=0:ow=0:sg=0:su=0:so=0:st=0:tw=0:'
dircolorsに入力したLS_COLORSファイルは次のとおりです。
BLK 0
CAPABILITY 0
CHR 0
DIR 0
DOOR 0
EXEC 0
FIFO 0
FILE 0
LINK 0
MULTIHARDLINK 0
NORMAL 0
ORPHAN 0
OTHER_WRITABLE 0
SETGID 0
SETUID 0
SOCK 0
STICKY 0
STICKY_OTHER_WRITABLE 0
についてはgrep、がをサポートしているGREP_COLORSかどうかを確認してくださいGREP_OPTIONS。
ls、選択した色のGNU 出力エスケープシーケンスが引き続き作成されることに注意してください。の出力をls --color=always | od -a、ls --color=never | od -aこの設定の出力と比較しますLS_COLORS。
ls | od -a、エスケープを出さないことであり、それが私が望むことです。lsそれは、端末に出力を送信しています場合にのみ、これらの配列を放出しなければなりません。しかし、あなたがそれを伝えるなら、それがそうすることを確認してください。だから、それをしないでください。
@ brian-d-foyの答えを追加すると、ほとんどの場合、インスタンスのディレクトリの見えない青または「OTHER_WRITABLE」の派手な緑を変更するための単純な迷惑な色があります。ビット表示:)
export LS_COLORS='di=04;01;38;5;33:ow=04;01;38;5;33;48;2;60;10;0'
ディレクトリの色と他の書き込み可能な色のみを再定義する
04: underline;
01: bold/brighter;
38;5;33: redifined-blue;
48;2;60;10;0: dark red background
ANSIコードの詳細を読む
ls、個々の色を変更する方法ではなく、GNUの出力からすべての色を削除することです。
lsやgrepパイピングの--color=auto場合、出力がパイプであるか、実際にはtty以外の場合は既にカラーリングをオフにしているため、何もする必要はありません 。それが「自動」の意味です。同様に、FreeBSDls -Gまたは「CLICOLOR」は、「... CLICOLOR_FORCE ...」でない限り、出力が端末に送信されない場合は無効になっています。