paint-brush
Cómo ChatGPT maneja las secuencias de comandos Bash de Linuxpor@dclinton
17,174 lecturas
17,174 lecturas

Cómo ChatGPT maneja las secuencias de comandos Bash de Linux

por David Clinton6m2023/02/20
Read on Terminal Reader

Demasiado Largo; Para Leer

ChatGPT es una nueva herramienta de OpenAI que se puede usar para programar en pareja con un socio eminentemente útil. Este artículo analiza cómo ChatGPT maneja las secuencias de comandos de Linux Bash. Puede ver una versión en video de este artículo aquí si desea usarlo para complementar su aprendizaje.
featured image - Cómo ChatGPT maneja las secuencias de comandos Bash de Linux
David Clinton HackerNoon profile picture

Hemos estado escuchando mucho sobre inteligencia artificial y procesamiento de lenguaje natural, y en particular sobre la última versión de GPT de OpenAI, durante semanas.


El reciente lanzamiento de GPT 3.5, y específicamente la nueva herramienta ChatGPT, es definitivamente un gran paso adelante.


Es posible que haya leído sobre personas que le piden a la IA que redacte contratos y testamentos de bienes raíces, e incluso que genere código de programación. Este artículo aborda la herramienta desde una perspectiva ligeramente diferente.


Puede ver una versión en video de este artículo aquí si desea usarlo para complementar su aprendizaje:




Experimentando con ChatGPT y Bash Scripting

Decidí ver cómo ChatGPT maneja las secuencias de comandos de Linux Bash. Pero (¡alerta de spoiler!) a medida que trabajaba con las sugerencias de la herramienta, tanto el código bueno como el código malo, comencé a darme cuenta de que había un beneficio aún más poderoso frente a mí: la oportunidad de programar en pareja con un socio eminentemente útil. .


La IA finalmente no pudo resolver mi problema, pero la forma en que falló fue absolutamente fascinante. Y ver a la IA buscando nuevas respuestas fue una locura.

Primer intento: ChatGPT intenta resolver el problema

Así que vamos a ver cómo sucedió todo. Aquí, más o menos, está el aviso inicial que proporcioné a la IA:

Escríbame un script Bash que solicite la URL de un video de YouTube y luego use el programa yt-dlp para descargar desde esa URL. La secuencia de comandos debería cambiar el nombre del archivo a "myvideo.mp4"

Después de unos segundos, ChatGPT me dijo que venía un script. Así es como se veía ese código:

 #!/bin/bash # Prompt user for YouTube video URL read -p "Enter YouTube video URL: " url # Download video from YouTube using yt-dlp yt-dlp $url # Get the name of the downloaded video file yt-dlp $url # Change the downloaded video filename to "myvideo.mkv" mv video-filename.mp4 myvideo.mp4

La IA obviamente sabe qué son los scripts de Bash y cómo presentar el código. Incluso hizo un gran trabajo comentando cada línea de código. La IA sabe cómo solicitar correctamente al usuario que ingrese y luego cómo importar la cadena de entrada en una variable llamada url .


También conoce el programa yt-dlp y cómo funciona, alimentándolo adecuadamente con la URL que se le proporcionó. Luego, al menos intentó cambiar el nombre del archivo de video descargado a myvideo.mp4. Pero todo se vino abajo cuando asumió que el nombre del archivo de descarga sería video-filename.mp4. ¡Vaya!


En cualquier caso, la IA me mostró amablemente cómo crear el script a partir de su código y luego ejecutarlo.

Segundo intento: ChatGPT se corrige solo

Mi primer aviso de seguimiento señaló el error obvio y, después de unos segundos, ChatGPT admitió que estaba mal y ofreció una mejora.

Tiene razón, el script que proporcioné no funcionaría como se esperaba porque asume que el video descargado se guardará en un archivo con el nombre video-filename.mp4 . Sin embargo, no se garantiza que esto sea así. Para arreglar esto...

Es alucinante cómo la IA está completamente involucrada en el proceso aquí. Recuerda su primer código, escucha y entiende mi queja y piensa en una solución. Aquí está ese segundo intento:

 #!/bin/bash # Prompt user for YouTube video URL read -p "Enter YouTube video URL: " url # Download video from YouTube using yt-dlp yt-dlp $url # Get the name of the downloaded video file filename=$(basename $url) # Change the downloaded video filename to "myvideo.mkv" mv $filename.mp4 myvideo.mp4

