zshのdircolors:認識できないキーワード:MULTIHARDLINK、RESET、およびCAPABILITY

zshのdircolors:認識できないキーワード:MULTIHARDLINK、RESET、およびCAPABILITY

入手しようとしています太陽の下で乾燥私の端末で使用される色のテーマです。説明を読んだここしかし、次のようなdircolorsエラーが発生します。

dircolors: `/home/avazquez/.dircolors_zsh':90: unrecognized keyword RESET
dircolors: `/home/avazquez/.dircolors_zsh':94: unrecognized keyword MULTIHARDLINK
dircolors: `/home/avazquez/.dircolors_zsh':103: unrecognized keyword CAPABILITY

実行時間:

if [ -x /usr/bin/dircolors ]; then
    test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)"
fi

私の.zshrczsh(最新バージョン)から(Ubuntussh -Xからリモートでアクセスしますgnome-terminal)。

問題のファイルパス.dircolorsここ混乱した行は特別なファイル定義のようです。

## Special files

NORMAL 00;38;5;244 # no color code at all
#FILE 00 # regular file: use no color at all
RESET 0 # reset to "normal" color
DIR 00;38;5;33 # directory 01;34
LINK 01;38;5;37 # symbolic link. (If you set this to 'target' instead of a
 # numerical value, the color is as for the file pointed to.)
MULTIHARDLINK 00 # regular file with more than one link
FIFO 48;5;230;38;5;136;01 # pipe
SOCK 48;5;230;38;5;136;01 # socket
DOOR 48;5;230;38;5;136;01 # door
BLK 48;5;230;38;5;244;01 # block device driver
CHR 48;5;230;38;5;244;01 # character device driver
ORPHAN 48;5;235;38;5;160 # symlink to nonexistent file, or non-stat'able file
SETUID 48;5;160;38;5;230 # file that is setuid (u+s)
SETGID 48;5;136;38;5;230 # file that is setgid (g+s)
CAPABILITY 30;41 # file with capability
STICKY_OTHER_WRITABLE 48;5;64;38;5;230 # dir that is sticky and other-writable (+t,o+w)
OTHER_WRITABLE 48;5;235;38;5;33 # dir that is other-writable (o+w) and not sticky
STICKY 48;5;33;38;5;230 # dir with the sticky bit set (+t) and not other-writable
# This is for files with execute permission:
EXEC 01;38;5;64

答え1

それはこれとほとんど関係ありませんzshzshカラーコンプリートはGNUのようにサポートされていますls(例:ディレクトリの場合、グリーン実行可能ファイルの場合...)、GNUと同じ構成ディレクティブをサポートしますls

GNUlsカラー設定はLS_COLORS環境変数で行われます。この変数を含めると、ln=01;36シンボリックリンクが次の形式でレンダリングされることを意味します。濃いターコイズ36前景のターコイズはANSIカラーコードで、01太字です。)

でもzsh同じことができます:

zstyle ':completion:*' list-colors 'ln=01;36'

実際には、通常、次のようにzsh色補完を構成します。

zstyle ':completion:*' list-colors ${(s.:.)LS_COLORS}

したがって、zshカラーコンプリートはGNU lsと同じように機能します。

変数の内容を簡単に作成できるように、LS_COLORSGNUはlsこのコマンドを提供しますdircolors。このコマンドは、より詳細な内容を含む構成ファイルを入力として使用し(構成ファイルには環境変数などのスペース制限がないため)、LS_COLORS端末に適した変数の対応する内容を生成します。

上記には次のものがあります。

LINK 01;38;5;37

0138;5;37それでも太字で表示されていますが、88色または256色をサポートする端末の拡張カラーモードの仕様です。xterm

これは前景色37で、rgb:00/af/afANSI色6の基本色(cyan3少なくとも私の場合はxtermここrgb:00/cd/cd)よりもやや暗い青緑色()色です。

~$ tput setaf 37 | sed l
\033[38;5;37m$

それ以降dircolorsln=38;5;37

MULTIHARDLINK 00複数のハードリンクを持つファイルがデフォルトの色でレンダリングされるという規則もあります。これはに変換されmh=00ます$LS_COLORS

lsしかし、これは比較的新しいバージョンの/で導入されましたdircolors。もともとはHARDLINK/でしたが、2009年のcoreutils 7.5では、/がより正確な表現選択であったため、名前が/hlに変更されました。MULTIHARDLINKmh

以前のバージョンを使用しているようですdircolors。どちらもzshサポートされておらず(文句なしでは無視されますが)、デフォルトの色に設定されているため、その行を削除することをお勧めします。hlmh

RESET/rsはcoreutils 6.11に追加されましたが、どちらもサポートされていませんzsh

CAPABILITY/はcacoreutils 7.0に追加されましたが、どちらもサポートされていませんzsh

サポートされていない項目がある可能性がありますがzshinfo zsh 'The zsh/complist Module'詳細については参照)、zshサポートしていない項目は無視してください。

あなたが受けているエラーはで発生します。これは、ファイルを作成した人があなたよりも最新バージョンのcoreutils(およびを含むGNUユーティリティスイート)を持っているdircolorsことを意味します。ファイルからサポートされていない行を削除するだけです。dircolorslsdircolors

答え2

これが機能するには、zsh次のものを追加する必要があります。

alias ls='ls --color=auto'

githubにも何かあります。.zshrcはい

関連情報