304 - Sobre scripts en Bash. Una de preguntas y respuestas
Un nuevo capítulo del podcast sobre preguntas y respuestas en el que te hablo de scripts en bash, Ubuntu Touch, Clonezilla y organización
Una de mis pasiones y aficiones, como ya sabes es la programación. Puedo pasar horas, incluso te diría que días completos programando. En ocasiones, es necesario que me saquen de mi rico mundo interior, para volver al mundo de los vivos. Pero es que es así, disfruto programando. Pero, si además es posible combinar, el hardware con el software en la misma operación, creo que el disfrute es máximo. En este sentido, desarrollar scripts en bash, que interaccionan con el hardware, es algo que me motiva muchísimo. Por ejemplo, el simple hecho de conseguir que se ilumine un LED o medir la temperatura ambiente, me provocan un subidón de adrenalina. Si así de básico soy.
En este sentido, cada vez que alguien plantea un reto, para resolver un sencillo o complejo script, me desvivo en hacerlo, casi que no puedo evitarlo, es como un instinto básico, ¿que le vamos a hacer?.
Así, en este episodio del podcast, te quiero hablar sobre, scripts en Bash, así como otras cuestiones que se han planteado, y que han dado pie a un nuevo episodio de preguntas y respuestas.
Sobre scripts en Bash. Una de preguntas y respuestas
Sobre EsLibre
Claudio pregunta,
Hola Lorenzo como va todo?, donde se pueden escuchar las charlas de «Es libre»? Me interesa mucho y no pude asistir. Gracias. Saludos
Indicar que en el momento de preparar este podcast todavía no estaba publicado. Sin embargo, en cuanto lo esté lo indicaré tanto en el podcast como en atareao.es.
De cualquier forma, lo publicarán en esLibre así que te recomiendo que estés atento tanto a esLibre como a este podcast, en el que te mantendré puntualmente informado.
Sobre clonaciones
Francisco pregunta,
Tengo que hacer una clonación de mi disco, ( cual me recomienda ) cuando lo tenga todo instalado, porque haces 3 días se me paro y no podía arrancarlo ni en windows ni en Ubuntu y cuando instale Windows se me instalo en el disco Hdd y no en el ssd a sin que llevo 3 días con sus noches intentado arreglarlo ya he conseguido instalar windows el el SSD, y ahora tengo que instalar Ubuntu en el SSD, y despues quiero hacer una copia de disco en uno externo
Desde hace mucho tiempo que esto de las clonaciones lo realizo con Clonezilla. Sin lugar a dudas, esta es la solución mas cómoda, práctica y segura que conozco.
Sobre csv en un script
ICE pregunta,
Tengo un problema, necesito de una lista .txt ir viendo si cada elemento aparece comun en la primera columna de otra lista 1.csv (que tiene 2columnas) y si es así entonces necesito generar un 2.csv que contenga las dos columnas (es decir la lista 1.csv tiene mas filas que el archivo .txt y necesito seleccionar las filas (con sus dos columas) de acuerdo a que coincida con el txt)…dicho de otra manera, si en txt está A y en 1.csv está A necesito un 2.csv con A pero que también arrastre el dato de la columna 2…sé que se tiene que poder hacer pero no sé como :/, muchas gracias
Lo cierto es que había enrevesado considerablemente la solución original que había planteado, utilizando funciones y mas cuestiones complicadas. Sin embargo, como puedes ver en doce líneas de código está resuelto y sin necesidad de utilizar herramientas externas. Simple, sencillo y eficaz, como tienen que ser las soluciones.
#!/bin/bash
cat lista.txt | while read clave
do
cat 1.csv | while read linea
do
col1=${linea%%,*}
col2=${linea##*,}
if [ "${clave}" = "${col1}" ]
then
echo "${linea}" >> 2.csv
fi
done
done
De cualquier forma, me queda pendiente revisar utilidades para la línea de comandos que me permita trabajar de forma sencilla y práctica con archivos CSV, porque es algo que suelo hacer y siempre viene bien tenerlo a mano.
Sobre la gestión de la información
Jaime pregunta,
Entiendo que uno de los grandes problemas que tenemos tod@s es la gestión de información ( notas, recordatorios, chuletas de comandos o procedimientos, etc. ). Siempre das ideas para una cosa u otra, pero he pensado en montar un docker con docuwiki y que el directorio donde se almacenan los datos, que según leído es una estructura que se puede copiar y punto, realizar la copia de seguridad del mismo. Te digo esto por que como nos pasa a muchos por requerimiento de cliente y por desgracia para mi tengo que trabajar con windows y es un pestiño en ir cambiando para trasladar la información, luego para buscar etc.
Pregunta, qué utilizas tú ?
Mi solución es bien sencilla, archivos markdown organizados de forma jerárquica en directorios. Básicamente en artículos, tutoriales, podcast y vídeo. Esto por supuesto en lo referente a atareao.es, en lo referente al trabajo, utilizo otra organización jerárquica también.
Para realizar búsquedas, es sencillo,
grep -Ri palabra_clave *
Sobre Ubuntu Touch
Ricardo pregunta,
Hola.He buscado entre tus artículos y no he encontrado nada reciente sobre ubuntu touch. La verdad que estoy deseando que salga un S.O. para el móvil que tenga una filosofía más libre que Android. Me encantaría oír un poscat al respecto. Si ya tienes algo y no lo he encontrado
Ahora mismo no te sabría decir de algún móvil con un funcionamiento lo suficientemente estable con otro sistema operativo que no sea Android. La verdad, que tal y como comento en el podcast, creo que actualmente la plataforma no está suficientemente madura para el uso por parte de usuarios de a pie.
Sobre shebang
softdatos pregunta,
Buenas tardes Lorenzo, muy buenos tutoriales. Una consulta respecto a la primera línea del código en tus anteriores videos de scripts en bash era #!/usr/bin/env bash pero en este y posteriores videos cambio a #!/bin/bash ¿Es lo mismo o hay alguna diferencia de uso?
En el caso de #!/bin/bash
estás ejecutando directamente el binario que se encuentra en /bin
, sin embargo, en el otro caso, lo que ejecutarás será el primero de los binarios que se encuentre en el path. Esto es de gran utilidad sobre todo si estás desarrollando para diferentes versiones.
Espero que te haya gustado este nuevo episodio del podcast. Si puedes, te agradecería una valoración en iVoox y/o en Apple Podcast.
Creo que en el script, la línea
echo «${linea}» >> 2.csv
debería ser
echo «${col1}, ${col2}» >> 2.csv
Yo entendí que solo tenía dos columnas, por esta he añadido toda la línea. En el caso de que haya mas de dos columnas, desde luego tu solución es la correcta.
Hola, Lorenzo. Sin contar con los sectores defectuosos, para el caso de clonar un disco HDD de 750 GB en otro SSD de 1 TB, tal vez funcionaría partclone. Pos su sencillez, resuelve situaciones que son problemáticas con otros sistemas de clonación. Magnífico tu contenido. Un abrazo virtual.
Muchas gracias Fabricio por tu propuesta. La solución ha venido de la mano de ddrescue, que se ha portado como un auténtico campeón, y en algo mas de dos horas clonado completo del disco, y en funcionamiento, lo contaré en un futuro podcast, sin dudas.
Muchas gracias y un abrazo virtual, como tu dices
ddrescue muy buena herramienta en los disco con falla se aplica clonacion en reversa para evitar algunos errores
Si alguien me podria ayudar porfavor
Escribir un shell que:
– Muestre las 5 primeras líneas de un fichero (primer parámetro posicional)
– Muestre las 5 últimas líneas de un fichero (nombre introducido por teclado)
– Busque texto (segundo parámetro posicional) en el fichero anterior
(comprobar parámetro y fichero)