Ok, entonces puedo ver cómo la solución parecía correcta. basename es una herramienta de Linux que puede eliminar los directorios del sistema de archivos y dejar nada más que el nombre del archivo real.


El problema es que la variable url no contiene un nombre de archivo local, sino una dirección de Internet. Este definitivamente no va a funcionar.

Tercer intento: ChatGPT vuelve a intentarlo

Así que lo intenté de nuevo, explicando cómo esa no era la herramienta adecuada para el trabajo. Y ChatGPT le da otra oportunidad.

 #!/bin/bash # Prompt user for YouTube video URL read -p "Enter YouTube video URL: " url # Extract the filename from the URL filename=$(basename $url) # Download the video using the yt-dlp tool and specify the filename yt-dlp -o $filename $url # Change the downloaded video filename to "myvideo.mkv" mv $filename.mp4 myvideo.mp4

Esta vez, muestra que se había familiarizado con la documentación de yt-dlp, lo que sugiere que usemos el argumento -o para darle un nombre al video que se está descargando, contra el cual ahora debería funcionar basename . Con cada iteración, la IA me da este código actualizado para mi placer de cortar y pegar.


Por supuesto, eso tampoco iba a funcionar. Con el siguiente intento, tengo la sensación de que la IA está un poco desesperada.

Si al principio no tienes éxito... al menos aprenderás algo

Voy a pasar por alto el próximo intento o dos, ya que nos encontramos con un problema secundario: los videos que provienen de YouTube no siempre son MP4, a veces son MKV o incluso WEBM. Esa incertidumbre podría alterar los nombres de archivo con los que estamos trabajando, así que le pedí a ChatGPT que incorporara eso en el código.

 #!/bin/bash # Prompt user for YouTube video URL read -p "Enter YouTube video URL: " url # Extract the filename from the URL filename=$(basename $url) # Download the video using the yt-dlp tool and specify the filename yt-dlp -F mp4 -O $filename $url # Change the downloaded video filename to "myvideo.mkv" mv $filename.mp4 myvideo.mp4

Cuando informé que eso tampoco funcionaría, la IA comenzó a confundirse. Primero me dijo que la opción -F esperaba un formato de video válido, pero que "mp4" no era válido. Luego me da opciones válidas, incluido "mp4".


Cuando nada de lo que la IA sugirió funcionó, se rindió y me aconsejó que me asegurara de que yt-dlp estuviera realmente instalado en mi máquina y me mostró cómo hacerlo.


Pensé que era un buen momento para rendirme. Fue un esfuerzo sorprendentemente bueno y, aunque no resolvió el problema, me mostró una sintaxis útil y me hizo pensar.


En caso de que esté interesado, por cierto, así es como se vería un script de trabajo real.

 #!/bin/bash # Prompt user for YouTube video URL read -p "Enter YouTube video URL: " url # Download video from YouTube using yt-dlp yt-dlp $url # Get the name of the downloaded video file original_filename=$(ls | awk '/mp4/ || /webm/ || /mkv/') # Change the downloaded video filename to "myvideo.mkv" mv "$original_filename" /home/ubuntu/vids/myvideo.mp4

Las dos primeras líneas de código son exactamente como sugirió ChatGPT. Pero luego aíslo el nombre del archivo enumerando todos los archivos en el directorio actual y usando awk para filtrar solo los nombres de archivo que contienen mp4, webm o mkv. (Esto supone que nunca habrá más de un archivo de video en el directorio a la vez).


El nombre del archivo se escribirá en la variable original_filename . Luego usaré esa variable como parte de un comando move para cambiar el nombre del archivo myvideo.mp4 Por lo que puedo decir, eso funcionará sin importar el formato que se envió realmente.

Terminando

Es posible que la inteligencia artificial no esté del todo lista para las tareas de programación del mundo real hoy, pero no me gustaría apostar en contra de que llegue mañana... o en algún momento del próximo año.


Sin embargo, mientras tanto, recomendaría absolutamente utilizar herramientas como ChatGPT cada vez que se enfrente a una tarea de programación desafiante.


Dos mentes son (casi) siempre mejores que una.


Imagen destacada generada a través del indicadorde IA de HackerNoon de "Un robot de IA organizando una fiesta".


Además de mi canal de YouTube (al que puede suscribirse), mi sitio web contiene enlaces a todo tipo de bondades tecnológicas disponibles como artículos, libros y cursos.


También publicado aquí .