実行するとls
カラー出力が表示されるため、これらのファイルをすばやくナビゲートするのに非常に便利です。 andフラグをless
使用してパイプを試みると、色は常に失われます。バージョン5.0.7を使用しています。どんなアイデアがありますか?ありがとうございます。-r
-R
zsh
編集:私はOS Xを使用しています。
答え1
これは意図的に設計されています。カラー出力を生成するプログラムは、通常、出力がパイプまたは通常のファイルに転送されるのではなく、端末に到達したときにのみそうします。その理由は、端末に送信されたデータは人が読む可能性が高いのに対し、プログラムにパイプで渡されたり、ファイルに記録されたデータは一部のプログラムによって解析される可能性が高いため、色などの不要な内容を含めてはならない。だからです。 - エスケープシーケンスの変更。
オプション(または)を渡すと、GNUはls
端末にカラー出力を表示します。標準出力のファイル形式に関係なく、カラー出力を強制するには、または(同義語)を渡します。 GNU grep、FreeBSD grepなどの他のコマンドもこの規則に従います。--color
--color=auto
--color=always
--color=yes
git 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'