Saltar al contenido principal

% 16k.es

¿Harto de complicadísimos prompts en la shell?

¿Harto de complicadísimos prompts en la shell? Yo sí 😡

bash

Desde hace un tiempo parece haber una tendencia a tener prompts super complicados, con una barbaridad de información que la mayoría de veces es innecesaria, mil colores, scripts y plugines que hacen que sea lento de cojones, prompts multilínea… ¡¡prompts multilínea!! ¡¡Perop qué coj…!!

Por una cosa u otra paso bastante tiempo en la shell y me he preguntado qué es lo que realmente necesito.

Por defecto, lo normal es que el prompt contenga el nombre de usuario y el host. ¿Lo necesito? Posiblemente no, normalmente sé quién soy y dónde estoy.

Si estoy con otro usuario y otro host, lo más seguro es que la shell me dé esa información; pero la mayoría del tiempo voy a estar en mi maquinita y con mi propio usuario.

Hay unas cuantas cosas que sí me parecen útiles:

  • ¿Qué hora es? Sí, ya sé que tengo un reloj en la barra superior del escritorio (y en la muñeca), pero me viene bien tenerlo en el prompt. Me ayuda a gestionar mejor el tiempo, no llegar con retraso a una reunión, a dejar de trabajar a ciertas horas… 👹
  • ¿En qué directorio estoy? Claramente esto me viene muy bien
  • Si tengo control de versiones (git), ¿en qué rama estoy? ¿Estoy al día? Tras muchas dudas he decidido que esto también me resulta útil.

Suficiente.

Esto es todo lo que necesito:

simple bash prompt

¿Cómo lo hago? Así:

$ cat ~/.bashrc
[...]
# bash simple prompt with git information
function parse_git_dirty {
  [[ $(git status --porcelain 2> /dev/null) ]] && echo "*"
}
function parse_git_branch {
  git branch --no-color 2> /dev/null | sed -e '/^[^*]/d' -e "s/* \(.*\)/ (\1$(parse_git_dirty))/"
}

export PS1="\[\e[32m\]\A \[\e[96m\]\w\[\e[93m\]\$(parse_git_branch)\[\e[00m\] $ "
[...]

Hala, ¡disfruta de un bash prompt bien sencillito!