Cmder: La consola para Windows

Cmder: La consola para Windows

Sí, uso Windows y Linux y macOS. [Los big 3]. He utilizado esos sistemas operativos en diferentes circunstancias y periodos de tiempo. Ocurre que soy un poco perezoso para instalarlos, por lo cual generalmente trabajo con el sistema que tenga la computadora de turno.

Si bien en general me es indiferente el OS, suelo ser medio "novelero" con las consolas que utilizo [¿consoleporn?]

Me gusta que tengan colores, pero no tantos. No quiero trabajar con un árbol de navidad como consola. Mientras permita personalizar el color y tipo de fuente, el prompt y alguna cosa más, está bien.

Al momento de escribir este artículo, estoy utilizando Windows 10 y como consola: Cmder [aparentemente se pronuncia “Commander”]

¿Qué es Cmder?

Cmder es, según sus propios creadores, un:

|"paquete de software creado por pura frustración ante la ausencia de buenos emuladores de consola en Windows. Está basado en un software increíble, y aderezado con el esquema de colores de Monokai y un diseño de prompt personalizado, con un aspecto atractivo desde el principio."|

Quizás has notado que muchos proyectos comienzan porque su creador no encontró una herramienta que se adaptara a sus gustos, y Cmder parece no ser la excepción.

¿En qué se diferencia Cmder de otras consolas que andan en la vuelta y en especial de la nueva Windows Terminal?

Bueno, aparte de que λCmder es la única consola que utiliza la letra lambda [λ] como parte de su nombre, ofrece algunas funcionalidades interesantes, y más considerando que es un proyecto que hace varios años que está en la vuelta, mucho antes que la coqueta Windows Terminal. [Nunca una consola tuvo una página web tan glamorosa. Fotografía Glamor aplicada a las terminales.]

Te voy a contar lo que puede hacer la consola y, por otro lado, las funcionalidades que yo utilizo diariamente, que serán un 5 % de todas las disponibles.

Cmder tiene pilas incluidas

Cmder viene con "pilas incluidas", esto quiere decir que incorpora:

Cmder es portable, como una valija

Esto, se supone, es una de las ventajas más significativas de Cmder.

La portabilidad es posible gracias a que Cmder puede ser utilizada sin necesidad de ser instalado. O sea, que podés llevar tu consola "tuneada" en una memoria USB, o tener guardadas tus configuraciones en la nube para sincronizar tus alias y el historial.

Supongo es una característica de utilidad para aquellos que trabajan con más de una computadora, o de mesa de ayuda (soporte), en donde podes ir cargando tu consola en el bolsillo con todas las herramientas que necesites para hacer tu trabajo.

Cmder se trata de alias

Mi funcionalidad favorita. Sí, ya sé que con otras consolas puedo tener alias, incluso que es una característica que existe desde tiempos remotos en Linux, pero la gestión de los alias en Cmder me resulta elegante.

¿Cómo funcionan los alias?

Si no conoces lo que son los alias, no sabes de lo que te estás perdiendo. Podés visitar la página de alias de Wikipedia, pero básicamente, es una forma de acortar comandos. Se usa para abreviar, para no tener que escribir tanto, o tener que recordar un nombre de un comando largo. También se puede concatenar una serie de comandos mediante pipes. Una vez que la agarras la mano vas a ver que los usos que le podés dar son muchos.

En Cmder un alias se define simplemente usando el comando alias que, por detrás de las cortinas, utiliza un programa que viene con Windows llamado: Doskey.exe.

Los alias que son creados con Cmder se encuentran automáticamente disponibles para su uso y persisten entre sesiones (quedan guardados en el archivo %cmder_root%\config\user_aliases.cmd).

Te voy a mostrar algunos de los alias que yo utilizo de forma diaria.

Levantar un servidor web

En ocasiones necesito levantar un servidor web en un directorio para, por ejemplo, hacer un preview de una página. Para eso me valgo del servidor que viene integrado con PHP.

php -S 127.0.0.1:80

Con ese comando levantamos el servidor web, sirviendo el contenido que se encuentre en el directorio desde donde invocamos al ejecutable.

Si bien no es un comando difícil de recordar o muy largo, es más fácil si pudiéramos levantarlo simplemente escribiendo:

server

Bueno, podemos crear un alias con el nombre que queramos en Cmder simplemente ejecutando lo siguiente:

¡Listo! Ahora ya podemos escribir server para invocar al servidor PHP.

La sintaxis para crear alias con Cmder es la siguiente:

alias [nombre del alías]=[comando que se asignara al alias]

Pero, ¿Qué pasa si queremos levantar el servidor en un puerto diferente?

Buena pregunta. La respuesta: los alias de Cmder soportan el pasaje de parámetros.

Ahora podemos pasar el puerto del servidor como parámetro en la invocación:

server-port 8080

Una vez que comienzas a crear alias ¡no podés parar! Terminas teniendo alias para todo: ¿necesitas acortar el ingreso vía SSH a un server? ¡te creas un alias! ¿Queres saber cual es tu IP pública? ¡te creas un alias! ¿Y el precio de Dogecoin? ¡venga! ¡un alias nuevo! Bueno, creo que ya te haces una idea.

Pero esta obsesión de "aliesar" todo, puede fatigar tu creación nemotécnica y terminas creando alias de alias. Para ayudarte con eso, Cmder tiene autocompletado. Presionando la tecla tab te muestra todos los alias y ejecutables disponibles que inician con las letras que ingresaste en la consola, como se puede apreciar en el siguiente gif:

