web-dev-qa-db-ja.com

zshのdircolors:認識されないキーワード:MULTIHARDLINK、RESET&CAPABILITY

solarized カラーテーマを端末で機能させようとしています。手順を読みました ここ しかし、次の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

zsh(最新バージョン)の.zshrcから(Ubuntuのssh -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

それはzshとはほとんど関係がありません。 zshはGNU lsのように色付きの補完をサポートします(ディレクトリの場合はbluegreenのように)実行可能ファイルの場合...)、GNU lsと同じ構成ディレクティブをサポートします。

GNU lsカラー設定は、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_COLORS変数の内容を簡単に記述できるように、GNU lsにはdircolorsコマンドが付属しています。このコマンドは、入力として、冗長なコンテンツ(構成ファイルには環境変数のようにスペースの制約がないため)、端末に適したLS_COLORS変数の対応するコンテンツを生成します。

上にあります:

LINK 01;38;5;37

01はまだ太字ですが、38;5;37は、88色または256色をサポートするxtermのような端末の拡張カラーモードの仕様です。

これは前景色37で、ANSIカラー6のデフォルトカラー(少なくとも私のxtermではrgb:00/af/af、ここではcyan3)よりもわずかに暗いシアン(rgb:00/cd/cd)の色合いです。

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

dircolorsを通過すると、ln=38;5;37になります。

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

ただし、これは比較的最近のバージョンのls/dircolorsで導入されました。以前はHARDLINK/hlでしたが、2009年にcoreutils7.5でMULTIHARDLINK/mhに名前が変更されました。これは、より正しい表現の選択でした。

古いバージョンのdircolorsを使用しているようです。 zshhlmhもサポートしていないことに注意してください(文句は言わないので無視してください)。デフォルトの色に設定されているだけなので、その行を削除します。

RESET/rsはcoreutils6.11で追加され、zshでもサポートされていません。

CAPABILITY/caはcoreutils7.0で追加され、zshでもサポートされていません。

zshでサポートされていないものはおそらくもっとありますが(詳細はinfo zsh 'The zsh/complist Module'を参照)、繰り返しますが、zshはサポートされていないものを無視します。

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

2

zshが機能するためには、以下を追加する必要があります。

alias ls='ls --color=auto'

Githubにも .zshrc

0
user183932