Wie kann ich ls --color = auto unter Mac OS X zum Laufen bringen?

71

Ich versuche, meine Bash-Konfiguration von Ubuntu auf Mac OS X zu verschieben, und es sieht so aus, als wäre ls etwas anders. Zum Beispiel wird die --colorOption nicht akzeptiert .

Wie bringe ich das zum Laufen?

cfischer
quelle

Antworten:

79

lsist eigentlich von Bash getrennt. Mac OS X hat eine BSD-Version von ls, die -Gauf der Kommandozeile oder CLICOLOR(und vielleicht LSCOLORS) in der Umgebung benötigt wird.

Siehe man lsfür weitere Informationen.

DoeNietZoMoeilijk
quelle
5
Dito. Ich habe alias ls='ls -G'in meinem .bashrc auf Snow Leopard gesetzt.
Ayaz
Aus irgendeinem Grund CLICOLOR=Yfunktioniert mein Mac nicht mehr. alias ls='ls -G'würde zwingen ls, einzufärben. Ich definiere dies nur für interaktive Terminals.
DKroot
31

Öffnen Sie das Terminalfenster und geben Sie Folgendes ein:

alias ls='ls -G'

Dann treffen Enterund fertig!

Safran Ali
quelle
10

Verwenden Sie Homebrew .

brew install coreutils

Beachten Sie, dass dies ein Präfix gvor alle Befehle wirft (z . B. glsfür ls). Sie haben die Möglichkeit, eine Datei zu erstellen, die diese automatisch als Alias ​​für Sie verwendet.

Ich war mir nicht sicher, ob es eine Option gab, sie direkt zu installieren, ohne das ganze Alias-Ding machen zu müssen, also stattdessen in installierten MacPorts und tat dies .

ifightcrime
quelle
1
In der Ausgabe heißt es: Wenn Sie diese Befehle wirklich mit ihren normalen Namen verwenden müssen, können Sie ... Warum wird sie wirklich hervorgehoben ? Was sind die Nachteile?
8.
Und Sie haben Ihre Seite auf archive.org nie archiviert und jetzt ist Ihr Link in Ihrem letzten Absatz weg
Barlop
5

Kompatibilität für GNU und * BSD / darwin ls

~ / .profile

#for *BSD/darwin
export CLICOLOR=1

ls --color=auto &> /dev/null && alias ls='ls --color=auto' ||

~ / .bashrc (Ich erinnere mich nicht, ob bash unter Linux immer ~ / .profile liest, aber nicht mein zsh unter ARCH)

[[ -f $HOME/.profile ]] && source $HOME/.profile
Victor Gavro
quelle
6
Können Sie diesen Code erklären?
bwDraco
1
Das Setzen der Umgebungsvariablen CLICOLOR für * BSD- und Darwin-Systeme - wenn es gesetzt ist, funktionieren ls und möglicherweise andere Dienstprogramme farbig, aber GNU ls (für Linux) ignoriert es. Wenn "ls --color = auto" nicht fehlschlägt (Exit-Status = 0) - wir haben eine GNU-Version von ls und machen einen Alias ​​zum Zeichnen von Farbcodes im interaktiven Modus, wenn dies fehlschlägt - dann brauchen wir keinen Alias ​​wegen CLICOLOR Variable. "&> / dev / null" zeigt nur nicht stderr und stdout an, wenn etwas fehlschlägt oder wenn es in Ordnung ist. Funktioniert unter Linux und OSX. (ps bash auf osx und freebsd liest nicht .bashrc, also legen Sie es in .profile. bereits behoben).
Victor Gavro
2

Sie müssen eine alternative Version von installieren ls. Das normalerweise unter Linux verwendete stammt aus dem GNU-Coreutils- Projekt.

Sie können von Macports , Fink oder Homebrew aus bauen und installieren oder installieren .

Doug Harris
quelle
4
Das ist meiner Meinung nach übertrieben. Sie müssen keine separate Version von installieren, lswenn dasselbe Feature in der vorhandenen Version von etwas anders unterstützt wird ls.
Ayaz
Guter Punkt. Andererseits war farbiges ls nie mein Geschmack. alias ls='ls -F'
Doug Harris
alias ls='ls -FG'- es ist das Beste aus beiden Welten!
mipadi
1
Ich mache das mit Homebrew. Es ist kein Overkill, wenn Sie sowohl Mac- als auch * nix-Computer verwenden und möchten, dass Ihre Terminals gleich aussehen. Auf diese Weise können Sie auf allen Computern die gleichen Konfigurationsdateien verwenden. Es ist installiert als glsund ersetzt nicht das Original, es gibt also wirklich keinen Nachteil.
Senderle
1

Ich verwende dieses Perl-Skript, das ich unter AIX geschrieben habe . Dies ist nützlich, wenn Sie sich auf einem System befinden, das keine Unterstützung --colorbietet, und wenn Sie kein sudo zum Installieren von Paketen haben.

Sollte auch auf Macintosh funktionieren.

Erik Aronesty
quelle