Bash color shell en Mac?

8

¿Cómo se puede hacer que una shell bash muestre los archivos ejecutables en un color diferente al de los archivos no ejecutables?

He intentado editar ~/.bashrc para contener la siguiente línea (de lo contrario está vacío):

 LS_OPTIONS='--color=auto'

Pero no está funcionando. ¿Qué estoy haciendo mal? Estoy trabajando en Mac OS X.

AP257
fuente

Respuestas:

7

Para activar la salida de color de la ls comando sin tener que crear un alias para ls o descargue cualquier software adicional, agregue lo siguiente a su ~/.bash_profile:

# Terminal colours
export CLICOLOR=1
export LSCOLORS=ExFxCxDxBxegedabagacad

Si no te gustan esos colores puedes usarlos. este generador de color ls Para personalizar esa lista de colores a tu gusto.

Tendrá que hacer:

source ~/.bash_profile

Después de hacer los cambios para que tengan efecto en su shell existente.

Ian C.
fuente
no, no ayuda en absoluto
holms
6

El problema es que OS X no tiene GNU. ls; mientras que su ls admite el color del nombre del archivo, solo puede hacerlo por el tipo de archivo (archivo, directorio, enlace simbólico, archivo especial del dispositivo, fifo, socket ...). Instalar coreutils de Fink / MacPorts / HomeBrew, luego use alias ls='gls --color=auto'.

geekosaur
fuente
Gracias. He instalado coreutils desde MacPorts. Si el alias línea estar en ~/.bashrc? Ahí es donde lo puse, pero no veo ninguna diferencia.
AP257
~/.bash_aliases puede funcionar mejor También encontré que necesitaba correr eval $(gdircolors -s) para configurarlo.
geekosaur
@ AP257: En mi Mac, puse alias en el archivo .bash_profile
Hai Vu
@Hai Vu: Eso solo funciona si nunca usas subshells.
geekosaur
@geekosaur gdircolors: invalid option -- 's' Quieres decir --sh ?
Anentropic
6

BSD ls funciona un poco diferente

alias ls='ls -G'

Deberia trabajar.

Y esto no es colorear bash, es ls haciendo la colorización. Cuando bash hace una lista de archivos (prueba echo * en un directorio) no hay forma de colorear. Mecanografía ls -G funcionaría en cualquier shell, aunque un shell (como bash) que tiene alias lo hace más fácil.

Rich Homolka
fuente
6

En la Mac, necesitas usar

export CLICOLOR=1

Puse eso en el .bash_profile. Sin embargo, prefiero la solución de Rich Homolka al alias ls con el indicador -G. Si quieres personalizar los colores:

man ls

y buscar LSCOLORS

Hai Vu
fuente
1

Considere instalar brew y usando la versión GNU de ls y otras herramientas.

Instale XCode desde la AppStore.

Instalar Homebrew ...

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

Instalar coreutils ...

brew install coreutils

Añadir a la parte inferior de su .profile...

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

Yo alias ls en mi .profile para hacer colores para todo y un atajo para la lista completa.

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)

Hay un montón de LS_COLORS opciones en github .

Paul J
fuente
-1

bash es solo un shell, no lista los archivos. Ejecuta comandos, tales como ls.

los --color La opción (y las opciones largas en general) son específicas de la versión de ls de GNU coreutils , que viene con la mayoría de las distribuciones de Linux. Por otro lado, Mac OS X tiene raíces BSD y utiliza la versión BSD de ls Que no admite la coloración.

grawity
fuente
1
-1: Es hace Soporte para colorear, solo con una bandera de línea de comando diferente: -G.
Wuffers