Gestionando los alias

Cmder te permite gestionar los alias, es decir, no solo crearlos, sino borrarlos, actualizarlos y también recuperarlos desde un archivo diferente en el cual persisten por defecto.

Los comandos que acepta el ejecutable alias son los siguientes:

  /d [alias]     Delete an [alias].
  /f [macrofile] Path to the [macrofile] you want to store the new alias in.
                 Default: C:\Users\user\cmder dev\config\user_aliases.cmd
  /reload        Reload the aliases file.  Can be used with /f argument.
                 Default: C:\Users\user\cmder dev\config\user_aliases.cmd

 If alias is called with no parameters, it will display the list of existing
 aliases.

 In the alias command, you can use the following notations:

 ^^^^% - % signs in env vars must be escaped if preserving the variable
         in he alias is desired. Variables in aliases surrounded by double
         quotes only require '^%' vs '^^^^%'
 $*    - allows the alias to assume all the parameters of the supplied
         command.
 $1-$9 - Allows you to seperate parameter by number, much like %1 in
         batch.
 $T    - Command seperator, allowing you to string several commands
         together into one alias.

Vamos a crear un alias que muestra tu dirección pública. Sí, ya sé que existen utilidades que te permiten conocer ese dato sin necesidad de invocar ningún servicio externo, pero eso no es tan divertido. Así que usando la API de https://myexternalip.com, concretamente el endpoint /raw, podemos hacer lo siguiente:

alias ip=curl https://myexternalip.com/raw

Acá te dejamos otro alias más elaborado que abre en un browser el repo de GitHub configurado en el origin:

alias myorigin=git remote -v $b grep origin $b head -n 1 $b cut -f 2 $b cut -d ' ' -f 1 $g ^^^^%temp^^^^%\repo.tmp $t unix2dos ^^^^%temp^^^^%\repo.tmp 2$lnull $t sleep 1 $t set /p x=$l^^^^%temp^^^^%\repo.tmp $t start /b ^^^^%x^^^^%

Colores, queremos colores

Cmder es personalizable, podes dejarlo como un arcoíris, una tarde de verano, o un jardín de margaritas. Cómo tu prefieras.

Simplemente para mostrarte lo que se puede hacer, voy a instalar el tema Dracula.

La instalación es tan fácil como bajar un archivo xml e importarlo desde la ventana de configuración (WIN+ALT+P) de Cmder. Presionamos el botón Import... para seleccionar el archivo que contiene el esquema de colores.

Luego de la importación tenemos que salvar la configuración presionado Save settings.

Así nos queda la consola:

Ahora queremos tab ¿Cmder tiene tab?

Sí, Cmder tiene soporte para tab. Podés abrir tantos como quieras.

Cmder te permite:

  • renombrar las tab (como si fueran hojas de Excel)
  • Abrir consolas como Admin
  • Cambiar rápidamente entre tab con un atajo de teclado

¿Qué más puede hacer Cmder?

¡Mucho más! Te vamos a mostrar que más podés hacer con Cmder, pero te recomendamos darte una vuelta por la Wiki del proyecto, ahí vas a encontrar toda la información necesaria, desde tips para customizar tu experiencia, hasta integración con otras terminales, como ser: FluentTerminal, Terminus y Windows Terminal.

También se puede integrar con VS Code y Sublime Text 3, para usar Cmder como terminal en esos editores.

Una funcionalidad muy interesante (y quizás práctica para algunos), es la posibilidad de hacer un attach de un proceso gracias a ConEmu. Te mostramos un ejemplo:

Lo que hicimos fue un attach del ejecutable de Publii [Sí, usamos Publii para crear este blog ¿Y sabes qué? ¡Nos encanta!]

Eso nos permite trabajar con el programa en una pestaña de Cmder, para tener un espacio de trabajo más centralizado, con la posibilidad de hacer un switch rápido entre aplicaciones. El proceso attachado a la consola hereda algunas propiedades de Cmder, por ejemplo: la transparencia.

Con esta funcionalidad Cmder te permite hacer una especie de "gestión de ventanas", una forma (muy) primitiva de Tiling window manager, pero, obviamente, no al nivel de dwm o bug.n.

Te dejamos un video de Fazt Code en donde nos muestra algunas funciones más de Cmder.

A modo de resumen sobre Cmder

La verdad es que con este artículo no le hacemos justicia a todo lo que Cmder tiene para ofrecer. Solo avistamos, a lo lejos, la punta de un iceberg inmenso. Si estás interesado te recomiendo visitar la página del proyecto https://cmder.net.

Por último: detrás de todo proyecto siempre hay una o varias personas. En este caso Cmder fue inicialmente desarrollado por Samuel Vasko, cuyo código contribuyo al proyecto Mars 2020 Helicopter Mission, como lo atestigua este reconocimiento que le hace Gihtub en su perfil.

Vaya desde acá nuestro agradecimiento a Samuel y a todo el equipo de contribuidores, que de forma desinteresada hacen posible que tengamos un excelente programa como lo es λCmder.

¿Qué consola usas? ¿Tenes alguna para recomendar? Compartí con nosotros esa info en los comentarios 👇

¡Nos vemos! Peace. ✌


/ Súmate al boletín. No es gran cosa, pero es gratis 👇 /


— Ojo, son avisos 👇—
— Fin de los avisos —