Coque de couleur bash sur Mac?

8

Comment pouvez-vous créer une liste shell bash des fichiers exécutables dans une couleur différente de celle des fichiers non exécutables?

J'ai essayé de modifier ~/.bashrcpour contenir la ligne suivante (sinon elle est vide):

 LS_OPTIONS='--color=auto'

Mais ça ne marche pas. Qu'est-ce que je fais mal? Je travaille sur Mac OS X.

AP257
la source

Réponses:

7

Pour activer la sortie couleur à partir de la lscommande sans avoir à créer d'alias lsni à télécharger de logiciel supplémentaire, ajoutez ce qui suit à votre ~/.bash_profile:

# Terminal colours
export CLICOLOR=1
export LSCOLORS=ExFxCxDxBxegedabagacad

Si vous n'aimez pas ces couleurs, vous pouvez utiliser ce générateur de couleurs ls pour personnaliser cette liste de couleurs à votre guise.

Vous devrez faire:

source ~/.bash_profile

Après avoir apporté des modifications pour qu'elles prennent effet dans votre shell existant.

Ian C.
la source
non, ça n'aide pas du tout
holms
6

Le problème est que OS X n'a ​​pas GNU ls; bien qu'il lssupporte la coloration des noms de fichiers, il ne peut le faire que par le type de fichier (fichier, répertoire, lien symbolique, fichier spécial de périphérique, fifo, socket ...). Installez à coreutilspartir de Fink / MacPorts / HomeBrew, puis utilisez alias ls='gls --color=auto'.

geekosaure
la source
Merci. J'ai installé à coreutilspartir de MacPorts. La aliasligne devrait-elle être dedans ~/.bashrc? C'est là que je l'ai mis, mais je ne vois aucune différence.
AP257
~/.bash_aliasespeut mieux fonctionner. J'ai également constaté que je devais exécuter eval $(gdircolors -s)pour l'installer.
geekosaur
@ AP257: Sur mon Mac, j'ai mis des alias dans le .bash_profile
Hai Vu
@Hai Vu: Cela ne fonctionne que si vous n'utilisez jamais de sous-coquilles.
geekosaur
@geekosaur gdircolors: invalid option -- 's'veux-tu dire --sh?
Anentropic
6

BSD ls fonctionne un peu différemment

alias ls='ls -G'

devrait marcher.

Et ce n'est pas de la coloration bash, c'est de lsla colorisation. Quand bash fait une liste de fichiers (essayez echo *dans un répertoire) il n'y a aucun moyen de coloriser. La frappe ls -Gfonctionnerait dans n'importe quel shell, bien qu'un shell (comme bash) qui ait des alias le facilite.

Rich Homolka
la source
6

Sur Mac, vous devez utiliser

export CLICOLOR=1

Je l'ai mis dans le .bash_profile. Cependant, je préfère la solution de Rich Homolka à l'alias ls avec le drapeau -G. Si vous souhaitez personnaliser les couleurs:

man ls

et recherchez LSCOLORS

Hai Vu
la source
1

Envisagez d'installer brewet d'utiliser la version GNU de ls et d'autres outils.

Installez XCode depuis l'AppStore.

Installez Homebrew ...

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

Installez coreutils ...

brew install coreutils

Ajoutez au bas de votre .profile...

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

Je alias lsdans mon .profilefaire des couleurs pour tout et un raccourci pour la liste complète.

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)

Il y a un tas d' LS_COLORSoptions sur github .

Paul J
la source
-1

bashn'est qu'un shell, il ne répertorie pas les fichiers. Il exécute des commandes telles que ls.

L' --coloroption (et les options longues en général) est spécifique à la version de lsGNU coreutils , qui est fournie avec la plupart des distributions Linux. D'un autre côté, Mac OS X a des racines BSD et utilise la version BSD lsqui ne prend pas en charge la coloration.

user1686
la source
1
-1: Il ne colorant de support, juste avec un drapeau de ligne de commande différente: -G.
Wuffers