Llegamos a ustedes gracias a:



Reportajes y análisis

Descubra el poder de Bash en Windows

[22/04/2017] Microsoft Windows puede ser el jugador dominante en el escritorio, pero el rápido aumento del mercado de software de código abierto, especialmente para la administración y herramientas de desarrollo, claramente favorece a Linux. Sin mencionar el mercado móvil, donde Android utiliza variantes de Linux. Si es un desarrollador en Windows, la música para moverse al compás de Linux suena cada vez más fuerte.

Con el paso de los años, Microsoft ha introducido varias soluciones para el uso de capacidades Linux en Windows, como PowerShell con SSH y Cygwin y MSYS. La ejecución de Linux dentro de una máquina virtual es otra opción. Sin embargo, las máquinas virtuales consumen una cantidad significativa de recursos y no proporcionan una experiencia de primera clase en Linux, ya que no se pueden editar archivos locales ni obtener acceso total a unidades locales, por ejemplo.

A medida que el mundo de TI se está volviendo hacia Linux para muchos proyectos, Microsoft ha presentado una nueva oferta para aprovechar este creciente mercado. Bash en Windows es la respuesta. Aquí le guiaremos a través de la instalación de Bash en Windows y le daremos una idea de lo que puede hacer, y por qué lo haría, en la línea de comandos de Linux.

Visión general de Bash en Windows

Bash en Windows es una nueva característica agregada a Windows 10. Microsoft se ha asociado con Canonical -alias los creadores de Ubuntu Linux- para construir esta nueva infraestructura dentro de Windows llamada Windows Subsystem for Linux (WSL). Permite a los desarrolladores acceder a un conjunto completo de CLI (command line interface) y utilidades de Ubuntu. Con una experiencia nativa de Linux, los desarrolladores pueden ejecutar comandos de Linux en Windows, incluyendo el acceso a archivos y unidades locales. A medida que Linux se integra de forma nativa en Windows, los desarrolladores tienen la flexibilidad de trabajar en el mismo archivo en Linux y Windows. En pocas palabras, Bash en Windows trae el entorno de usuario Ubuntu a Windows, excepto el kernel de Linux.

Bash vs. PowerShell

Microsoft ya tiene un shell de comandos en PowerShell. Entonces, ¿cómo se diferencia Bash en Windows? PowerShell es el framework de administración de configuración de Microsoft para automatizar tareas. Se utiliza para administrar Windows con su arquitectura orientada a API. Bash, por otro lado, se basa principalmente en archivos de texto para la automatización y el desarrollo. Los dos difieren en el enfoque y el diseño. Por ejemplo, al listar archivos en un directorio mediante el comando ls, PowerShell muestra la salida como objetos de archivo, mientras que Bash en Windows muestra la salida como un conjunto de cadenas. Afortunadamente, para los administradores de Windows, se puede trabajar con ambas soluciones lado a lado y obtener lo mejor de ambos mundos.

Una palabra de precaución: PowerShell tiene alias que le permiten pensar que está ejecutando comandos tradicionales Bash cuando, de hecho, está ejecutando cmdlets de PowerShell. Esto puede hacer tropezar a algunas personas. Por ejemplo, ls es un alias para el comando Get-ChildItem. Del mismo modo, pwd es un alias para Get-Location y cd es un alias para Set-Location. Para obtener una lista de todos los alias de PowerShell, utilice el comando cmdlet Get-Alias.

Bash en Windows ofrece múltiples beneficios a los desarrolladores de código abierto. Al incorporar capacidades nativas de Linux a Windows, Bash en Windows elimina la necesidad de ejecutar el arranque dual con Ubuntu para acceder a las capacidades de Linux. No es necesario ir a Mac OS X, ejecutar una máquina virtual o crear soluciones con Cygwin. Este ofrece el conjunto de herramientas necesario para escribir y generar código para sus escenarios y plataformas. Al acceder al sistema de archivos de Windows desde Bash, puede trabajar en los mismos archivos utilizando Windows o la CLI de Linux.

¿Cómo conecto Microsoft Bash a Windows?

En la Conferencia de Build de abril del 2016, Microsoft anunció el Subsistema de Windows para Linux (WSL) para sorpresa de muchos. Nacido de una asociación con Canonical, Bash en Windows se envió por primera vez con Windows 10 Anniversary Update. Viene en dos partes: el subsistema de núcleo y un paquete. El subsistema de núcleo ya forma parte de Windows 10 Insider Builds y ofrece la API de Linux en Windows, lo que significa que puede cargar de forma nativa bibliotecas y ejecutables de Linux. Canonical proporciona el paquete de software como una opción. Este paquete de software ofrece las herramientas Bash y CLI necesarias para el entorno Linux.

