====== Tratamiento de Texto en Unix II ======
{{ :teclado_mac.jpg?380 |Teclado }}
Continuando con estas herramientas de manejo de texto.
===== Como Chequear Ortografía =====
Lo que debemos instalar previo a poder usar una aplicación que permite chequear la ortografía sobre archivos de texto es la aplicación:
* En Linux es **aspell** y **aspell-es**
* En OSX la aplicación es se debe ejecutar el comando **brew install aspell - - with-lang-es**
El primer comando es para Linux y el segundo es para ser instalado en OSX, ambos Unix permiten corregir la ortografía de archivos de texto plano.
El comando para chequear la ortografía es:
aspell -c -l es archivo_texto.txt
===== Como filtramos listados =====
Hay herramientas muy poderosas sobre texto en Unix/Linux, tal como **sed** desde la consola, pondremos un sólo ejemplo que nos permite ver su versatilidad.
sed -e '/^;/d' /etc/php.ini --> Filtra el caracter ';'
sed -e '/^#/d' file1.txt --> Filtra el caracter '#'
Este comando nos elimina de la salida todos las líneas de los caracteres que comienzan con **;** o con **#** y nos permite ver las sentencias del archivo que son las que influyen en su configuración, dado que la gran mayoría son comentarios y documentación de cada parámetro.
La segunda forma es usar el comando **grep** de esta forma:
cat file1.txt | grep -v ';' > file2.txt
cat file1.txt | grep -v '#' > file2.txt
Este comando entrega su salida a un archivo //file2.txt// con el contenido de las líneas útiles, sacando los comentarios y la documentación del archivo file1.txt, suponiendo que estos comienzan con el caracter **;** o el carácter **#**.
===== Como unir archivos rar en Linux =====
Muchos usuarios linux se preguntan eso, sobre todo cuando están recien llegados y no conocen las poderosas herramientas disponibles en Linux o en algún Unix. Para ello deberemos disponer de los paquetes instalados en nuestro sistema, con este comando en consola:
# aptitude update
# aptitude install rar && aptitude install unrar
Una vez que hemos instalado estos paquetes en forma correcta, lo que deberemos hacer para //juntar// varios archivos rar en un sólo archivo es con el siguiente comando en consola:
$ unrar x archivo_rar.parte1.rar
Lo que la aplicación hace es descomprimir la primera parte del archivo y sucesivamente va por las siguientes partes, ya que la información de la parte siguiente se encuentra en el formato rar de la primera parte.
===== Uso de PDFTK =====
{{:icono_pdf.png?60 |}}
Esta herramienta permite manipular PDF's, permite extraer páginas, combinarlas, combinar varios PDF's en uno sólo de salida, en fin se pueden realizar varios tipos de manipulaciones con esta herramienta, como ejemplo tenemos el siguiente comando en consola, que permite extraer paginas no n archivo:
==== Instalando PDFTK ====
El comando a continuación permite realizar la instalación en Linux con una distro derivada de Debian:
# aptitude install pdftk
Para otras distros ver [[http://www.pdflabs.com/tools/pdftk-the-pdf-toolkit/|pdftk]].
==== Extraer Páginas no Secuenciales ====
$ pdftk A=origen.pdf cat A1 A2 A11 A16 A23 A29 A35 A37 output salida.pdf
Este comando permite extraer las páginas 1,2,11,16,23,29,35,37 del archivo **origen.pdf** y los deja en otro archivo llamado **salida.pdf**.
==== Extraer Páginas Secuenciales ====
$ pdftk A=origen.pdf cat A1-6 output salida.pdf
Este comando permite extraer las páginas desde la 1 a la 6 del archivo **origen.pdf** y los deja en otro archivo llamado **salida.pdf**.
==== Combinar 2 PDF's en Otro PDF ====
$ pdftk A=origen1.pdf B=origen2.pdf cat A1-4 B3-6 output salida.pdf
Este comando permite extraer del archivo **origen1.pdf** las páginas 1 a la 4, y del archivo **origen2.pdf** desde la 3 a la 6 y sacarlas a un archivo de **salida.pdf**.
Hay otra combinación de posibilidades de este comando que es posible realizar pero con estos comandos tenemos para empezar.
==== Como Eliminar Algunas Páginas de un PDF ====
Hay veces que hemos combinado varios PDF's en un único documento de varias páginas y necesitamos eliminar algunas páginas, en el siguiente ejemplo tenemos un documento de 59 páginas y queremos eliminar la 2, 28 y la 47, lo hacemos de la siguiente forma:
pdftk origen.pdf cat 1 3-27 29-46 48-59 output salida.pdf
El documento **salida.pdf** tiene eliminadas las páginas indicadas.
===== Manipulando PDF's =====
{{:icono_pdf.png?200 |pdf}}
En paralelo a PDFTK existe otra aplicación Unix que permite realizar una tarea específica con los PDF, que es poder transformar un PDF de varias paginas, en donde tiene una página por cara de la hoja a combinar 2 páginas por cara de la hoja, eso permite imprimir a media página en forma horizontal por página, lo que permite ahorrar en papel y por otro lado disponer de dos páginas en la misma cara de la hoja.
Este cambio se realiza con al herramienta **pdfnup** que son parte de las herramientas del paquete **PDFjam**, las cuales existen en Unix (Linux, BSD y OSX).
Como se utiliza esta herramienta:
$ pdfnup --nup 2x1 archivo_entrada.pdf
Esto generará un archivo llamado **archivo_entrada-nup.pdf** que corresponde a la salida del archivo de entrada ya modificado.
Para modificar el nombre del archivo de salida podemos utilizar el comando siguiente:
pdfnup --nup 2x1 --suffix "2x1" archivo_entrada.pdf
Esto permite generar un archivo de salida en el mismo directorio, con el nombre de **archivo_antrada-2x1.pdf**.
===== Cambiar Permisos a una Estructura de Directorios en Unix =====
{{ :arbol-de-directorios-so-linux.jpg?600 |}}
Hay veces que debemos cambiar los permisos de ciertos archivos que se repiten en un árbol de directorios y la gracia, no es hacerlos archivo a archivo, para ello recurrimos a una combinación de comandos de consola que nos permite hacerlos con un comando, de la forma siguiente:
==== Cambia Permisos a un tipo de Archivo dentro del Árbol ====
$ find . -name \*\.php -exec chmod 660 {} \;
Lo que este comando realiza, es buscar, desde donde estoy //parado//, hacia abajo y dentro de todo el árbol, los archivos que terminen con la extensión **.php** y le cambia los permisos a 660 (rw- rw- - - -).
==== Cambia los Permisos a todos los Archivos de un Árbol ====
Este comando cambia los permisos a todos los archivos del árbol, desde donde estoy //parado// hacia abajo.
$ find . -type f -exec chmod 660 {} \;
==== Cambia Permisos a los Directorios de un Árbol Completo ====
Este comando permite cambiar todos los directorios de un árbol a permisos 770, lo que los deja sólo ser modificados por el dueño y el grupo.
$ find . -type d -exec chmod 770 {} \;
==== Borrar un Mismo Archivo en Muchos (sub)Directorios ====
Cuando usamos distintos sistemas operativos y tenemos procesos automatizados de respaldos entre distrmas, en ocasiones se transfieren archivos de control entre sistemas, el caso típico es el archivo **.DS_Store** que usa OSX que lo usa en todos los directorios, pero cuando transferimos los backup a otros Unix, estos archivos se transforman en //basura//.
Este es el caso de los **backup's** o por otras razones, tenemos un archivo repetido en muchos directorios y subdirectorios y la opción de //borrar uno por uno//, no es algo que estemos dispuesto a realizar, sería una pérdida de tiempo y una tortura ir borrando archivo por archivo, para ello tenemos herramientas es nuestro sistema que nos hace muy simple el poder hacerlo.
En un terminal podemos ejecutar el comando que indico para saber donde se encuentra nuestro archivo muchas veces duplicado:
$ find . -name ".DS_Store" -type f
Estos nos lista todos los archivos con el nombre //.DS_Store// que están en el directorio donde nos encontramos y en todos los subdirectorios que depende de este.
Para borrar estos archivos desde un sólo comando, lo que haremos es utilizar esta misma línea de comandos que usamos para listarlos pero ahora para borrarlos.
$ find . -name ".DS_Store" -type f -delete
La opción **-delete**, nos permite borrar el archivo en forma recursiva para todo el árbol de directorios que se encuentran por debajo de donde nos encontramos y ejecutamos el comando.