lsコマンドを少なくすると、色は出力されません。

lsコマンドを少なくすると、色は出力されません。

実行するとlsカラー出力が表示されるため、これらのファイルをすばやくナビゲートするのに非常に便利です。 andフラグをless使用してパイプを試みると、色は常に失われます。バージョン5.0.7を使用しています。どんなアイデアがありますか?ありがとうございます。-r-Rzsh

編集:私はOS Xを使用しています。

答え1

これは意図的に設計されています。カラー出力を生成するプログラムは、通常、出力がパイプまたは通常のファイルに転送されるのではなく、端末に到達したときにのみそうします。その理由は、端末に送信されたデータは人が読む可能性が高いのに対し、プログラムにパイプで渡されたり、ファイルに記録されたデータは一部のプログラムによって解析される可能性が高いため、色などの不要な内容を含めてはならない。だからです。 - エスケープシーケンスの変更。

オプション(または)を渡すと、GNUはls端末にカラー出力を表示します。標準出力のファイル形式に関係なく、カラー出力を強制するには、または(同義語)を渡します。 GNU grep、FreeBSD grepなどの他のコマンドもこの規則に従います。--color--color=auto--color=always--color=yesgit diff

ls --colors=yes -l | less

FreeBSDバージョンls(OSXにもあり、OpenBSDおよびNetBSDのポートとしてもあります)のcolorls場合は、端末に出力するときに色を表示するオプションを渡します。出力ファイルの種類に関係なく色が表示されるように-G環境を設定します。CLICOLOR_FORCE

CLICOLOR_FORCE=1 ls -l | less

答え2

最も可能性の高い問題は、lsプログラムにオプションが設定されていることです--color=auto。これは、基本的に端末に接続した場合にのみ出力に色を付ける必要があることを意味します。それ以外の場合(出力がパイプまたはファイルにリンクされている)、色は放出されません。

色が必要な場合は、この場合はオプションをに設定する必要があるため、--color試しalwaysてみてください。

ls --color=always | less -R

この動作が常に期待していた動作であれば、別名を作成してください。

alias ls='ls --color=always'

答え3

私は担当者が50人未満であるため、@jimmijの答えについて言及することはできませんが、Bashで私に役立つものを説明したいと思いました。

走れば

$ man ls | grep color

man特定のシェル環境(この場合)の-pageに関するすべてのエントリが表示されますbash

私には、次の調整がトリックを行いました。

$ alias ls='ls -G'

関連情報