Powershell en Linux

      No Comments on Powershell en Linux

Asi como leyeron: Powershell en Linux. Hace un tiempo que Microsoft esta incursionando en el mundo Open Source. Hace poco agrego una consola Bash a Windows 10, puso en disponibilidad una version libre de SQL, Azure tiene compatibilidad con Linux, etc, etc.

En este caso, puso Powershell en GitHub: https://github.com/PowerShell/PowerShell/tree/master/docs/learning-powershell junto con buena documentacion y recursos en linea para aquellos que sean nuevos y les interese ir conociendolo.

Las versiones disponibles supuestamente son para Ubuntu y CentOS, pero me tiré el lance de instalarlo en mi Red Hat 7.2 y funciona de mil maravillas. En este pequeño articulo vamos a ver solamente la instalacion del paquete y la ejecucion de algunos CMDLETs basicos. Mas adelante vamos a probar como se comporta y cuanta interaccion podemos tener entre distintos Sistemas Operativos.

Instalacion: En mi Red Hat 7.2, por una cuestion de compatibilidad, elegi instalar directamente el paquete RPM para CentOS.

sudo yum install https://github.com/PowerShell/PowerShell/releases/download/v6.0.0-alpha.9/powershell-6.0.0_alpha.9-1.el7.centos.x86_64.rpm

instalacion

Luego corremos Powershell, solamente corriendo “powershell” (sin comillas)

Por esta vez, veamos algunas cosas basicas y particularidades de Powershell en Linux:

basicos

Interesante ver que decidieron que la version Linux sea 6.0

Luego vemos con cuantos comandos contamos en esta primer version Linuxera: 345. Las basicas estan todas.

Una cosa importante de recordar: Revisen la lista de Aliases. Muchos Alias a los que estamos acostumbrados a usar en Powershell justamente referencian a comandos nativos de Linux. Esto se diseño asi en un principio para hacer mas facil la transicion de gente con background de Unix / Linux a Powershell; asi que ahora si por ejemplo usamos “ls” para llamar a Get-ChildItem vamos a estar usando “ls” de Linux en realidad!. De ultima el resultado va a ser el mismo o al menos muy parecido 😉

basicos1

En estos ejemplos basicos estoy obteniendo informacion del proceso de Nautilus (File Explorer en el mundo Windows). Use la version larga del comando para probar de paso Where-Object y hacer un match simple para el nombre. Funciona todo perfecto.

Get-Process | where {$_.name -match “nautilus”}

En el siguiente ejemplo, uso Get-ChildItem para obtener una lista de archivos del path donde estoy. Lo interesante aqui es ver como Bash le va agregando algunas cosas interesantes a la experiencia del Terminal. Por ejemplo, cuando escribi solamente “re” para el parametro Recurse y le di a la tecla “Tab” para que me autocomplete el nombre, Bash se encargo de mostrarme las opciones que tengo que comienzan con “re”. Es solo un detalle, pero que suma un poquito.

En el otro ejemplo, hice una busqueda un poquito mas compleja de los 8 archivos mas grandes de mi usuario, ordenados por tamaño. Todo tal cual hacemos en Windows.

Get-ChildItem -Recurse | Where-Object {$_.length -gt 10000000} | Sort-Object Length -Descending | Select-Object fullname, Length -First 8 | Format-Table -AutoSize

Veamos algunos ejercicios mas:

basicos2

Lo interesante aqui es ver como uso cd y ls para navegar y listar los contenidos de los directorios y luego usando Get-Content, leo el contenido de un archivo de texto. Ademas, le indico mediante notacion de Array que me devuelva solamente de la linea 4 a la 10.

(Get-Content ./exhaust_java.txt)[4..10]

Por ultimo, obtengamos el proceso de Nautilus que tenemos corriendo y cerremoslo.

basicos3

Como ven, cerramos el proceso Nautilus usando su Process ID.

Get-Process -Name nautilus*
Stop-Process -Id 11266
get-process -name nau*

Powershell en Linux esta en su primer etapa. Hasta ahora, lo poco que pude probar es genial. Mas adelante se abriran nuevos caminos y utilidades.

La cuestion politica y de negocios la dejo para otro momento. Lo que me interesa a mi es de que forma me ayudan estas herramientas a realizar mi trabajo de forma mas eficiente. En este caso, una tecnologia que yo creo muy util, se esta conviritendo de a poco en multiplataforma, lo que me parece muy bueno, ya que muchas veces trabajamos en ambientes heterogeneos y debemos saber integrarnos.

Mas adelanta les prometo articulos sobre interaccion entre plataformas.

Saludos, Mauro.

Leave a Reply

Be the First to Comment!

Notify of
avatar
wpDiscuz