OS X Terminal Colors [cerrado]

492

Soy nuevo en OS X, después de haber adquirido una Mac después de trabajar con Ubuntu Linux durante algún tiempo. Entre las muchas cosas que estoy tratando de resolver es la ausencia de colores en la ventana de mi terminal, como las que se muestran (en Linux) cuando se ejecuta ls -lao git status...

Simplemente no puedo entender cómo activar los colores en mi caparazón.

sa125
fuente
32
Cerrado como "fuera de tema", pero mira las etiquetas: osx, shell, terminal, colores ... me parece que está totalmente en el tema. Cubre OSX, se trata del shell, usa terminal y quiere agregar colores. Tengo que editar el perfil de bash, así que sí, diría que está sobre el tema.
Danijel-James W
12
Claramente sobre el tema, se trata de secuencias de comandos bash.
superluminary
55
Cerrado, tienes que estar bromeando! Claramente, esto tiene utilidad y valor para muchos (en su mayoría nuevos) codificadores Mac. Si los que cierran se toman en serio el hecho de que está fuera de tema, entonces ¿por qué no migrarlo para decir SE Think Different? Supongo que SO admite esa función utilizada en otros grupos SE.
Cam_Aust
eche un vistazo a esta respuesta: stackoverflow.com/a/48216286/3782119
Shayan Amani

Respuestas:

745

Aquí hay una solución que he encontrado para habilitar los colores de terminal global .

Editar su .bash_profile(ya que OS X 10.8) - o (el 10,7 y anterior): .profileo .bashrco /etc/profile(dependiendo de la disponibilidad) - en su directorio personal y añadir siguiente código:

export CLICOLOR=1
export LSCOLORS=GxFxCxDxBxegedabagaced

CLICOLOR=1 simplemente permite colorear su terminal.

LSCOLORS=... Especifica cómo colorear elementos específicos.

Después de la edición .bash_profile, inicie una Terminal y fuerce los cambios al ejecutar:

source ~/.bash_profile

Luego vaya a Terminal > Preferences, haga clic en la Profilespestaña y luego en la Textsubpestaña y verifique Display ANSI Colors.

Verificado en Sierra (mayo de 2017).

LuckyMalaka
fuente
21
acabo de hacer esto agregándolo a .bash_profile y funciona. sin embargo, no funcionó cuando lo agregué a .profile. ¡Gracias!
Morten
10
Acabo de editar mi /etc/profiley funciona de maravilla.
Cyclonecode
2
Para @Morten y cualquier otro que tenga dificultades con sus perfiles de bash, consulte estas respuestas para obtener una explicación y una solución: stackoverflow.com/a/7780055/665488 , superuser.com/a/244990 .
Cam Jackson
44
dotfiles / .aliases tiene una gran export LS_COLORSdeclaración
bobobobo
16
Si desea los mismos colores que usa Linux (al menos Debian y Ubuntu), useLSCOLORS=ExGxFxdxCxDxDxxbaDecac
remram
125

Puede usar la sintaxis basada en Linux en uno de sus scripts de inicio. Acabo de probar esto en una caja de OS X Mountain Lion.

p.ej. en tus~/.bash_profile

export TERM="xterm-color" 
export PS1='\[\e[0;33m\]\u\[\e[0m\]@\[\e[0;32m\]\h\[\e[0m\]:\[\e[0;34m\]\w\[\e[0m\]\$ '

Esto le da un buen aviso de color. Para agregar la lssalida en color , puede agregar alias ls="ls -G".

Para probar, simplemente ejecute a source ~/.bash_profilepara actualizar su terminal actual.

