Comment faire en sorte que ls --color = auto fonctionne sur Mac OS X?

71

J'essaie de déplacer ma configuration bash d'Ubuntu vers Mac OS X et il semble que ls soit légèrement différent. Par exemple, il n'acceptera pas l' --coloroption.

Comment puis-je obtenir que cela fonctionne?

cfischer
la source

Réponses:

79

lsest en fait séparé de Bash. Mac OS X a une version BSD de ls, qui nécessite -Gsur la ligne de commande ou CLICOLOR(et peut-être LSCOLORS) dans l'environnement.

Voir man lspour plus d'informations.

DoeNietZoMoeilijk
la source
5
Idem. Je suis alias ls='ls -G'dans mon .bashrc sur Snow Leopard.
ayaz
Pour une raison quelconque, a CLICOLOR=Ycessé de travailler sur mon Mac. alias ls='ls -G'forcerait lsà colorier. Je définis cela uniquement pour les terminaux interactifs.
DKroot
31

Ouvrez la fenêtre du terminal et tapez:

alias ls='ls -G'

Alors frappe Enteret c'est fait!

Safran Ali
la source
10

Utilisez Homebrew .

brew install coreutils

Notez que cela jettera un préfixe gdevant toutes les commandes (par exemple, glspour ls). Cela donne la possibilité de créer un fichier qui les aliasera automatiquement pour vous.

Je n'étais pas sûr s'il y avait une option pour les installer directement sans avoir à faire tout le processus de pseudonyme, donc à la place, dans MacPorts installé et cela .

crime illégal
la source
1
La sortie indique: Si vous avez vraiment besoin d'utiliser ces commandes avec leurs noms normaux, vous pouvez ... Pourquoi insiste-t-il vraiment ? Quels sont les inconvénients?
Z0r
Et vous n'avez jamais archivé votre page sur archive.org et maintenant votre lien dans votre dernier paragraphe a disparu
barlop
5

compatibilité pour GNU et * BSD / darwin ls

~ / .profile

#for *BSD/darwin
export CLICOLOR=1

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

~ / .bashrc (je ne me souviens pas si bash sur Linux lit toujours ~ / .profile, mais pas mon zsh sur ARCH)

[[ -f $HOME/.profile ]] && source $HOME/.profile
Victor Gavro
la source
6
Pouvez-vous expliquer ce code?
bwDraco
1
définition de la variable d’environnement CLICOLOR pour les systèmes * BSD et Darwin - s’il est défini, ainsi que d’autres utilitaires fonctionneraient en couleur, mais GNU ls (pour Linux) l’ignore. Si "ls --color = auto" n'échouera pas (état de sortie = 0) - nous avons la version GNU de ls et faisons alias pour dessiner des codes de couleur en mode interactif, si cela échoue - alors nous n'avons pas besoin d'alias à cause de CLICOLOR variable. "&> / dev / null", ne montrez simplement pas stderr et stdout si quelque chose échoue ou si tout va bien. Fonctionne pour mon linux et osx. (ps bash sur osx et freebsd ne lit pas .bashrc, mettez-le donc dans .profile. corrigez-le déjà).
Victor Gavro
2

Vous devrez installer une autre version de ls. Celui habituellement utilisé sous Linux provient du projet GNU coreutils .

Vous pouvez construire et installer ou installer depuis macports , fink ou homebrew .

Doug Harris
la source
4
C'est exagéré, à mon avis. Vous n'avez pas besoin d'installer une version distincte de lslorsque la même fonctionnalité est prise en charge légèrement différemment sur la version existante de ls.
ayaz
Bon point. Là encore, la couleur n'a jamais été à mon goût. alias ls='ls -F'
Doug Harris
alias ls='ls -FG'- c'est le meilleur des deux mondes!
Mipadi
1
Je le fais en utilisant homebrew. Ce n'est pas exagéré si vous utilisez à la fois des ordinateurs Mac et * Nix et souhaitez que vos terminaux aient la même apparence - ceci vous permet d'utiliser les mêmes fichiers de configuration sur tous les ordinateurs. Il est installé en tant que glset ne remplace pas l'original, il n'y a donc aucun inconvénient.
Senderle
1

J'utilise ce script Perl que j'ai écrit sous AIX . C'est utile si vous êtes sur un système qui ne supporte pas --color, et aussi où vous n'avez pas de sudo pour installer des paquets.

Devrait fonctionner sur Macintosh aussi.

Erik Aronesty
la source