Buscar y reemplazar un texto desde la terminal

Buscar y reemplazar un texto desde la terminal

Uno podría suponer que una tarea de buscar una cadena de texto y reemplazarla desde un programa editor sería una tarea trivial, pero hay veces que no.

El otro día tuve la necesidad de reemplazar una cadena por otra en un archivo de texto simple y llano, nada fuera de lo ordinario, para esto estaba utilizando el editor Atom y según la búsqueda de la cadena tenía un total de un poco más de mil coincidencias, pulsé el botón Replace All  y nada pasó !!!

Read more

Copiar un ISO a una memoria USB con isousb

isousb para copiar iso a una memoria usb

Para instalar Manjaro Linux es necesario copiar el archivo ISO a un CD o generar una memoria USB de arranque copiando el ISO al dispositivo.

Haciendo los preparativos para el último FLISOL me encontré con Isousb , una herramienta minimalista que se mete en muy pocos problemas al copiar un archivo ISO a un dispositivo USB.

Instalación

Isousb ya forma parte de los paquetes oficiales de Manjaro, supongo que también se podrá conseguir para otras distribuciones, para instalarlo solo es necesario.

sudo pacman -S isousb
Y eso es todo.

Tan fácil como la tabla del 1

Utilizar Isousb es una tarea de preescolar, al iniciar el programa lo primero que hace es preguntar la localización del archivo ISO y enseguida la elección del dispositivo USB que quieres como destino, más simple ¡Imposible!.

Seleccionar el dispositivo usb de destino
Seleccionar el dispositivo usb de destino.

Si quisiera ponerle un pero al programa es que me gustaría que advirtiera que el contenido de la memoria será destruido y una comprobación del tamaño del ISO vs la capacidad de la memoria. De esto último hay una advertencia en la pantalla, pero la comprobación se la deja al usuario.

Con la terminal

Claro que sigue siendo válido el método con la terminal usando el comando dd

dd bs=4M if=/ruta/a/manjaro.iso of=/dev/sd[letra de la unidad]
Los dos métodos son útiles al momento de generar una usb de arranque, solo que siento que por la facilidad de uso y su interfaz gráfica isousb será mi favorito al realizar esta tarea.

Mañana es el FLISOL 2015

flisol 2015 banner

No hay fecha que no llegue ni plazo que no se cumpla y mañana es el FLISOL !!!

Póster del FLISOL 2015

Con el objetivo de promover y difundir el uso de Software Libre, el próximo sábado 25 de Abril de 2015 se llevará a cabo el Festival Latinoamericano de Instalación de Software Libre en Plaza Cuatro Caminos, atrio principal, en Torreón, Coahuila, México.

El Festival Latinoamericano de Instalación de Software Libre (FLISOL) es el evento internacional más importante y el más grande a nivel mundial de instalación de Software Libre; el cual es realizado gratuitamente, a los asistentes que participen llevando su equipo de cómputo, se les instala software libre en los mismos. El evento FLISOL lo ha venido realizando GULAG desde el año de 2006 ininterrumpidamente con el apoyo de diversos patrocinadores. El festival ha tomado tanta relevancia a nivel internacional que en ciudades de países NO latinoamericanos como Portugal, Estados Unidos y Canadá se han unido a su realización.

Distribuciones ofrecidas:

  • Debian
  • Guadalinex
  • Manjaro
  • Mint
  • Trisquel
  • Ubuntu

Fecha Lugar y hora

Fecha: Sábado 25 de Abril de 2015. Lugar: Plaza Cuatro Caminos, Atrio principal. Blvd. Independencia #1300 Ote, Col. Navarro Torreón, Coahuila, México. Horario: De las 11 hasta las 18 horas.

Actividades

  • Charlas
  • Festival de instalación
  • Taller de uso de GitHub
  • Contacto con la comunidad de Software Libre local.

ATENCIÓN: Se recomienda que antes de asistir al evento haga un RESPALDO DE LA INFORMACIÓN IMPORTANTE y defragmentar el disco duro.

Programa

  • 11:00 Bienvenida
  • 11:00 AM Documentación Libre para el Software Libre por Osvaldo Salazar (Chico)
  • 12:00 PM Datos Abiertos y el Software Libre en el Gobierno por Guillermo Valdés (guivaloz)
  • 01:00 PM 10 Soluciones de Software Gratuito para Negocios Emprendedores por Antonio Gurza (ZK)
  • 02:00 PM a 6:00 PM Installfest: Instalación de software libre en las computadoras que lleven los asistentes.

Evento dirigido a todo tipo de público: estudiantes, académicos, empresarios, trabajadores, funcionarios públicos, entusiastas y aun personas que no poseen mucho conocimiento informático.

Revisar una unidad USB con FAT32 en Linux

Resultado de ejecutar el comando dosfsck.

Resulta que se me ofreció revisar una unidad USB con FAT32 en Linux. No quería reiniciar mi computadora para darle un chkdsk a la unidad USB, tampoco quise abrir virtualbox para revisar el pendrive desde ahí. Mi intención es revisarla directamente desde linux, sabía que había una forma de hacerlo y después de googlear un poco di con esta solución.

blkid

