Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. Web Development

Cómo personalizar la línea de comandos

by
Read Time:10 minsLanguages:

Spanish (Español) translation by steven (you can also view the original English article)

Soy un gran admirador de la terminal: ya sea que estés aprovechando un puñado de comandos (¡o más!) para mejorar tu proceso de desarrollo, o simplemente usándolo para moverte rápidamente por tus unidades y abrir archivos y carpetas, la línea de comandos es una herramienta asombrosa. Sin embargo, si la usas con frecuencia, querrás personalizarla según tus necesidades. ¡Te mostraré cómo hacer eso hoy!

A menudo me preguntan: "¿Cómo lograste que tu símbolo del sistema se viera así?" Bueno, en este tutorial, te mostraré exactamente cómo hacerlo. Es bastante simple y no requerirá demasiado tiempo.

Debo señalar que lo que les estoy mostrando es específicamente para el shell bash; este es el shell predeterminado en Mac y la mayoría de los sistemas Linux. Si deseas un indicador de bash en Windows, es posible que desees consultar Cygwin.


¿Cómo funciona?

Antes de comenzar, hablemos por un minuto sobre cómo personalizar el indicador de bash. No es exactamente lo mismo que una aplicación normal: no hay panel de preferencias. Tus personalizaciones se almacenan en un archivo. Si estás en Linux (o usando Cygwin), ese será tu archivo .bashrc; en Mac, ese es tu archivo .bash_profile. En ambos casos, este archivo se guarda en tu directorio de inicio (si no estás seguro de dónde está para una instalación de Cygwin, ejecuta el comando echo $HOME). Ten en cuenta que solo me referiré al archivo .bashrc de aquí en adelante, pero usa el .bash_profile si estás en una Mac.

Ten en cuenta que en Mac (y posiblemente en máquinas Linux; no estoy seguro), los archivos que comienzan con un punto están ocultos de forma predeterminada. Para mostrarlos, ejecuta estas dos líneas en la terminal:

Entonces, ¿qué hay en ese archivo .bashrc? Cada línea es en realidad un comando que puedes ejecutar en la línea de comandos. De hecho, así es como funcionan estos archivos de configuración: Cuando abres la consola, todos los comandos que has escrito en el archivo de configuración se ejecutan, configurando tu entorno. Entonces, si solo deseas probar algo de lo que mostraré a continuación, simplemente escríbelo en la línea de comandos. La simplicidad aquí es hermosa.


Personalización de PS1

Comencemos con una definición. El indicador o prompt es lo que ves al principio de la línea, cada vez que presionas enter en la línea de comandos. Estos son los ajustes predeterminados para Mac:

Mac Default TerminalMac Default TerminalMac Default Terminal

En este caso, el prompt es andrews-macbook:~ screencast$. Aquí hay algunas variables: andrew-macbook es el nombre de esta computadora, ~ es el directorio actual (el directorio de inicio) y screencast es el nombre de usuario. Personalicemos esto un poco.

Abre tu archivo .bashrc. La forma en que configuramos la información que se muestra en el indicador es con la variable PS1. Agrega esto al archivo:

Observa que no pongo espacios a ambos lados del signo igual; eso es necesario. Guarda este archivo en tu directorio personal y vuelve a abrir una ventana de terminal. Ahora, deberías tener un mensaje similar a este:

Mac Customized TerminalMac Customized TerminalMac Customized Terminal

Notaré aquí que si te resulta tedioso cerrar y volver a abrir tu terminal cada vez que realizas un cambio en su .bashrc o .bash_profile, hay un pequeño atajo: puedes cargar cualquier archivo de personalización de bash con el comando source. Ejecuta esto en tu terminal:

¿Aún es demasiado tiempo? Bueno, un solo punto (.) Es un alias de source. ¿Feliz ahora? Si es rápido, te darás cuenta de que podemos usar el comando source para incluir otros archivos dentro de nuestro archivo .bashrc, si deseas dividirlo para mantener el control.

