`ls`で色を消す方法は?


50

からのカラー出力を持つことが通常いいですlsgrepなど、しかし、あなたは(たとえば、あなたが別のコマンドに結果をパイプしているスクリプトのように)それをしたくないときにそれをオフにすることができますスイッチはありますか? デフォルトではない場合ls -G(BSDから派生した一部のバージョンでlsls +Gオンにしますが、オフにしません。他に何かありますか?


4
遅くても検索する人にとっては:GNU lsgrepパイピングの--color=auto場合、出力がパイプであるか、実際にはtty以外の場合は既にカラーリングをオフにしているため、何もする必要はありません 。それが「自動」の意味です。同様に、FreeBSD ls -Gまたは「CLICOLOR」は​​、「... CLICOLOR_FORCE ...」でない限り、出力が端末に送信されない場合は無効になっています。
dave_thompson_085

回答:


70

のカラー出力lsは、現在、ほとんどのディストリビューションでエイリアスを介して有効になっています。

$ alias ls
alias ls='ls --color=auto'

エイリアスの前にバックスラッシュを付けることで、いつでも一時的にエイリアスを無効にできます。

$ \ls

上記を実行すると、この1回の呼び出しだけでエイリアスが短絡されます。エイリアスを無効にする場合はいつでも使用できます。


3
command lsもちろんを使用することもできますが、これは少し高速です。
iconoclast 14年

きちんとしたトリック!スクリプトを更新して、先頭に ``を付けます。
ベトナム

1
私は\ lsが大好き
アレックスアンジェリコ

27

GNU lsでは、ls --color=neverカラー出力を明示的に無効にするように指定できます。(を使用している場合でも、alias ls='ls --color=auto'実行ls --color=neverするとに展開されls --color=auto --color=never、後のオプションが優先されます。)


1
これは本当に私が探していた答えですが、BSD派生バージョン(OS X、Solaris、そしてもちろん* BSD)のような非GNU lsのケースを処理するため、選択したものとしてslmの答えを保持します。
iconoclast 14年

3

また、単に使用することもできます(DOSと同様):

dir

色なしで結果が表示されます。同じlsように引数を追加できます-l


2
alias ls=ls

または

unalias ls

これにより、色が永久に無効になります。


3
もちろん、これはショットガンでハエを殺すようなものです。lsエイリアスに追加した他のオプションはすべて失われ、単一のコマンドではなくセッション全体でそれらを失います。
iconoclast

それが私が「永久に」と言った理由です:-)
Slyx

2

多くのLinuxディストリビューションでは、これはユーザーのデフォルトで有効になっています.bashrc

~/.bashrc次のような行を編集して削除します。

alias ls='ls --color=auto'

将来このマシンで生成されるすべての新しいアカウントでこの機能を無効にする場合は、次から同じ行を削除します。

/etc/skel/.bashrc 

1

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が許可を持っていない場合
-avsej

0

色をオフにするには: unalias ls

色をオンにするには: alias ls = 'ls --color = auto'

色を一時的に無効にするには: \ ls -ltr


0

他に何かが起こっているかもしれません。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 -als --color=never | od -aこの設定の出力と比較しますLS_COLORS
クサラナンダ

本当のトリックはls | od -a、エスケープを出さないことであり、それが私が望むことです。lsそれは、端末に出力を送信しています場合にのみ、これらの配列を放出しなければなりません。しかし、あなたがそれを伝えるなら、それがそうすることを確認してください。だから、それをしないでください。
ブライアンディーフォイ

-1

@ 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コードの詳細を読む


1
目下の問題はls、個々の色を変更する方法ではなく、GNUの出力からすべての色を削除することです。
クサラナンダ

OK、「lsで特定の色をオフにする:LS_COLORS = 'ow = 00'をエクスポートして、OTHER_WRITABLEのみをオフにする方法」
イギー湖
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.