Herramientas de línea de comandos de Windows

Como desarrolladores que dedican la mayor parte de nuestro tiempo a programar en OSX y Linux, teníamos curiosidad por saber cómo sería una configuración de línea de comandos moderna en Windows.

Una encuesta para desarrolladores de StackOverflow nos recordó que hay más desarrolladores que usan Windows que cualquier otro SO, así que quisimos saber si las herramientas que existían estaban a la par con las que estábamos acostumbrados a usar Windows.

Después de dedicar un tiempo a la evaluación del panorama de las herramientas de la CLI de Windows, nos decidimos por un conjunto de herramientas que creemos que nos brindó el 95% del camino.

Al final del día, llegamos a una combinación de:

  • PowerShell
  • ConEmu
  • PSReadLine
  • PSGet
  • Amarillo
  • Babun (opcional)

A continuación, encontrará algunas notas más sobre lo que pueden aportar estas diferentes maquinarias.

PowerShell (shell)

  • Es mucho más cercano a un "shell" real que cmd.exe, lo que nos ofrece un entorno de secuencias de comandos potente para automatizar tareas. Es justo compararlo con Bash o zsh.
  • Autocompleta los nombres de directorio y archivos
  • Autocompletar nombres de aplicaciones
  • Tiene alias y comandos integrados (llamados "cmdlets", p. ej., Select-String es como grep, Invoke-Elevated es como sudo, Sort-Object es como sort, Get-Process enumera todos los procesos activos). Si pasas de otra shell a PS, Set-Alias te permite asignar alias que ya conoces a equivalentes de Windows. Por ejemplo: Set-Alias server python -m http.server 8000 inicia un servidor de Python cuando se usa el alias server.
  • Los alias se pueden conservar en un perfil de PowerShell.
  • Admite canalizaciones, como Unix. A diferencia de Unix, canaliza los objetos en lugar de las transmisiones de texto. Esto requiere acostumbrarse, pero evita tener que reparar cuando quieres salir de una propiedad.
  • Admite módulos. PSGet es un administrador de paquetes de PowerShell que te permite extenderlo con facilidad.
  • De manera opcional, considera Posh-Git, una secuencia de comandos de PowerShell para Git que permite completar las pestañas contextuales con tabulación.

Si te interesan las trivias, aquí encontrarás la respuesta de por qué MS creó PowerShell a partir del arquitecto principal.

PSReadLine (asistentes de edición de la consola)

  • Mejora considerablemente la experiencia de edición en la consola.
  • Resaltar la sintaxis cada vez que comienzas a escribir comandos Indica claramente los errores de sintaxis con un carácter rojo ">".
  • Vinculación de teclas altamente personalizable
  • Autocompletado estilo Bash
  • Búsqueda en el historial interactivo de Bash/zsh (Ctrl + R) También tiene un potente recorrido por el historial de comandos. Usa las teclas de flecha para ver con facilidad los comandos anteriores de varias líneas en lugar de solo la última línea del comando.
  • Compatibilidad adecuada para copiar, pegar y cortar (Ctrl + C/X/V debería funcionar bien)
  • Buena compatibilidad para deshacer y rehacer
  • El historial se guarda de forma automática

Como alternativa, puedes usar Clink, que tiene un conjunto similar de funciones, pero no está escrito estrictamente para PowerShell.

ConEmu (host de la consola)

  • Un emulador de consola avanzado en el que puedes ejecutar el shell que prefieras.
  • Admite la apertura de varias terminales en diferentes pestañas. Hace que sea trivial iniciar terminales como diferentes usuarios.
  • Sumamente personalizable: puede modificarse desde accesos directos hasta la selección de texto y los colores de la barra de estado.
  • Admite una vista de pantalla dividida.
  • Las apps de GUI simples se pueden ejecutar en pestañas
  • Compatibilidad con listas de salto de Windows 7 y versiones posteriores
  • Admite el cambio de tamaño de ventana sin problemas.
  • Suavizado de fuente de Windows
  • Las pestañas de inicio se pueden personalizar por completo para que comiencen en un directorio en particular
  • Función de copiar y pegar inteligente

A algunas personas todavía les gusta usar Console2, y Scott Hanselman escribió una entrada de blog sobre ella.

Cmd

Para pasar la nota, vale la pena escuchar Cmder, un paquete de emulación de consola que combina ConEmu, Clink y msysgit, para que te brinde asistentes de Git. Cmder te brinda una experiencia más atractiva para ConEmu de forma predeterminada mediante su esquema de colores de Monokai.

Cmd también incluye otros beneficios pequeños, como la integración con apps con GUI como Sublime Text.

Chocolatey (administrador de paquetes)

  • Básicamente comida casera para Windows, lo que te permite usar tus aplicaciones favoritas de Windows de forma conveniente. Actualmente, hay alrededor de 3,000 paquetes disponibles que se pueden actualizar directamente con Chocolatey.
  • Es diferente de Nuget. NuGet es para bibliotecas de desarrollo. Chocolatey es un administrador de paquetes de máquinas binarias y se basa en la infraestructura de NuGet.
  • Ofrece compilaciones efectivas silenciosas.

Quizás también te interese obtener información sobre OneGet, el administrador de paquetes de Microsoft, que debería funcionar con Chocolatey en Windows 10.

Babun (Cygwin preconfigurado)

  • Cygwin (el entorno similar a Linux para Windows) menos algunas de las peculiaridades históricamente conocidas. La configuración general es mucho más sencilla cuando se usa el instalador de Babun. Si tienes experiencia en Unix y prefieres no aprender PowerShell, vale la pena considerar cygwin/Babun.
  • Incluye un administrador de paquetes llamado pact (algo similar a brew) similar a apt-get. Esto es muy importante, ya que actualmente tienes que volver a ejecutar el instalador de Cygwin cuando agregas paquetes en lugar de usar solo el pacto.
  • Vim preinstalado y preconfigurado
  • Compatibilidad integrada para oh-my-zsh
  • Actualizaciones automáticas

Material de lectura adicional