Personalicemos nuestro prompt un poco más. Podemos usar variables integradas en la cadena que asignamos a PS1 para incluir información útil en el indicador; aquí hay algunos útiles:

  • \d: Fecha
  • \h: Servidor
  • \n: Nueva línea
  • \t: Tiempo
  • \u: Nombre de usuario
  • \W: Directorio de trabajo actual
  • \w: Ruta completa al directorio actual

Entonces, si configuras tu prompt en esto:

deberías ver algo como esto:

Mac Customized TerminalMac Customized TerminalMac Customized Terminal

Observa algunas cosas aquí: en primer lugar, estamos usando un montón de las variables que se muestran arriba para darnos más información. Pero en segundo lugar, incluimos algunas líneas nuevas allí, y obtenemos un mensaje más interesante: tenemos el directorio actual en una línea y luego el mensaje real en la siguiente línea. Prefiero mi mensaje de esta manera, porque siempre tengo la misma cantidad de espacio para escribir mis comandos, sin importar cuán larga sea la ruta al directorio actual. Sin embargo, hay una mejor manera de hacer esto, así que veamos eso ahora.


Personalizando PROMPT_COMMAND

La mejor manera de hacer esto es usando la variable PROMPT_COMMAND; el contenido de esta variable no es solo una cadena, como en PS1. En realidad, es un comando que se ejecuta antes de que bash muestre el indicador. Para probar esto, agreguemos esto a nuestro .bashrc:

Estamos usando el comando echo aquí; si no estás familiarizado con él, simplemente pásale una cadena y lo escribirá en la terminal. Por sí mismo, no es increíblemente útil (aunque puedes usarlo para ver variables: echo $PS1), pero es genial cuando se usa con otros comandos, así que muestra su salida. Si agregaste la línea anterior, deberías ver esto:

Mac Customized TerminalMac Customized TerminalMac Customized Terminal

Hagamos algo más útil aquí. Escribamos una función bash que asignaremos a PROMPT_COMMAND. Prueba esto:

Si usas esto, no deberías ver una diferencia en tu prompt de lo que tenemos arriba. Ahora, hagamos esto útil.

Esto es lo que obtendrás:

Mac Customized TerminalMac Customized TerminalMac Customized Terminal

Es un buen comienzo, pero quiero hacer un poco más. Voy a usar el comando printf en lugar de echo porque facilita un poco la inclusión de nuevas líneas y variables. Un resumen rápido del comando printf: toma varios parámetros, el primero es una especie de plantilla para la cadena que se generará. Los otros parámetros son valores que se sustituirán en la cadena de la plantilla cuando corresponda; veremos cómo funciona esto.

Así que hagamos esto:

¿Ves esas partes de %s ahí? Eso significa "interpretar el valor de este lugar como una cadena"; para el contexto, también podríamos usar %d para formatear el valor como un número decimal. Como puedes ver, tenemos dos %s en la cadena de "template" y otros dos parámetros. Estos se colocarán en la cadena donde están los %s. Además, observa las nuevas líneas al principio y al final: la primera solo le da a la terminal algo de espacio para respirar. El último asegura que el mensaje (PS1) se imprimirá en la siguiente línea y no en la misma línea que PROMPT_COMMAND.

Deberías obtener una terminal como esta:

Mac Customized TerminalMac Customized TerminalMac Customized Terminal

Añadiendo algo de color

¡Se ve bien! Pero vayamos un paso más allá. Agreguemos algo de color a esto. Podemos utilizar algunos códigos especiales para cambiar el color del texto en el terminal. Puede ser bastante abrumador usar el código real, así que me gusta copiar esta lista de variables para el color y agregarla en la parte superior de mi archivo .bashrc:

Hay algún método para esta locura: el primer conjunto es activar el color normal. El segundo conjunto enciende los colores llamativos. El tercer conjunto enciende el color subrayado. Y ese cuarto conjunto enciende el color de fondo. Ese último restablece la coloración a la normalidad. Entonces, ¡usemos estos!

