
Macbook Air に切り替えました。homebrew を使用して zsh をインストールしましたが、(元々) に含まれていたコードの一部を使用すると.zshrc
、 というエラーが発生します.dircolors was not found
。
問題のコードは次のとおりです。
zstyle ':completion:*' auto-description 'specify: %d'
zstyle ':completion:*' completer _expand _complete _correct _approximate
zstyle ':completion:*' format 'Completing %d'
zstyle ':completion:*' group-name ''
zstyle ':completion:*' menu select=2
eval "$(dircolors -b)"
zstyle ':completion:*:default' list-colors ${(s.:.)LS_COLORS}
zstyle ':completion:*' list-colors ''
zstyle ':completion:*' list-prompt %SAt %p: Hit TAB for more, or the character to insert%s
zstyle ':completion:*' matcher-list '' 'm:{a-z}={A-Z}' 'm:{a-zA-Z}={A-Za-z}' 'r:|[._-]=* r:|=* l:|=*'
zstyle ':completion:*' menu select=long
zstyle ':completion:*' select-prompt %SScrolling active: current selection at %p%s
zstyle ':completion:*' use-compctl false
zstyle ':completion:*' verbose true
zstyle ':completion:*:*:kill:*:processes' list-colors '=(#b) #([0-9]#)*=0=01;31'
zstyle ':completion:*:kill:*' command 'ps -u $USER -o pid,%cpu,tty,cputime,cmd'
Mac OS X には同梱されていませんかdircolors
? どのようにインストールすればよいですか?
アップデート:
シェル上で dircolors を直接実行すると、次のようになります。
bash: dircolors; command not found
答え1
このコマンドはdircolors
GNU coreutils に固有のものであるため、非組み込み Linux および Cygwin では見つかりますが、OSX などの他の Unix システムでは使用できません。生成された設定は.zshrc
OSX には移植できません。
デフォルトの色を使用しているので、空の文字列を渡すこともできます。
list-colors
ファイル補完で色を取得します。
色については実際のls
コマンド、CLICOLOR
OSX で環境変数を設定し、LSCOLORS
色を変更する場合も設定します (形式についてはマニュアルを参照)。
if whence dircolors >/dev/null; then
eval "$(dircolors -b)"
zstyle ':completion:*:default' list-colors ${(s.:.)LS_COLORS}
alias ls='ls --color'
else
export CLICOLOR=1
zstyle ':completion:*:default' list-colors ''
fi
デフォルト以外の色 (ファイル引数を使用) を設定したい場合は、の出力をハードコードし、これらの設定を zsh と GNU ls の両方で使用することdircolors
をお勧めします。dircolors -b ~/.dircolors
.zshrc
LS_COLORS=…
zstyle ':completion:*:default' list-colors ${(s.:.)LS_COLORS}
if whence dircolors >/dev/null; then
export LS_COLORS
alias ls='ls --color'
else
export CLICOLOR=1
LSCOLORS=…
fi
答え2
FreeBSD にはコマンドがなくdircolor
、OS X には FreeBSD のベースがあるため、使用できません。
最も簡単なのは
export CLICOLOR=YES
および.zshrc
を.bashrc
削除してくださいeval "$(dircolors -b)"
。色を変更するには、環境変数 を使用できますLSCOLORS
。例:
export LSCOLORS="Gxfxcxdxbxegedabagacad"
詳細については、manページをご覧ください。
man ls
代わりに、export CLICOLOR=YES
エイリアスを使用することもできます。ls
alias ls=ls -G
Mac PortsからGNU-Coreutilsをインストールすることを提案する人もいますが、私の意見ではこれはやりすぎです。ポートはここ
答え3
私はもう Mac 関連のことはやっていないので、テストするものは何もありませんが、これを FreeBSD で動作させる方法を探る中で、ports からこれを動作させる方法を見つけました。OSX には や のようなものがあることを思い出しました。本当に動作させたいのでbrew
あれmacports
ば、ここから GNU coreutils をインストールしてみてください。また、FreeBSD ports が fun をインストールしたコマンドなので、のdircolors
エイリアスを設定する必要がありました。これを試してみる人には幸運を祈ります!dircolors
gdircolors
以下は、brew 経由で coreutils をダウンロードした人のリンクです:
http://www.topbug.net/blog/2013/04/14/install-and-use-gnu-command-line-tools-in-mac-os-x/
答え4
dircolors
Homebrew coreutils パッケージからインストールできます:
brew install coreutils
ただし、GNU coreutils はPATH
デフォルトでは に含まれていません。 を編集して~/.zshrc
、~/.bashrc
以下を追加します。
export PATH="/opt/homebrew/opt/coreutils/libexec/gnubin:$PATH"
これで、新しいシェル セッションを開始するとdircolors
動作するはずです。