Nota al margen sobre los colores: los colores están precedidos por una secuencia de escape \ey definidos por un valor de color, compuesto [style;color+m]y envuelto en una []secuencia de escape . p.ej.

  • rojo = \[\e[0;31m\]
  • rojo negrita (estilo 1) = \[\e[1;31m\]
  • coloración clara = \[\e[0m\]

Siempre agrego un esquema de color ligeramente modificado en el .bash_profile de la raíz para que el nombre de usuario sea rojo, por lo que siempre veo claramente si estoy conectado como root (útil para evitar errores si tengo muchas ventanas de terminal abiertas).

En /root/.bash_profile:

PS1='\[\e[0;31m\]\u\[\e[0m\]@\[\e[0;32m\]\h\[\e[0m\]:\[\e[0;34m\]\w\[\e[0m\]\$ '

Para todas mis cuentas SSH en línea, me aseguro de poner el nombre de host en rojo, para distinguir si estoy en una terminal local o remota. Simplemente edite el .bash_profilearchivo en su directorio de inicio en el servidor. Si no hay ningún .bash_profilearchivo en el servidor, puede crearlo y debe obtenerse al iniciar sesión.

Si esto no funciona como se esperaba para usted, lea algunos de los comentarios a continuación, ya que no estoy usando MacOS muy a menudo.

Si desea hacer esto en un servidor remoto, verifique si el ~/.bash_profilearchivo existe. De lo contrario, simplemente créelo y debería obtenerse automáticamente en su próximo inicio de sesión.

4 niveles
fuente
2
¿Cómo editas bash_profile para cuentas ssh en línea?
Andy
1
Me gusta PS1más en $PWDlugar de \u, como tal:PS1=\[\e[0;31m\]$PWD\[\e[0m\]@\[\e[0;32m\]\h\[\e[0m\]:\[\e[0;34m\]\w\[\e[0m\]\$
cregox
1
Aquí hay más explicaciones de los códigos para la solicitud: wiki.archlinux.org/index.php/Color_Bash_Prompt#Step_by_step .
JohnK
1
Estos enlaces también pueden ser útiles: secuencias de escape de código de color ANSI . Más sobre los códigos PS1 .
JohnK
1
Estaba teniendo problemas para que los colores PROMPT_COMMAND se mostraran correctamente en El Capitan (OS X 10.11) usando estos códigos de color. Resulta que cuando se usa PROMPT_COMMAND, debe usar la \033sintaxis en lugar de \e. Ejemplo para agregar una marca de tiempo de color antes de su solicitud (incluir esto en su ~/.bashrco ~/.bash_profile):PROMPT_COMMAND="${PROMPT_COMMAND}; echo; echo -e '\033[0;35m'\[\$(date +%F\ %T)\]'\033[m'"
user5359531
42

Los métodos MartinVonMartinsgrün y 4Levels confirmaron que funcionan muy bien en Mac OS X Mountain Lion.

El archivo que necesitaba actualizar era ~ / .profile.

Sin embargo, no podría dejar esta pregunta sin recomendar mi aplicación favorita, iTerm 2 .

iTerm 2 le permite cargar esquemas de color globales desde un archivo. Realmente fácil de experimentar y probar un montón de esquemas de color.

Aquí hay una captura de pantalla de la ventana iTerm 2 y las preferencias de color. iTerm2 Color Preferences Captura de pantalla Mac

Una vez que agregué lo siguiente a mi archivo ~ / .profile, iTerm 2 pudo anular los colores.

export CLICOLOR=1
export LSCOLORS=GxFxCxDxBxegedabagaced
export PS1='\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '

Aquí hay un gran repositorio con algunos buenos ajustes preestablecidos:

Esquemas de color iTerm2 en Github por mbadolato

Bonificación: elija "Mostrar / ocultar iTerm2 con una tecla de acceso rápido en todo el sistema" y vincular la tecla con BetterTouchTool para ocultar / mostrar el terminal instantáneamente con un gesto del mouse.

Nick Woodhams
fuente
1
iTerm2 se bloqueó a menudo en mi sistema, así que cambié a oh-my-zsh github.com/robbyrussell/oh-my-zsh . También hay temas disponibles
LuckyMalaka
¡Oye! Por favor, cambie el baskervilleenlace al correcto. Parece incorrecto copiar y pegar.
Jevgeni Smirnov
@NickWoodhams, ¿cuál es el tema de color que estás usando en la captura de pantalla?
Indradhanush Gupta
1
@IndradhanushGupta No estoy seguro de qué esquema de color era, fue hace un tiempo. Pero ahora estoy usando el tema Pure ZSH y me encanta. github.com/sindresorhus/pure
Nick Woodhams
1
este es un esquema de color agradable y lo que tenía que comprobar los elementos // tipos de directorios y etc
rio
17

Si desea colorear su ls, debe editar su archivo ~ / .bash_profile y agregar la siguiente línea (si no está escrita):

source .bashrc

Luego edita o crea un archivo ~ / .bashrc y escribe un alias en el comando ls:

alias ls="ls -G"

Ahora tiene que escribir source .bashrcuna terminal si ya está iniciada, o simplemente abrir una nueva terminal.

Si quieres más opciones en tu lsjuste lee el manual ( man ls). Las opciones no son exactamente las mismas que en un sistema GNU / Linux.

Marcio
fuente
66
Una opción algo mejor es reemplazar la definición de 'alias' con 'export CLICOLOR = ""'. Esto tiene la ventaja de que generalmente continúa funcionando incluso si cambia de shells durante una sesión de terminal (siempre que las variables de entorno sean heredadas, los alias no lo son).
Ned Deily
5

Si está utilizando tcsh, edite su ~/.cshrcarchivo para incluir las líneas:

setenv CLICOLOR 1
setenv LSCOLORS dxfxcxdxbxegedabagacad

Donde, como dice Martin, LSCOLORS especifica el esquema de color que desea usar.

Para generar los LSCOLORS que desea utilizar, consulte este sitio

smaccoun
fuente
44
bashha sido el valor predeterminado en OS X desde octubre de 2003.
nelsonjchen
1
Creo que tienes razón. Acabo de recibir una nueva Mac y tenía bash por defecto. Supongo que TI siguió configurando mis Mac en el trabajo para tener tcsh por defecto.
smaccoun
1
¡El enlace es simplemente increíble!
Sankalp
4

Verifique lo que $ TERM le da: el mío es xterm-color y ls -alG luego produce resultados coloreados.

William Rose
fuente
bueno, en capitan con xterm-256color, no obtengo colores. CLICOLORy LSCOLORSno cambies eso):
drevicko
2

Cuando trabajé en Mac OS X en el laboratorio pude obtener los colores del terminal usando Terminal (en lugar de X11) y luego editando el perfil (desde la barra de menú de Mac). La interfaz es un poco extraña en los colores, pero debe configurar el tema modificado como predeterminado.

Otras configuraciones funcionaron mediante la edición .bashrc.

ccook
fuente