Anti bomba tar.gz

¿A quién no le ha ocurrido? Descargas un fichero.tar.gz en $HOME, invocas el conjuro para desempaquetar y descomprimir:

$ tar -xvzf fichero.tar.gz

Y cuando observas el resultado te das cuenta que el muy %$E/&% se ha descomprimido SIN crear un subdirectorio, o sea, ha dejado todo tu $HOME lleno de ficheros. Es lo que se conoce como una bomba tar.

Bien, el siguiente comando atb (anti-tar-bomb), encontrado en commandlinefu.com, analiza el tar.gz (o .bz2 o .tgz) ANTES de descomprimirlo. Si resulta que se trata de una bomba tar, crea un directorio con el mismo nombre X que el fichero X.tar.gz y luego lo descomprime en X. Magia!

atb() {shopt -s extglob ; l=$(tar tf $1); if [ $(echo "$l" | wc -l) -eq $(echo "$l" | grep $(echo "$l" | head -n1) | wc -l) ]; then tar xf $1; else mkdir ${1%.t@(ar.gz|ar.bz2|gz|bz|ar)} && tar xf $1 -C ${1%.t@(ar.gz|ar.bz2|gz|bz|ar)}; fi ; shopt -u extglob}

Backup-remoto con autolimitación de ancho de banda

El siguiente comando, de una única línea parece que hiciera magia:

 tar -cj /backup | cstream -t 777k | ssh host 'tar -xj -C /backup'

Explicación:

tar -cj : (j) comprime con bzip el directorio backup, (c) y lo empaqueta en un único archivo
cstream -t 777k : limita la transferencia del contenido que le llega (el archivo empaquetado) a 777 kbps
ssh host ‘tar -xj -C /backup’ : se conecta por ssh al host destino y desempaqueta+descomprime el archivo bzip de backup que le llega en un directorio con el mismo nombre.

cstream es una joya que acabo de descubrir, al igual que el comando que he explicado, gracias a la excelente base de datos de comandos para administradores Linux que es commandlinefu.com

Plegar y desplegar secciones de texto en Vim

Supongamos que tienes 4 secciones en tu documento de texto. Quieres centrar tu atención sólo en la sección 2, de tal forma que el resto de secciones, queden plegadas. Puedes ver en la imagen adjunta lo que buscamos. Esa funcionalidad se conoce como «Code folding». Pero para los no iniciados, mejor plegar o desplegar secciones de texto. ¿Cómo se hace en Vim? Fácil. Seleccionas las líneas que quieras plegar (en modo Visual) y pulsas zf (la z la puedes recordar porque su forma parece que forme un pliegue) Para abrir un pliegue, pulsa zo (open). Para cerrarlo de nuevo zc (close).

Si cierras Vim y lo vuelves a abrir con el mismo fichero de texto, ¿se mantienen los pliegues? Por defecto, NO. Si quieres que se mantengan debes de teclear esto en tu .vimrc:

" Save folds
au BufWinLeave ?* mkview
au BufWinEnter ?* silent loadview

SalesForce compra DimDim

Hemos hablado antes de DimDim en DiarioLinux, una aplicación para web meetings (videoconferencia, pizarra compartida, gestión de usuarios, …) que en su día puso el código bajo una licencia libre . Digo en su día porque llevaba desde 2008 sin actualizar el código de su versión libre, llegado un punto en el que la versión privativa poco o nada tenía que ver con la libre. El caso es que hoy se ha publicado una nota de prensa en la que se indica que SalesForce ha comprado DimDim por 31 millones de dólares en cash. Ahí es nada. SalesForce es una compañía especializada en ofrecer servicios y aplicaciones de cloud computing para empresas. ¿Qué pasará con la versión opensource de DimDim? Nada, seguirá como hasta ahora, es decir, sin recibir aportaciones desde hace años.

Recordemos que hay alternativas libres a DimDim, igual de potentes (aunque gráficamente no tan trabajadas): OpenMeetings y Big Blue Button (ésta última especialmente recomendada para Universidades). Elija la que más le guste 🙂

Vim con shell integrada

Seguimos con configuraciones que hacen de Vim, en mi opinión, un potente IDE. El de hoy es un truquito que permite integrar una terminal dentro de un buffer Vim. Así podréis teclear lo que queráis en uno de los buffers (el superior, por ejemplo) y en el inferior tener abierto el intérprete Bash 🙂 Podéis ver el resultado en la imagen adjunta. Así no tendréis que hacer uso de GNU-Screen o similares.

El procedimiento es sencillo. Basta con instalar el plugin Conque Shell. Y la instalación es de lo más sencillo. Descarga de la URL anterior el fichero Conque Shell.vba (es un archivo Vim Ball, un formato estándar para plugins Vim). Ábrelo en Vim (o en GVim) y teclea

:so %

¡Listo! Ya está instalado el plugin 🙂 Para abrir una nueva shell Bash en la ventana inferior, teclea:

:ConqueTermSplit bash

Hay más comandos y configuraciones Conque que puedes ver en la web del plugin.