Entries for ShellScript
Exportar el código fuente de Eclipse a PDF
17 October 2012
Hoy me ha llamado un cliente que quiere exportar todo el código fuente de una aplicación Android, desarrollada con Eclipse, a un fichero PDF.
La primera opción que puede venir a la cabeza es imprimir cada uno de los archivos fuente y después concatenarlos todos, pero comprenderéis el proceso es demasiado repetitivo.
Así que me he puesto manos a la obra y de forma breve podemos hacer todo el proceso. Lo primero que necesitamos es instalar la utilidad enscript:
$ sudo apt-get install enscript
Una vez tenemos el comando listo, vamos a exportar todos los ficheros .java:
$ cd /directorio/del/proyecto/eclipse/
$ enscript -r -2 --file-align=2 --highlight --line-numbers -o - `find . -name '*.java'` | ps2pdf - files.java.pdf
Además, para proyectos Android es importante exportar las interfaces y los permisos (el manifiesto):
$ enscript -r -2 --file-align=2 --highlight --line-numbers -o - `find . -name '*.xml'` | ps2pdf - files.xml.pdf
De este modo tenemos dos ficheros con los fuentes java, files.java.pdf, y otro con los archivos xml, files.xml.java. Podemos unirlos de la siguiente forma:
$ gs -q -dNOPAUSE -sDEVICE=pdfwrite -dBATCH -sOutputFile=files.pdf files.java.pdf files.xml.pdf
Split en ShellScript: Obtener el último directorio de un path
26 October 2011
La idea es bastante sencilla. Partimos de un path como entrada en uno de los parámetros en un ShellScript y necesitamos saber el último componente. Por ejemplo:
Entrada: /un/path/cualquiera
Valor que buscamos: cualquiera
Una posible solución es ésta:
#!/bin/bash
if [ $# -ne 1 ]
then
echo "Usage: $0 path"
exit -1
fi
path=$1
path_base=${path%/*}
name=${path##*/}
if [ $path_base = $name ]
then
path_base=`pwd`
fi
echo "$path_base/$name"
Actualización (5/11/11):
Otra opción para los que no se quieran complicar la vida me la envía @dvelezyx vía Twitter:
basename `pwd`
Volcar un archivo MDB en un fichero SQLite
24 October 2011
Esta mañana contaba cómo extraer el esquema y datos de un archivo MS Access y ahora voy a poner un pequeño script que nos permita volcar todo el contenido directamente en una base de datos SQLite:
#!/bin/bash
MDB=fichero_access.mdb
DB=fichero_sqlite.db
TMPFILE=tmp.sql
echo "Extracting the schema"
mdb-schema $MDB > $TMPFILE
sed -e "s/^DROP TABLE\(.*\);/DROP TABLE IF EXISTS\1;/" -e "s/DateTime (.*)/DateTime/" $TMPFILE > schema.sql
echo "Creating SQLite DB"
sqlite3 $DB < schema.sql
echo "Extracting tables"
tables=`mdb-tables $MDB`
echo ""
for table in $tables
do
echo "Table: $table"
mdb-export -I -S $MDB $table > $TMPFILE
echo "PRAGMA journal_mode = MEMORY;" > table_$table.sql
sed -e "s/\(.*\)/\1;/" $TMPFILE >> table_$table.sql
sqlite3 $DB < table_$table.sql
done
rm -f $TMPFILE
Extraer el esquema y datos de un archivo MS Access
24 October 2011
Hoy me he encontrado con un fichero .mdb del que necesito la información que contiene. Tengo que hacer uso, tanto de la estructura como las tuplas de información que contiene cada una de las tablas.
Tras un rato de buscar, he encontrado MDB Tools. Éstas son un conjunto de herramientas que nos permiten trabajar con estos archivos desde la línea de comandos. Así que he hecho este pequeño scrpit:
#!/bin/bash
DATABASE=archivo_access.mdb
mdb-schema $DATABASE > schema.sql
tables=`mdb-tables $DATABASE`
for table in $tables
do
mdb-export -I -S $DATABASE $table > table_$table.sql
done
La teoría es cuando crees saber algo, pero no funciona.
La práctica es cuando algo funciona, pero no sabes por qué.
Los programadores combinan la teoría y la práctica:
Nada funciona y no saben por qué.