Microsoft Bash
Instalación de Bash

Para ejecutar Bash en Windows, el sistema debe ejecutar la versión x64 de Windows 10 Anniversary Update Build 14393 o posterior. Descubra el build digitando winver en el cuadro de comandos.

Si la versión de compilación es inferior a 14393, no podrá instalar Bash.

Para habilitar Bash en una compilación compatible, primero debe activar el modo de desarrollador. Para ello, diríjase a Configuración, haga clic en Para desarrolladores y seleccione el botón de opción Modo desarrollador. Una vez hecho esto, se le solicitará que confirme.

Microsoft Bash

Una vez hecho esto, la característica Windows Subsystem for Linux debe estar habilitada. La forma más sencilla de hacerlo es a través de un cmdlet de PowerShell:

Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux

Para abrir Bash en Windows, abra el símbolo del sistema, escriba bash y acepte el acuerdo de licencia. Cuando Bash se instala, realiza algunos cambios en su sistema:

  • Se descarga una imagen en modo de usuario de Ubuntu.
  • Se crea una carpeta oculta ubicada en % localappdata%\lxss\.
  • Se coloca un acceso directo en el escritorio.

Para ejecutar Bash, ahora puede ir al símbolo del sistema o utilizar el ícono de acceso directo del escritorio.

Después de la instalación satisfactoria de Bash, el sistema le pedirá que cree un nombre de usuario y una contraseña de Unix. Este nombre de usuario y contraseña son para Bash, y no se relacionan de ninguna manera con su entorno de Windows.

Introducción a los comandos

Una vez en Bash, tiene algunos comandos disponibles para administrar WSL y la imagen de Ubuntu.

  • lxrun: para administrar la instancia de WSL
  • lxrun / install: Para iniciar el procedimiento de descarga e instalación
  • lxrun / uninstall: para desinstalar la imagen de Ubuntu
  • lxrun / update: Para actualizar el índice de paquetes WSL
  • lxrun / setdefaultuser <username>: Para establecer el Bash predeterminado en el usuario de Ubuntu

Bash en Windows también, por supuesto, le permite ejecutar muchos comandos "tradicionales" Bash. Por ejemplo:

  • grep: Para encontrar líneas que coincidan con un patrón
  • sed: Para sustituir una cadena
  • echo: Para enviar el valor a la pantalla
  • var = 2: Para crear una variable para $var
  • =!=: Para comparar pequeños fragmentos de textos

Comandos de navegación

Para la navegación, también puede utilizar el comando de DOS de Windows para navegar por la estructura de carpetas.

  • cd temp: Cambia el directorio de trabajo a la carpeta denominada temp
  • cd \: le lleva al directorio raíz. Como Ubuntu no tiene letras de unidad como Windows, el directorio raíz sería el directorio de nivel superior.
  • cd ..: toma el indicador de un nivel hacia arriba (es decir, al directorio padre)
  • cd ~: Le lleva al directorio de inicio

Sin embargo, cd en PowerShell es ligeramente diferente en Bash sobre Ubuntu. En el entorno WSL, las unidades de Windows se almacenan en la carpeta /mnt y el nombre de la unidad se utiliza como subcarpeta. Cuando utilice el comando cd, debe cambiar la ruta en consecuencia.

Comandos de visualización

Para comprobar la ruta y el contenido de un directorio, los siguientes son algunos ejemplos:

  • pwd: Imprime la ruta o el directorio en el que se encuentra la pantalla
  • ls: Muestra los archivos en un directorio

Comandos de ayuda

Si desea comprender la funcionalidad y los parámetros asociados a cada comando, se puede utilizar el comando man.

Escriba man <command> y mostrará la sinopsis de para qué sirve el comando y los parámetros asociados. Esto es similar al comando de ayuda de PowerShell.

Edición de comandos

Una de las ventajas de Bash es que se trabaja con texto sin formato. Esto significa que no tiene que meterse con la configuración del registro o del programa. Si desea cambiar la secuencia de arranque o la configuración del servidor web, simplemente modifique el archivo de texto correspondiente. Para realizar tareas de edición de manera eficiente, necesita un buen editor de texto. Bash ofrece editores poderosos para hacer su trabajo fácil. Algunos buenos ejemplos de editores de texto disponibles en Bash son nano y vi.

Gestión de paquetes en Bash

Puesto que esencialmente está ejecutando Linux, ahora también dispone de comandos de administración de paquetes disponibles en forma de apt-get. Algunos ejemplos:

  • sudo apt-get update: Actualiza la lista de repositorios para extraer de
  • sudo apt-get upgrade: Actualiza todo el software a la última versión
  • apt-cache search app_name: busca en el repositorio de una aplicación en particular
  • sudo apt-get install apt-name: descarga e instala la aplicación en particular

