Copying EXIF metadata between files

This tip might be useful for those cases when an editor ignores a photo meta-information (which seems fairly common in phones).

$ exiftool -TagsFromFile source.jpg target.jpg

or

$ exiv2 ex -e e source.jpg  # Extraction. Also $ exiftool -exif -b source.jpg > source.exv
$ mv source.exv target.exv  # Names must match
$ exiv2 in -i e target.jpg  # Injection

Quick tip: Concatenating video files (with no quality loss)

Concatenation of video files can be done quickly from the command-line, video files must "match" (e.g. a movie formerly split into parts) i.e. they must use the same codec and parameters, this methods won't work as expected with random files.

  • AVI files: Use mencoder with multiple inputs
    $ mencoder -oac copy -ovc copy -o output.avi input1.avi input2.avi [...]
  • MPEG files: They can either be concatenated directly:
    $ cat input1.mpg input2.mpg > output.mpg
    Or the mencoder method, which I prefer, can be used (note the output format must now be set):
    $ mencoder -oac copy -ovc copy -of mpeg -o output.mpg input1.mpg input2.mpg [...]
  • Quirks and other formats:
    • The mencoder method won't work for multi-audio files
    • mencoder has worse support for other formats, they might require an intermediate transmuxing to avi.

I'll update this post if I find better ways or alternatives to do this.


References:

Valor de retorno en el prompt

Este código sirve para indicar si el último comando ha tenido éxito o no, de manera que siempre esté visible en el propio prompt, es ideal para depurar código entre otras cosas.

Versión rápida (aunque no muy legible :P):
export PS1='$( [ "$?" -eq 0 ] && M=")" || M="("; echo -n :$M ) '$PS1

Incluyendo este fragmento en ~/.bashrc siempre estará activo:

# Indicacion de si el ultimo comando ha tenido exito
#    inspirada por http://mendel.livejournal.com/128965.html
#export PS1='`test "$?" -eq 0 && echo -n ":)" || echo -n ":(" ` '$PS1
# Version con funcion sacada de http://linuxgazette.net/122/lg_tips.html
#Alternativamente: "More-or-less undocumented Bash-ism - a C-style trinary operator":
#smiley () { echo -e ":\$(($??50:51))"; }
_smiley() {
   if [ $? -eq 0 ]; then echo ':)'
      else echo ':('
   fi
}
#...
export PS1='$(_smiley) '$PS1

Ejemplo:

:) toni@host:~$ false
:( toni@host:~$ true
:) toni@host:~$ 

Revisado y corregido por última vez el 2013-10-22

Instalación de la máquina virtual Java de Sun en Debian

La información de esta página no es necesaria en sistemas actuales, basta con instalar los paquetes sun-java-*.

Debian incluye varias máquinas virtuales Java que funcionan bastante bien pero puede interesar usar la de Sun, por ejemplo en estudios de informática en que se de por hecho que se va a usar esa máquina.
Éste es el método más elegante: de una forma simple crea un archivo deb instalable (y desinstable) como cualquier otro.
Además puede crear tanto archivos para la SDK como para el JRE.

El encargado de la magia es java-package, que desde hace algún tiempo forma parte de Debian Sid.

http://z42.de/debian/ aunque es más recomendable incluirlo como una fuente para apt e instalarlo con apt-get:

Para instalarlo:
# apt-get install java-package

Para crear el deb hay que bajar el binario adecuado de la web de Sun, y una vez descargado ejecutar, por ejemplo para J2SDK 1.4.2_05:

$ make-jpkg /ruta/j2sdk-1_4_2_07-linux-i586.bin

Finalmente tendremos el deb que podremos instalar normalmente, el archivo creado en el ejemplo se llamará sun-j2sdk1.4_1.4.2+07_i386.deb:
# dpkg -i sun-j2sdk1.4_1.4.2+07_i386.deb

Conversión de páginas del manual a PostScript (o pdf)

La idea es crear un archivo PostScript (ps) o PDF con las páginas del manual
de un comando, de modo que se puedan hacer impresiones de alta calidad o verlo
en pantalla también en alta calidad. Se requiere Ghostscript para hacer la conversión.

Substituye $COMANDO por el comando en cuestión.

  • PostScript
    $ man -t $COMANDO > $COMANDO.ps

  • PDF
    $ man -t $COMANDO | ps2pdf - > $COMANDO.pdf

    Usando ps2pdf14 en vez de ps2pdf el PDF resultante tendrá fuentes suavizadas.

Mini-script (disponible como descarga):

#!/bin/sh
# man2ps v1.0 - Dominio Público

if [ -z $1 ];
then
   echo "Uso: `basename $0` comando [archivo.ps|archivo.pdf]"
   exit 2
fi

if [ -z $2 ];
then
   ARCHIVO=$1.ps
else
   ARCHIVO=$2
fi;

echo Creando $ARCHIVO...
case $ARCHIVO in
    *.pdf)  man -t $1 | ps2pdf - > $ARCHIVO ;;
    *)      man -t $1 > $ARCHIVO ;;
esac

Comentarios importados desde outlyer.net:

  1.  Comentario de Walter el 06.04.2010
     Que buen ejemplo, Gracias

  2.  Comentario de Toni el 06.04.2010
     De nada hombre ;)