Bash Color Shell auf dem Mac?

8

Wie kann eine Bash-Shell ausführbare Dateien in einer anderen Farbe als nicht ausführbare Dateien auflisten?

Ich habe versucht ~/.bashrc, die folgende Zeile zu bearbeiten (ansonsten leer):

 LS_OPTIONS='--color=auto'

Aber es funktioniert nicht. Was mache ich falsch? Ich arbeite unter Mac OS X.

AP257
quelle

Antworten:

7

Fügen Sie Folgendes hinzu, um die Farbausgabe des lsBefehls zu aktivieren, ohne einen Alias ​​für lseine zusätzliche Software erstellen oder diese herunterladen zu müssen ~/.bash_profile:

# Terminal colours
export CLICOLOR=1
export LSCOLORS=ExFxCxDxBxegedabagacad

Wenn Sie diese Farben nicht mögen, können Sie diesen Farbgenerator verwenden, um diese Farbliste nach Ihren Wünschen anzupassen.

Sie müssen Folgendes tun:

source ~/.bash_profile

Nachdem Sie Änderungen vorgenommen haben, damit diese in Ihrer vorhandenen Shell wirksam werden.

Ian C.
quelle
Nein, es hilft überhaupt nicht
Holms
6

Das Problem ist, dass OS X kein GNU hat ls. Während es lsdas Färben von Dateinamen unterstützt, kann es dies nur nach Dateityp (Datei, Verzeichnis, Symlink, Gerätespezialdatei, FIFO, Socket ...) tun. Installieren Sie es coreutilsvon Fink / MacPorts / HomeBrew und verwenden Sie es dann alias ls='gls --color=auto'.

Geekosaurier
quelle
Vielen Dank. Ich habe coreutilsvon MacPorts installiert . Sollte die aliasLeitung in sein ~/.bashrc? Dort habe ich es ausgedrückt, aber ich sehe keinen Unterschied.
AP257
~/.bash_aliaseskann besser funktionieren. Ich fand auch, dass ich laufen musste eval $(gdircolors -s), um es einzurichten.
Geekosaurier
@ AP257: Auf meinem Mac habe ich Aliase in das .bash_profile
Hai Vu
@Hai Vu: Das funktioniert nur, wenn Sie niemals Subshells verwenden.
Geekosaurier
@geekosaur gdircolors: invalid option -- 's'meinst du --sh?
Anentropic
6

BSD ls funktioniert etwas anders

alias ls='ls -G'

sollte arbeiten.

Und dies ist keine Bash-Färbung, sondern lsdie Färbung. Wenn bash eine Dateiliste erstellt (versuchen Sie es echo *in einem Verzeichnis), gibt es keine Möglichkeit zum Kolorieren. Das Tippen ls -Gwürde in jeder Shell funktionieren, obwohl eine Shell (wie Bash) mit Aliasen es einfacher macht.

Reiche Homolka
quelle
6

Auf dem Mac müssen Sie verwenden

export CLICOLOR=1

Ich habe das in das .bash_profile eingefügt. Ich bevorzuge jedoch die Lösung von Rich Homolka gegenüber dem Alias ​​ls mit dem Flag -G. Wenn Sie die Farben anpassen möchten:

man ls

und suchen Sie nach LSCOLORS

Hai Vu
quelle
1

Erwägen Sie die Installation brewund Verwendung der GNU-Version von ls und anderen Tools.

Installieren Sie XCode aus dem AppStore.

Installieren Sie Homebrew ...

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

Coreutils installieren ...

brew install coreutils

Fügen Sie am Ende Ihrer .profile...

export PATH="/usr/local/opt/coreutils/libexec/gnubin:$PATH"
export MANPATH="/usr/local/opt/coreutils/libexec/gnuman:$MANPATH"

Ich habe einen Alias lsin meinem .profile, um Farben für alles zu machen und eine Verknüpfung für die vollständige Liste.

alias ls='ls --color'
alias l='ls -lah'
# -l     use a long listing format
# -a     do not ignore entries starting with .
# -h     with -l and/or -s, print human readable sizes (e.g., 1K 234M 2G)

Es gibt eine Reihe von LS_COLORSOptionen für Github .

Paul J.
quelle
-1

bashist nur eine Shell, es werden keine Dateien aufgelistet. Es führt Befehle aus, wie z ls.

Die --colorOption (und lange Optionen im Allgemeinen) ist spezifisch für die Version lsvon GNU Coreutils , die mit den meisten Linux-Distributionen geliefert wird. Auf der anderen Seite hat Mac OS X BSD-Wurzeln und verwendet die BSD-Version, lsdie keine Farbgebung unterstützt.

user1686
quelle
1
-1: Es tut Unterstützung Färbung, nur mit einer anderen Befehlszeilenmarkierung: -G.
Wuffers