Sudo se agrega a todos los comandos para permitirle ejecutar un comando bajo un usuario diferente, el superusuario (o admin) como predeterminado. Es similar a la técnica de "ejecutar como administrador" en Windows.

Comandos de red

Para descargar archivos a través de HTTP desde un servidor o una URL, ahora puede usar el comando curl. Este comando es similar al cmdlet Invoke-WebRequest de PowerShell.

Del mismo modo, puede conectarse a otra computadora Linux remota y ejecutar comandos en ella. Dado que ahora estamos en Linux, finalmente tenemos un verdadero cliente SSH con el que trabajar. En lugar de usar Cygwin o la beta actual de la implementación de OpenSSH para Windows, ahora podemos ejecutar SSH de forma nativa a través del comando ssh:

ssh username @abc.com

Mientras estamos en el tema de OpenSSH, ahora también tenemos la habilidad nativa de copiar archivos de forma segura sobre SCP usando también el comando scp incorporado:

Scp localfile nombre de usuario@abc.com: remotedirectory / remotefile

Con Bash en Windows, ahora tiene muchas otras funciones al alcance de su mano:

  • Herramientas como Git, Python y Ruby directamente en Windows
  • Editores de línea de comandos como emacs y vi
  • Acceso al sistema de archivos de Windows desde el entorno Bash
  • Soporte para usuarios de Linux
  • Soporte de Symlink
  • Montaje de almacenamiento vía /mnt

¿Cuáles son los casos de uso comunes para Bash en Windows?

Actualmente, muchos desarrolladores utilizan herramientas de Windows y Linux, lo que significa que tienen que realizar arranque dual o ejecutar Linux dentro de una máquina virtual para obtener las capacidades de CLI. Cuando se pueden ejecutar estas herramientas en Windows, Windows se convierte en su escritorio principal. En ese caso, no tienen que portar aplicaciones y servicios de Linux a sistemas Windows. Aunque algunas personas han podido ejecutar aplicaciones Linux GUI dentro de Windows, muchas personas buscan una CLI de Linux práctica para realizar tareas sencillas sin comprar una máquina Linux dedicada desde Azure, o trasladarse a un dispositivo Mac con propósitos sencillos. Dado que las secuencias de comandos son fáciles en Bash, puede automatizar tareas de desarrollo como la realización de copias de seguridad de sitios web en Apache.

Por ejemplo, muchos desarrolladores usan GitHub para tareas de control de versiones. Para acceder a GitHub en Windows, tiene que instalar GitHub para Windows, a continuación, utilice los comandos commit y push para confirmar los cambios. Alternativamente, tiene que descargar la utilidad Git, que es un proceso tedioso. Con Bash en Windows, su trabajo se vuelve sencillo:

  • apt-get install git
  • git commit
  • git push

Además, bajo Bash, no necesita herramientas de terceros para trabajar con tipos de archivos Linux tradicionales como tarballs GZIPed (archivos tar.gz).

¿Cuáles son los inconvenientes de usar Bash en Windows?

Bash en Windows todavía está en beta y contiene algunos bordes ásperos. Microsoft dice que Bash en Windows podría no ejecutar perfectamente todas sus secuencias de comandos en este momento. Sin embargo, Microsoft está supervisando atentamente el rendimiento y la retroalimentación, y está realizando cambios proactivamente a esta solución.

En segundo lugar, Bash en Windows se desplegó para la comunidad de desarrollo. No fue diseñado para administrar entornos de Windows. Aunque puede hacer cosas como ejecutar servidores daemons en WSL, no ofrece las capacidades completas de una máquina virtual Linux completa. Si tiene la intención de ejecutar procesos de servidor bajo cargas de trabajo de producción en Ubuntu, debe buscar otras alternativas para ejecutar un sistema operativo Linux completo.

Finalmente, Bash en Windows trae las capacidades de Linux a Windows. Sin embargo, las herramientas de Linux no podrán interactuar con las herramientas y aplicaciones de Windows. Esto significa que no hay capacidades multiplataforma debido a sus diferencias de arquitectura inherentes.

Bash en Windows todavía está en su etapa naciente. Aunque hay algunas restricciones a esta solución, Microsoft está trabajando intensamente en la adición de más capacidades para borrar estas diferencias y hacer de Windows la plataforma Nº1 para cada tipo de proyecto de desarrollo. Vigile este proyecto de Microsoft. Con la nueva posición de Microsoft en el mundo de código abierto, es seguro que hará que Bash sea un ciudadano de primera clase en Windows a medida que avanza el tiempo.