Powershell vs Bash
Si trabajas con Shells, lo más seguro es que uses uno de los dos que vamos a ver hoy, Powershell o Bash.
Si ya tienes una cierta edad, como yo, habrás estado muchos años trabajando con Bash en Linux y con Powershell en Windows. Afortunadamente, esto ha evolucionado, y ahora somos capaces de usar cualquiera de los dos en los diferentes sistemas operativos que existen como Windows, Linux o MacOSX.
Hace unos años, Bash era el rey del scripting, y realmente Powershell no podía competir con él. Pero su evolución, con Powershell Core, consiguiendo integrar el Kernel linux en Windows, ha posibilitado que Powershell le haya comido terreno.
La diferencia fundamental entre uno y otro, es que Bash nos va a devolver texto o cadena, y en cambio Powershell nos genera objetos. Eso a nivel funcional, implica que Powershell a la hora de manipular ese objeto necesite menos manipulación que Bash, que necesita manipular primero el texto. Esto tiene que ver con los famosos datos estructurados, que es donde Powershell destaca sobre Bash.
Dicho de otra forma:
Powershell canaliza objetos, canalizando la salida de un cmdlet como entrada para otro. Pudiendo manipular, en secuencia, varios objetos cmdlets. Esto permite a Powershell manipular datos y estructuras de datos complejas. En cambio, Bash pasa la salida y la entrada como texto sin ningún formato, haciendo que sea fácil mover información de un programa a otro.
No me interpretéis mal, ambas herramientas son muy poderosas, todo depende de quien las manipule, como todo…
Instalar Powershell en Centos 7
Cargamos el repositorio:
curl https://packages.microsoft.com/config/rhel/7/prod.repo | tee /etc/yum.repos.d/microsoft.repo
Lo instalamos:
yum install -y powershell
Y lanzamos con el comando pwsh:
Ejemplos comandos Bash vs Powershell
Una de las ventajas de Powershell sobre Bash, es que podemos reutilizar comandos antiguos de CMD o algunos que ya existen en Bash.
Por ejemplo:
BASH
echo "Esto es una prueba"
POWERSHELL
Lo podríamos sacar indistintamente con:
echo "Esto es una prueba"
Write-Output "Esto es una prueba"
Si queremos listar archivos o carpetas de un directorio, por ejemplo en Bash usaremos:
ls -l
Lo que nos devuelve todos los archivos y sus metadatos.
Para Powershell usaríamos:
Get-ChildItem
Si queremos afinar la búsqueda con el primer resultado:
Get-ChildItem | Select-Object * -First 1
Si queremos tratar un fichero con nombres y generar directorios a través de él, por ejemplo. En Bash sería algo así:
Disponemos de un fichero llamado “directorios” con dos líneas con nombres:
Prueba1
Prueba2
Generáis un fichero SH con el siguiente contenido:
Y le dais permisos de ejecución:
chmod +x pruebabash.sh
Ejecutáis:
sh pruebabash.sh
Comprobáis:
Y con Powershell lo haríamos con PS1, por ejemplo:
sh pruebapowershell.ps1
Con el siguiente contenido:
ForEach ($d in Get-Content directorios)
{
mkdir $d
}
Y lanzamos-comprobamos:
Os dejo esta tabla que compara otros comandos:
CONCLUSION
Si estáis aprendiendo informática, y os aventuráis por un lenguaje de shell, no os cerréis a ninguno de ellos. Todos tienen sus ventajas e inconvenientes. Vuestro futuro laboral os lo agradecerá.
Espero os parezca interesante…ya que es gratis, comparte ;P
¿Te ha gustado la entrada SÍGUENOS EN TWITTER?
Te ha gustado la entrada SGUENOS EN TWITTER O INVITANOS A UN CAFE?