Lo primero es revisar en que carpeta dev esta montado el dispositivo usb, así que recurro al viejo y buen conocido comando blkid para obtener este dato. No voy a ahondar mucho en este comando porque su resultado es muy simple de leer y en mi caso supe que la unidad estaba en la carpeta /dev/sde1

dosfsck

Hay varias formas de revisar una unidad con fat32 (el más usado en dispositivos usb), pero en este caso usé el comando dosfsck que viene en el paquete dosfstool . Su tienen instalado Gparted es muy probable que ya lo tengan instalado, de lo contrario:

sudo pacman -S dosfstool
Para instalarlo en Manjaro (o en Arch).

Luego ejecuté el siguiente comando para revisar la memoria:

sudo dosfsck -w -r -l -a -v -t /dev/sde1
Resultado de ejecutar el comando dosfsck.
Resultado de ejecutar el comando dosfsck.

Donde:

  • w Escribe los cambios inmediatamente
  • r Repara los problemas que vaya encontrando interactivamente con el usuario.
  • l Lista las rutas y los nombres de los arcivos que están siendo analizados. Esta opción es para tener una idea del avance en la terminal.
  • a Repara automáticamente los errores que encuentre y que no requieren de una intervención del usuario.
  • v Activa el modo verbose, para saber que es lo que esta haciendo el comando.
  • t Marca los sectores que encuentre dañados.

Tal parece que no extraje la unidad de manera segura y por eso encontró algunos problemas que corrigió fácilmente.

Checking we can access the last sector of the filesystem 0x41: Dirty bit is set. Fs was not properly unmounted and some data may be corrupt.

Espero que este artículo les sea de utilidad 🙂

Imprimir archivos en orden con lpr y Ruby

ordenamiento alfanúmerico vs natural o númerico

El otro día me llegó un problema interesante, tenía una colección de archivos en formato PDF que se tenían que imprimir en orden.

Bueno, al principio no sabía que tenía que ser en orden y para imprimir todos los archivos de una capeta sólo use el comando:

lpr *.pdf
Y cumplía con el objetivo de imprimir todos los archivos PDF de la carpeta, pero luego resultó que el orden de impresión era importante (para buscarlos posteriormente) y es donde el problema se complicó un poco, porque hacerlo a mano simplemente no era una opción ¡Son demasiados!.

Orden alfábetico o númerico.

El problema es que una cosa es el orden alfabético y otro muy distinto el orden numérico.

Por ejemplo, tengo esta colección de archivos:

  • 1.pdf
  • 521.pdf
  • 002.pdf
  • 11.pdf
  • 0850.pdf

El resultado de un ordenamiento estándar sería el siguiente:

archivos = ["1.pdf","521.pdf","002.pdf","11.pdf","0850.pdf"]
puts archivos.sort

  • 002.pdf
  • 0850.pdf
  • 1.pdf
  • 11.pdf
  • 521.pdf
orden alfanumerico en ruby
Fig.1 Ejemplo de un ordenamiento estándar en Ruby.

Como pueden ver, están bien ordenados, pero de manera alfanúmerica. Es una cuestión de interpretación de los datos y generalmente el nombre de un archivo se considera un dato alfanúmerico.

Y el caso se complica aún más porque la longitud del nombre del archivo no es la misma.

Aunque es correcto no es el efecto que deseo.

La solución: Naturally

Buscando en Google dí con Naturally una gema de Ruby que se encarga de interpretar de una forma más humana este tipo de ordenamientos númericos.

Para usar Naturally primero hay que instalarlo.

gem install naturally
Y este es un ejemplo de su uso:

El resultado del ordenamiento es:

  • 1.pdf
  • 002.pdf
  • 11.pdf
  • 521.pdf
  • 0850.pdf
Resultado del ordenamiento usando Naturally.
Fig. 2. Resultado del ordenamiento usando Naturally.

Y ahora si, el orden es el que precisamente estoy buscando ¡Yeeeeeei!

A imprimir.

A estas alturas ya estaba muy cerca de la solución, ahora solo tenía que desarrollar un programa en Ruby que leyera todos los archivos PDF de una carpeta, los ordenara de forma natural y mandar imprimir cada archivo.

Al ejecutar el script empieza la impresión de los archivos PDF en la impresora predeterminada uno por uno, pero ahora en el orden que quiero.

Espero que este artículo les sea de utilidad. Todavía intuyo que es posible hacerlo en bash, pero como ya lo resolví este problema utilizando Ruby y funciona tan bien que voy a dar por cerrado el tema.

Ahora con Bash

Gracias a este comentario en google plus de Rodolfo Zola que me aclaró como resolver el mismo problema usando bash y el comando sort.

Y funciona perfectamente, sólo lo modifiqué un poco para que solamente imprimiera archivos pdf.

Actualización.

Al final me decanté por usar el script en bash, le agregué una pausa de 8 segundos (sleep 8) para no saturar la cola de impresión de la impresora de red a la que mando el trabajo y como cereza del pastel, se pueden fijar que ahora el comando lpr especifica que la impresión será en hoja tamaño carta y además hiciera un ajuste en el tamaño de la impresión con la opción fit-to-page.

Para finalizar copié el archivo printsort.sh a la carpeta /usr/bin para que lo pueda llamar a ejecución desde cualquier ubicación de mi sistema.