PowerShell vs Bash

se encuentra en soapbox

Hoy, me encontré con un tweet y, al más puro estilo elder millennial, me activaron. El tweet fue este (nombre y mango ofuscado):

Cita en Twitter sobre la" superioridad " de bash

La razón por la que me está activando no es solo porque funciona en PowerShell (he hecho una carrera saludable en él, Praise Snover), sino que también está comparando manzanas y naranjas. Si fuera carpintero, sería como decir «Mira, un martillo es genial y todo, pero sería mejor si fuera un destornillador». A menudo se les dice a los administradores que «elijan un lado de la valla», lo que solo dificulta su capacidad. El hecho es que PowerShell y bash son dos herramientas diferentes con propósitos diferentes (aunque similares). En este artículo voy a darte un hecho, una observación y una opinión sobre la diferencia entre PowerShell y Bash.

Hecho: Diferencias técnicas entre PowerShell y Bash

Para aquellos que no están familiarizados con el tema, bash es el shell de comandos y el lenguaje de scripting para la mayoría de los sistemas Linux, mientras que PowerShell es el shell de comandos y el lenguaje de scripting para la mayoría de los sistemas Windows. Mucha gente reduce este argumento a un simple «Linux vs. Windows», pero hoy vamos a hablar de los lenguajes de scripting en sí.

Sé que me podrían criticar mucho por lo que estoy a punto de decir, pero la verdad es que solo hay una diferencia importante entre bash y PowerShell. Bash trata las salidas como cadenas, mientras que PowerShell trata las salidas como objetos. Filosóficamente, bash dice que debido a que usted, como administrador, es todopoderoso, es responsable de la calidad de lo que ingresa a bash, y eso afectará directamente la calidad de la salida de bash. PowerShell, por otro lado, determina un poco de la salida. Al estructurar la salida como objetos, puede almacenar y manipular los objetos con diferentes métodos y propiedades.

Una forma de pensar en esto es que con bash, tus comandos y salidas representan una parte de un todo. Junte suficientes piezas y podrá construir algo impresionante. Esto es similar a usar una pieza de su guión para construir un motor, la otra algunos ejes y una tercera sus ruedas. Al final del día, tendrá un automóvil cuando se combine. PowerShell, por otro lado, responde a su comando con todo el automóvil y debe trabajar hacia atrás para obtener un componente individual.

Sé que hay mucho más en las diferencias, pero en pocas palabras eso debería ponerte al día.

Observación: Trayectorias profesionales

Hay un par de cosas que he notado a lo largo de los años en la industria. En primer lugar, hay lo que cariñosamente llamo «ingenieros de clic izquierdo». Estas son las personas que no conocen ningún lenguaje de scripting, y mucho menos los dos grandes de PowerShell y bash. La mayoría de las veces, estos son del tipo que pasan por alto para las promociones, se pasan por alto cuando se trata de una compensación basada en el rendimiento, y probablemente se automatizarán o se dejarán ir en los próximos años.

A continuación, hay personas a las que se les dijo que se mantuvieran a un lado de la valla. De hecho, me siento muy triste por estas personas, porque lo sepa o no su jefe, están matando las perspectivas de carrera de sus empleados. No puedo pensar en una sola tienda para la que haya consultado, trabajado o tomado una copa que fuera una tienda homogénea de Linux o Windows. Simplemente hay demasiadas cosas que requieren múltiples sistemas operativos y, por lo tanto, múltiples lenguajes de scripting. Afortunadamente, PowerShell ahora está disponible en Linux, y hay un subsistema de Linux para Windows, pero no es una traducción directa en ninguna dirección. Incluso se podría argumentar que la orquestación está reemplazando una necesidad directa de ambos idiomas, pero tampoco he conocido una tienda que sea un entorno 100% orquestado. El hecho es que los lenguajes de scripting van a estar alrededor y van a ser necesarios por un minuto caliente.

Por último, hay personas que pueden trabajar en cualquier tipo de entorno mediante PowerShell o bash. Estos son los tipos de personas que los empleadores consideran deseables porque se les puede asignar cualquier tarea y no acosarán a los otros miembros del equipo por ser administradores de Linux o Windows. Esto es similar a todo el debate de PC vs. Mac hace 15 años, donde la gente de Windows pensaba que eran mejores por razones a, b y c, mientras que al mismo tiempo los usuarios de Mac pensaban que eran superiores por razones x, y o z. Dato curioso: Codifico PowerShell en mi MacBook Pro y me encanta. He escrito scripts bash en mi máquina Windows para conectarlos a Jenkins sin quejas.

Opinión: Sé bilingüe

No tiene sentido conocer solo un «idioma» (es decir, si consideras que cualquiera de estas utilidades es un idioma completo). De hecho, hay suficientes equivalentes funcionales entre PowerShell y bash que Windows incluso está enviando con algunos comandos bash. En el pasado, tenías que hackear tu PATH para obtener ls para ser tratado como dir en una línea de comandos de Windows. Ahora, puede ir a PowerShell, escribir ls y obtener la respuesta que espera. Hoy en día, tiene tantos scripts y utilidades multiplataforma que la diferencia se está reduciendo, pero las bases de código aún están polarizadas. Algunas tiendas solo usarán bash para crear sus scripts, mientras que otras solo usarán PowerShell. Hace poco entré en una tienda sin un solo script de PowerShell, todo estaba escrito en bash o incluso en perl. Tomó algún tiempo, pero ahora tenemos una división bastante uniforme entre nuestros scripts en una división casi 50/50 de Windows y Linux. Para entrar en un entorno y estar seguro de que tiene la capacidad de hacer frente a las tareas que tiene a mano, conozca ambas cosas.

espero que hayas aprendido algo útil.

pasos hacia abajo desde soapbox

¿No te cansas de mí? Asegúrate de seguirme en Twitter @_brycemcdonald.

¿Sabías que estoy disponible para alquiler? Póngase en contacto conmigo para obtener más información a través de Twitter, correo electrónico o en el sitio web de NorthCode Solutions.

Deja una respuesta

Tu dirección de correo electrónico no será publicada.