Aquí, agregué $txtred antes del primer %s, y $bldgrn antes del segundo %s; luego, al final, restablecí el color del texto. Tienes que hacer esto porque una vez que establezcas un color, se mantendrá hasta que uses un nuevo color o restablezcas el color. También notarás que al configurar una variable, no le ponemos un signo de dólar como prefijo; pero usamos el signo de dólar cuando usamos la variable: así es como funcionan las variables del bash. Esto nos da lo siguiente:

Mac Customized TerminalMac Customized TerminalMac Customized Terminal

Pasemos al paso final: agregar algunas secuencias de comandos para brindarnos aún más información.


Agregar información de control de versiones

Si has visto los screencasts que vienen con mi libro "Getting Good with Git", es posible que recuerdes que tengo información de control de versiones en mi prompt. Obtuve esta idea del excelente screencast de PeepCode "Advanced Command Line", que comparte esto, así como muchos otros excelentes consejos.

Para hacer esto, necesitaremos descargar y compilar la secuencia de comandos que encuentra esta información. Dirígete al repositorio de vcprompt, un script que genera la información de control de versiones. Si estás familiarizado con el sistema de control de versiones de Mercurial, puedes usarlo para obtener el repositorio, pero lo más probable es que desees presionar ese enlace "zip" para descargar el código de secuencia de comandos como un archivo zip. Una vez que lo descomprimas, tendrás que compilar el script. Para hacer esto, simplemente accede a la carpeta del script descomprimido mediante cd y ejecuta el comando make. Una vez que se ejecuta este comando, deberías ver un archivo llamado "vcprompt" en la carpeta. Este es el script ejecutable.

Entonces, ¿cómo usamos esto en nuestro prompt? Bueno, esto trae un rastro de conejo importante: ¿cómo “instalamos” un script (como este) para que podamos usarlo en la terminal? Todos los comandos que puedes ejecutar en el terminal se encuentran en una matriz definida de carpetas; esta matriz es la variable PATH. Puedes ver una lista de las carpetas que se encuentran actualmente en tu PATH ejecutando echo $PATH. Podría verse algo como esto:

Lo que tenemos que hacer es poner el script ejecutable vcprompt en una carpeta que está en nuestra ruta. Lo que me gusta hacer (y sí, también aprendí este truco de ese screencast de PeepCode) es crear una carpeta llamada "bin" (abreviatura de "binario") en mi directorio de inicio y agregar esa carpeta a mi PATH. Agrega esto a tu .bashrc:

Esto establece PATH en ~/bin, más lo que ya estaba en la variable PATH. Si ahora ponemos ese script vcprompt en ~/bin, podremos ejecutarlo en cualquier carpeta de la terminal.

Entonces, ahora agreguemos esto a nuestro prompt:

Agregué $txtpur %s a la cadena "template" y agregué el cuarto parámetro "$(vcprompt)". El uso del signo de dólar y el paréntesis ejecutará el script y devolverá la salida. Ahora, obtendrás esto:

Mac Customized TerminalMac Customized TerminalMac Customized Terminal

Ten en cuenta que si la carpeta no utiliza algún tipo de control de versión, no se muestra nada. Pero, si estamos en un repositorio, obtenemos el sistema de control de versiones que se está utilizando (Git, en mi caso) y el nombre de la rama. Puedes personalizar un poco esta salida, si lo deseas: consulta el archivo Readme que descargaste con el código fuente de la secuencia de comandos vcprompt.


¡Sigue adelante!

Aquí está nuestro archivo .bashrc o .bash_profile completo:

Bueno, ese es un curso intensivo sobre cómo personalizar el indicador de bash. Si tienes alguna pregunta, ¡asegúrate de dejarla en los comentarios!

Advertisement
Did you find this post useful?
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.