Como capturar vídeo desde una distribución Linux. http://t.co/9dK8I7xXk1
— pacoHS (@pacoHSvirtual) March 30, 2014
lunes, 31 de marzo de 2014
Tuitentrada: como capturar un fragmento de vídeo
sábado, 29 de marzo de 2014
Tuitentrada: Sistemas de compilación. Más allá del simple configure, make, make install
Sistemas de compilación. Más allá del simple configure, make… http://t.co/wQzdmPdTp3
— pacoHS (@pacoHSvirtual) March 29, 2014
martes, 4 de febrero de 2014
Pequeñas aplicaciones que mejoran la experiencia Linux
En esta entrada vamos a ver algunas aplicaciones que utilizo con frecuencia y que me van acompañando con el paso del tiempo aunque cambie de distribución o reinstale el sistema. Me hacen la existencia algo más llevadera cuando tengo que enfrentarme a según que tareas. Todas se instalan desde el terminal de comandos usando apt-get o aptitude y siempre tecleándolos en minúsculas, a menos que se indique otra cosa.
Gscan2pdf
Este sencillo programa me viene muy bien cuando dispongo de varios archivos JPG, fruto de un escaneado, por ejemplo, y necesito unificarlos en un solo archivo PDF. Es la función por la que me gusta aunque también puede gestionar el escáner, hacer primitivos OCR's y renumerar páginas.
PDFEdit
Cuando el gscan2pdf se me queda corto recurro al PDF Editor, que amplia sus posibilidades permitiendo alterar el orden y la cantidad de páginas de un archivo PDF. Es pelín más lioso al principio pero no se tarda en hacerse uno con él.
XSane
Mi gestor de escáner favorito. Simple y directo, siempre ha sido mi primera opción, tal vez porque fue el primero que usé.
Comix
Lector de archivos CBR, formato en que suelen guardarse los cómics. También lee los guardados en PDF.
Asunder
Sencilla aplicación para convertir los cortes de un CD musical en archivos mp3. Podemos elegir los metadatos de cada canción, la frecuencia de muestreo y su tasa de bits.
EasyTag
Si lo que ha hecho es bajarse archivos musicales de internet y sus metadatos no están correctos o no existen podemos editarlos con EasyTag. Es posible modificarlos en bloque, nada de hacerlo de uno en uno.
EasyMP3Gain
Utilidad para normalizar el volumen de los archivos MP3 y que todos suenen parejos. Mejor que su aplicación hermana, MP3Gain, que a mí nunca me funcionó demasiado bien. Su ejecutable binario en este caso es easymp3gain-gtk.
DeVeDe
Simple y directo creador de CD's y DVD's de vídeo. Si solo queremos amontonar bajo una portada archivos de vídeo grabados con nuestra cámara casera sin complicarnos mucho cumplirá con creces.
Gnome Subtitles
Si lo que necesitamos es editar los subtítulos de una película (asumiento que tenemos el archivo SRT pertinente) con Gnome Subtitles cambiaremos su formato, lo sincronizaremos con las imágenes y hasta podremos reescribir los diálogos. El binario es gnome-subtitles.
GParted
Herramienta imprescindible en GNU/Linux para todo lo tocante a las unidades de disco. Modificar particiones, borrar y añadir unidades, montarlas, chequearlas, formatearlas... Que no le falte.
Grsync
Utilidad para sincronizar archivos entre dispositivos. Es fácil de manejar y dispone de un buen número de opciones para configurar la sincronización.
GDebi
Instalador de paquetes DEB que utilizaremos si no queremos tratar con el terminal para ese menester.
Grub Customizer
Si lo que quieren es poder configurar su menú de arranque entonces con Grub Customizer podrán personalizar el modo en que su PC comienza la sesión, desde el orden de arranque hasta el aspecto estético del menú. Para instalarla sigan las instrucciones que encontrarán aquí.
Unetbootin
Pequeña utilidad gracias a la cual podremos trasvasar el instalador de una distribución GNU/Linux a un pendrive. Para ello necesitaremos haber descargado previamente el fichero ISO correspondiente.
Como digo, estas pequeñas herramientas me ayudan en muchas tareas y han demostrado una eficacia que me lleva a serles fiel. Hay otras, mejores o peores, pero estas funcionan satisfactoriamente y merece la pena tenerlas en cuenta.
Y ya que hemos hablado de herramientas vayamos con un vídeo de la banda usamericana de metal vanguardista Tool. Una de sus mejores canciones es este "Stinkfist".
Gscan2pdf
Este sencillo programa me viene muy bien cuando dispongo de varios archivos JPG, fruto de un escaneado, por ejemplo, y necesito unificarlos en un solo archivo PDF. Es la función por la que me gusta aunque también puede gestionar el escáner, hacer primitivos OCR's y renumerar páginas.
PDFEdit
Cuando el gscan2pdf se me queda corto recurro al PDF Editor, que amplia sus posibilidades permitiendo alterar el orden y la cantidad de páginas de un archivo PDF. Es pelín más lioso al principio pero no se tarda en hacerse uno con él.
XSane
Mi gestor de escáner favorito. Simple y directo, siempre ha sido mi primera opción, tal vez porque fue el primero que usé.
Comix
Lector de archivos CBR, formato en que suelen guardarse los cómics. También lee los guardados en PDF.
Asunder
Sencilla aplicación para convertir los cortes de un CD musical en archivos mp3. Podemos elegir los metadatos de cada canción, la frecuencia de muestreo y su tasa de bits.
EasyTag
Si lo que ha hecho es bajarse archivos musicales de internet y sus metadatos no están correctos o no existen podemos editarlos con EasyTag. Es posible modificarlos en bloque, nada de hacerlo de uno en uno.
EasyMP3Gain
Utilidad para normalizar el volumen de los archivos MP3 y que todos suenen parejos. Mejor que su aplicación hermana, MP3Gain, que a mí nunca me funcionó demasiado bien. Su ejecutable binario en este caso es easymp3gain-gtk.
DeVeDe
Simple y directo creador de CD's y DVD's de vídeo. Si solo queremos amontonar bajo una portada archivos de vídeo grabados con nuestra cámara casera sin complicarnos mucho cumplirá con creces.
Gnome Subtitles
Si lo que necesitamos es editar los subtítulos de una película (asumiento que tenemos el archivo SRT pertinente) con Gnome Subtitles cambiaremos su formato, lo sincronizaremos con las imágenes y hasta podremos reescribir los diálogos. El binario es gnome-subtitles.
GParted
Herramienta imprescindible en GNU/Linux para todo lo tocante a las unidades de disco. Modificar particiones, borrar y añadir unidades, montarlas, chequearlas, formatearlas... Que no le falte.
Grsync
Utilidad para sincronizar archivos entre dispositivos. Es fácil de manejar y dispone de un buen número de opciones para configurar la sincronización.
GDebi
Instalador de paquetes DEB que utilizaremos si no queremos tratar con el terminal para ese menester.
Grub Customizer
Si lo que quieren es poder configurar su menú de arranque entonces con Grub Customizer podrán personalizar el modo en que su PC comienza la sesión, desde el orden de arranque hasta el aspecto estético del menú. Para instalarla sigan las instrucciones que encontrarán aquí.
Unetbootin
Pequeña utilidad gracias a la cual podremos trasvasar el instalador de una distribución GNU/Linux a un pendrive. Para ello necesitaremos haber descargado previamente el fichero ISO correspondiente.
Como digo, estas pequeñas herramientas me ayudan en muchas tareas y han demostrado una eficacia que me lleva a serles fiel. Hay otras, mejores o peores, pero estas funcionan satisfactoriamente y merece la pena tenerlas en cuenta.
Y ya que hemos hablado de herramientas vayamos con un vídeo de la banda usamericana de metal vanguardista Tool. Una de sus mejores canciones es este "Stinkfist".
jueves, 16 de enero de 2014
Buscar y localizar archivos
Resto de entradas con intenciones didácticas en la etiqueta Aprendizaje.
El capítulo de hoy bien podría haber estado junto al de filtrado de archivos pero se hubiera hecho demasiado extenso y cansino, de modo que me ha parecido bien separarlo. Se trata de comandos para buscar y, por supuesto, encontrar archivos y directorios, el tipo de herramientas que siempre es bueno conocer y tener a mano.
find
Es el clásico comando de UNIX para encontrar archivos y directorios.
find -name lp: encuentra el fichero lp dentro del directorio actual.
find -iname lp: lo mismo pero sin tener en cuenta la diferencia entre mayúsculas y minúsculas.
find /home/vacaciones/ -name "*.jpg": encuentra todos los ficheros con extensión .jpg que hay en el directorio /home/vacaciones.
find /user -type f: encuentra todos los ficheros de tipo ordinario (parámetro "f") habidos dentro del directorio /user.
find / -user pedro: encuentra todos los archivos y directorios pertenecientes al usuario pedro.
find / -name cosas: encuentra el archivo cosas buscando a partir de la raíz del sistema.
find . -name "hola.txt": encuentra todos los archivos de nombre hola.txt buscando a partir del directorio actual.
find . -size 50k: busca archivos que ocupen 50k a partir del directorio actual.
find . -size 20c: busca archivos que ocupen 20 bytes a partir del directorio actual.
find . -size 5b: busca archivos que ocupen 5 bloques de 521 bytes cada uno a partir del directorio actual.
find / -empy: busca archivos vacíos a partir del directorio raíz.
find /home/user1 -name \*.bin: busca archivos con extensión .bin dentro del directorio /home/user1.
find /usr/bin -type f -mtime -10: encuentra archivos binarios creados o cambiados dentro de los últimos diez días.
find /usr/bin -type f -atime -100: encuentra archivos no usados dentro de los últimos diez días.Como ven las posibilidades son enormes (aún más si añadimos expresiones regulares o tuberías) y las variantes multitud. Acudan a las opciones de ayuda habituales y a internet para ampliar conocimientos.
locate
Comando similar a find que realiza sus búsquedas conforme a una base de datos indexada (localizada en el archivo /var/lib/mlocate.db) en lugar en relación al contenido del sistema. Su funcionamiento es en esencia igual.
locate -e archivo: busca solamente entradas de archivos existentes.
locate -i archivo: igual que la anterior pero ignorando la diferencia entre mayúsculas y minúsculas.
locate /home/*.txt: busca los archivos con extensión .txt en la ruta /home.whereis
Sirve para localizar un archivo binario (ejecutable), el código fuente y la página del manual de un comando.
whereis -b: busca solo el archivo binario.
whereis -m: busca solo la página del manual.
whereis -s: busca solo el código fuente.
whereis -b halt: muestra la ubicación del fichero binario correspondiente al comando halt.which
Encuentra donde se está ubicado un archivo binario siempre que su ruta esté incluida en la variable PATH.
Y buscando algo con que ilustrar el comando find he encontrado este tema de Clannad llamado "I will find you" que aparecía en la banda sonora de "El último mohicano".
lunes, 9 de diciembre de 2013
Expresiones regulares
Resto de entradas con intenciones didácticas en la etiqueta Aprendizaje.
El de las expresiones regulares es uno de los capítulos más farragosos de los sistemas GNU/Linux pero que más atención merece, y dominarlas supone extender muy mucho las prestaciones de la consola de comandos. Vendrían a ser como una versión avanzada de los caracteres comodín y unas posibilidades exponencialmente mayores.
No tiene mayor secreto que aprenderlas y, luego, practicar para averiguar hasta qué punto podemos usarlas en búsquedas, sustituciones de texto o scripts. Las dividiremos en metacaracteres, anclas y multiplicadores.
Metacaracteres
Son conjuntos de caracteres dentro de una expresión regular y con un significado o función específicos
Se refieren a la posición de la cadena.
Aluden a cuantas veces aparece en la cadena.
El de las expresiones regulares es uno de los capítulos más farragosos de los sistemas GNU/Linux pero que más atención merece, y dominarlas supone extender muy mucho las prestaciones de la consola de comandos. Vendrían a ser como una versión avanzada de los caracteres comodín y unas posibilidades exponencialmente mayores.
No tiene mayor secreto que aprenderlas y, luego, practicar para averiguar hasta qué punto podemos usarlas en búsquedas, sustituciones de texto o scripts. Las dividiremos en metacaracteres, anclas y multiplicadores.
Metacaracteres
Son conjuntos de caracteres dentro de una expresión regular y con un significado o función específicos
. : equivale a cualquier carácter.
( ) : sirve para agrupar patrones (subexpresiones o grupos).
[ ] : equivale a un carácter cualquiera de los contenidos entre corchetes.
[ - ] : equivale a un rango de caracteres.
[^ ] : excluye los caracteres que figuran entre corchetes.
{ } : introduce patrones de repetición.
| : permite elegir entre dos expresiones.
// : delimita una expresión regular.
\ : equivale a cualquier carácter excepto fin de línea.
\w: equivale a cualquier carácter alfanumérico y carácter _.
\W: equivale a cualquier carácter no alfanumérico.
\d: equivale a cualquier dígito.
\D: equivale a cualquier carácter no dígito.
\S: equivale a cualquier carácter menos espacio en blanco.
i: modificador para no distinguir entre mayúsculas y minúsculas.
!: excluye el carácter siguiente.Veamos algunos ejemplos:
[a-z]: equivale a un rango de letras minúsculas entre la a y la z.
[0-9]: equivale a un rango de dígitos entre 0 y 9.
[A-Za-z]: equivale a una letra cualquiera, ya sea mayúscula o minúscula.
[A-Z][a-z]: equivale a una letra mayúscula seguida de una minúscula.
[^c]: excluye el carácter c, cualquier letra que no sea la c.
[^aeiou]: excluye las vocales, es decir, equivale a cualquier consonante.
[a|b]: equivale a la letra a o a la letra b.
\w: equivale a [a-zA-Z0-9_].
\W: equivale a [^a-zA-Z0-9_].
/hola/i: representa "hola" sin distinguir mayúsculas y minúsculas.
\d: equivale a [0-9].
[!a-c]: equivale letra minúscula que no es ni a ni b ni c.Anclas
Se refieren a la posición de la cadena.
^: comienzo de línea.
$: final de línea.
\b: principio o final de palabra.
\B: posición que no es ni al comienzo ni al final de la palabra.
<>: equivale a una palabra.Multiplicadores
Aluden a cuantas veces aparece en la cadena.
*: repite entre cero y más veces el carácter o subexpresión previos.
+: repite entre uno y más veces el carácter o subexpresión previos.
?: repite entre cero y una vez el carácter o subexpresión previos.
{n}: repite "n" veces el carácter o subexpresión previos.
{n,m}: repite entre "n" y "m" veces el carácter o subexpresión previos.
{n,}: repite al menos "n" veces el carácter o subexpresión previos.Sigamos con los ejemplos de anclas y multiplicadores:
^[aeiou]: una vocal al comienzo de una línea.
[aeiou]$: una vocal al final de una línea.
hola$: "hola" al final de una línea.
^$: línea vacía.
\balon: "balon" al principio o final de línea.
hola*: "hol", "hola", "holaa".
[a-z]*: una palabra en minúsculas.
^Una vez*arbol$: una línea que comienza con "una vez" y termina con "arbol".
^Una vez*[Aa]rbol$: una línea que comienza con "una vez" y termina con "Arbol" o "arbol".
hola+: "hola", "holaa", "holaaa", etc.
a{4}: "aaaa".
a{2,4}: "aa", "aaa", "aaaa".
a{2,}: "aa", "aaa", "aaaa", etc.Lo se, un post como este valdría para ahuyentar a cualquier novato que quisiera entrar en el mundo de GNU/Linux. Quizá las expresiones regulares no sean necesarias para administrar una red doméstica o de una pequeña PYME, pero a niveles más avanzados son muy utilizadas y hacerse con ellas es fundamental. Recomiendo usar Google para encontrar construcciones más complejas y sus correspondientes explicaciones. Les dejo con un vídeo tutorial donde les explican un uso se le puede dar a las expresiones regulares.
sábado, 7 de diciembre de 2013
Filtrar datos y archivos
Resto de entradas con intenciones didácticas en la etiqueta Aprendizaje.
En ocasiones será necesario recurrir a comandos que nos ayuden a localizar archivos binarios (ejecutables), paquetes, simples ficheros de trabajo o determinados contenidos dentro de ellos. Hoy vamos a hablar de algunas órdenes que nos ayudarán en la tarea de filtrar los resultados deseados ya sea en la búsqueda de ficheros o de sus datos.
grep
Conviene aprender bien como opera este comando ya que nos resultará muy útil para encontrar cadenas de texto dentro de ficheros, lo cual conviene cuando son extensos. Es básicamente un filtro que concreta la búsqueda en función del argumento que le acompañe. Algunas de sus opciones son:
Comando que permite borrar líneas y registros o sustituir cadenas de caracteres dentro de las líneas. Estas modificaciones solo se dan a efectos de visualización y los archivos originales no se ven alterados salvo que utilicemos el comando de una manera muy concreta.
Comando para ordenar registros y líneas de uno o más archivos.
Permite cambiar unos caracteres por otros dentro de un archivo. Primero especificamos lo que vamos a sustituir y seguidamente lo que lo sustituye. Escribamos su sintaxis y la aclararemos después con ejemplos:
tr [opción] SET1 [SET2].
Las opciones pueden ser
Y como no podría ser más a propósito, ya que hemos hablado de filtros terminemos con un vídeo de la banda de Cleveland Filter y este potente "Welcome to the fold".
En ocasiones será necesario recurrir a comandos que nos ayuden a localizar archivos binarios (ejecutables), paquetes, simples ficheros de trabajo o determinados contenidos dentro de ellos. Hoy vamos a hablar de algunas órdenes que nos ayudarán en la tarea de filtrar los resultados deseados ya sea en la búsqueda de ficheros o de sus datos.
grep
Conviene aprender bien como opera este comando ya que nos resultará muy útil para encontrar cadenas de texto dentro de ficheros, lo cual conviene cuando son extensos. Es básicamente un filtro que concreta la búsqueda en función del argumento que le acompañe. Algunas de sus opciones son:
grep -i: para no distinguir entre mayúsculas y minúsculas.
grep -n: muestra el nº de línea dentro de un archivo especificado según el patrón introducido.
grep -v: muestra las líneas no coincidentes con el patrón especificado.
grep -c: en lugar de mostrarlas líneas coincidentes con el patrón introducido muestra el número de líneas que coinciden.
grep -r: busca recursivamente dentro de los subdirectorios existentes en el directorio actual.
grep -o: para que en el listado solo aparezca la parte de la línea que coincide con el patrón.Para entender la potencia de este comando conviene que veamos algunos ejemplos:
grep opciones docu.txt: para listar todas las líneas que contengan la cadena "opciones" dentro de docu.txt.
grep "expresiones regulares" docu.txt: para listar todas las líneas que contengan la cadena "expresiones regulares" dentro de docu.txt. Cuando se trate de dos o más palabras hay que entrecomillarlas.
grep -v "compras" departamentos.txt: para excluir del listado todas las líneas que contengan la cadena "compras" dentro de departamentos.txt.
grep guitarra dredg anathema dreamtheater rush > guitarras.txt: nos envía las líneas que contengan la palabra "guitarra" de los archivos dredg, anathema, dreamtheater y rush al archivo guitarras.txt.
grep guitarra dredg anathema dreamtheater rush | tee guitarras.txt: visualiza el mismo resultado que anteriormente por pantalla y, a través de una tubería, usamos el comando tee para enviarlo al archivo guitarras.txt.sed
Comando que permite borrar líneas y registros o sustituir cadenas de caracteres dentro de las líneas. Estas modificaciones solo se dan a efectos de visualización y los archivos originales no se ven alterados salvo que utilicemos el comando de una manera muy concreta.
sed "3d" lista.lst: elimina la línea nº 3 del archivo lista.lst.
sed "3,5d" lista.lst: elimina el rango de líneas de la 3 a la 5 del archivo lista.lst.
sed "3,$d" lista.lst: elimina el rango de líneas de la 3 en adelante del archivo lista.lst.
sed "/^$/d" lista.lst: elimina las líneas en blanco del archivo lista.lst.
sed "s/cadena1/cadena2/g" lista.lst: sustituye cadena1 por cadena2 en el archivo lista.lst.
sed "5 s/USUARIO/usuario/g" lista.lst: sustituye USUARIO por usuario en la línea nº 5 del archivo lista.lst.
sed -i "3,5d" lista.lst: mismo efecto que el anterior, pero esta vez los cambios sí se realizan en el archivo.sort
Comando para ordenar registros y líneas de uno o más archivos.
sort listado.txt: ofrece por pantalla las líneas del archivo listado.txt ordenadas por orden alfabético.
sort listado.txt > listado2.txt: crea un duplicado de listado.txt con nombre listado2.txt y con sus líneas ordenadas alfabéticamente.
sort -o listado.txt listado.txt: ordena las líneas del archivo sin ofrecerlo por pantalla.
sort -r listado.txt: muestra por pantalla las líneas del archivo ordenadas en orden inverso.
sort -n listado.txt: ordena las líneas por número; útil cuando dichas líneas comienzan con un carácter numérico.
sort -u salida.txt: elimina las líneas repetidas al ordenar el archivo salida.txt.
sort -m lista1.txt lista2.txt: combina ambos archivos asumiendo que los dos están previamente ordenados.
sort -b: ignora los espacios en blanco.tr (translate)
Permite cambiar unos caracteres por otros dentro de un archivo. Primero especificamos lo que vamos a sustituir y seguidamente lo que lo sustituye. Escribamos su sintaxis y la aclararemos después con ejemplos:
tr [opción] SET1 [SET2].
Las opciones pueden ser
-d: elimina los caracteres incidados en SET1.
-s: elimina o reemplaza los caracteres indicados en SET1.
-c: todos los caracteres que no estén indicados en SET1 los convierte a SET2.
-t: trunca la longitud de SET1 a la de SET2.Veamos algunos ejemplos:
echo ejemplo | tr -d emp: elimina los caracteres emp de la palabra ejemplo. Aquí ejemplo sería SET1 y emp sería SET2.
echo ejjemmpplo | tr -s [a-zA-Z]: elimina cualquier letra (representada por la expresión comodín [a-zA-Z]) duplicada de la palabra ejjemmpplo.
echo "nací el 02 de enero de 1947" | tr -c [0-9] $: sustituye todo carácter no numérico (incluidos espacios en blanco -de nuevo ver comodines-) de la expresión "nací el 02 de enero de 1947" por el carácter $.
echo murcielago | tr aeiou AEIOU: lo que aquí decimos es que de murcielago cojamos las letras aeiou y las sustituyamos por AEIOU.Como vengo insistiendo, esto no son más que pequeños ejemplos. Documentarse y practicar es la mejor receta para aprovechar las prestaciones de estos comandos.
Y como no podría ser más a propósito, ya que hemos hablado de filtros terminemos con un vídeo de la banda de Cleveland Filter y este potente "Welcome to the fold".
lunes, 2 de diciembre de 2013
Visualizar un árbol de directorios
La de hoy va a ser una entrada breve pero interesante. Cuando tenemos un árbol de directorios muy extenso a veces queremos visualizarlo todo, con sus subdirectorios. En GNU/Linux disponemos de un comando que si bien no viene de serie (al menos en Debian 7.2) lo podemos instalar así:
sudo apt-get install tree
Exacto, el comando se llama tree (árbol). Ingenioso, ¿verdad? Pues bien, con él puedo hacer justo lo que perseguía, que no es otra cosa que mostrar en árbol todos los artistas y discos que tengo en el directorio Música de mi disco duro externo. Como sería muy extenso solo ojearemos lo poquito que tengo en la misma carpeta del disco del PC.
Como ven, añadiendo la opción -d obtenemos como resultado el árbol de directorios solo con sus subdirectorios. La órden tree monda y lironda nos daría también todos los archivos contenidos en cada directorio. Pero si nuestro árbol resultara demasiado largo como para verlo de un solo golpe de vista podemos hacer uso de la redirección para enviar la salida del comando a un archivo, de esta forma:
tree -d > musica.txt
Así podemos visualizar nuestro árbol con total comodidad con solo abrir el archivo. Y si lo que queremos es imprimir desde el terminal:
tree -d > lp
Siempre que tengamos una impresora correctamente instalada, of course.
Pues de esa lista uno de los discos que más me está gustando es el de la banda usamericana de post-rock Caspian, de los cuales les dejo este "Gone in bloom and bough".
sudo apt-get install tree
Exacto, el comando se llama tree (árbol). Ingenioso, ¿verdad? Pues bien, con él puedo hacer justo lo que perseguía, que no es otra cosa que mostrar en árbol todos los artistas y discos que tengo en el directorio Música de mi disco duro externo. Como sería muy extenso solo ojearemos lo poquito que tengo en la misma carpeta del disco del PC.
Como ven, añadiendo la opción -d obtenemos como resultado el árbol de directorios solo con sus subdirectorios. La órden tree monda y lironda nos daría también todos los archivos contenidos en cada directorio. Pero si nuestro árbol resultara demasiado largo como para verlo de un solo golpe de vista podemos hacer uso de la redirección para enviar la salida del comando a un archivo, de esta forma:
tree -d > musica.txt
Así podemos visualizar nuestro árbol con total comodidad con solo abrir el archivo. Y si lo que queremos es imprimir desde el terminal:
tree -d > lp
Siempre que tengamos una impresora correctamente instalada, of course.
Pues de esa lista uno de los discos que más me está gustando es el de la banda usamericana de post-rock Caspian, de los cuales les dejo este "Gone in bloom and bough".
miércoles, 27 de noviembre de 2013
Tuberías y concatenación de comandos
Resto de entradas con intenciones didácticas en la etiqueta Aprendizaje.
Esta entrada está estrechamente relacionada con la última publicada en este blog. Si con la redirección de comandos empezamos a tomar contacto con una forma de introducir órdenes en la terminal de forma que no se tratara de simplemente de teclear el comando, con las tuberías y las concatenaciones aumentaremos las prestaciones de nuestra shell hasta límites que solo nuestra imaginación podrá establecer.
Pipes o tuberías
Describir las pipes o tuberías es sencillo: se trata de utilizar la salida de un comando (su resultado) como entrada de otro. Hablando en términos matemáticos, 3 + 4 - 5 x 8 sería como una tubería; el resultado de 3 + 4 es el primer operando (la entrada) de la siguiente operación, y su resultado el primer operando la de la siguiente operación.
Para construir una tubería utilizamos en carácter | (Alt Gr + 1) y lo colocamos entre la sucesión de comandos que queremos ejecutar. Para trabajar con tuberías es muy frecuente emplear el comando tee.
tee
Sirve para enviar la entrada del teclado a la pantalla y a uno o más ficheros.
Son ejemplos muy simples pero sirven para observar el potencial que pueden tener varias tuberías consecutivas a la hora de simplificar operaciones en el terminal de comandos.
Concatenación de comandos
La concatenación funciona de manera similar a las tuberías pero con una salvedad: en esta ocasión hablamos de comandos ejecutados consecutivamente, uno tras otro y en la misma línea, pero independientes entre sí. Se pueden separar de dos formas obteniendo dos diferentes resultados:
Un ejemplo clásico de concatenación es teclear en el terminal la siguiente línea:
Y como hemos hablado de pipes escuchemos a la que fue banda de Pepper Keenan, Corrosion Of Conformity, en el vídeoclip de "Albatross".
Esta entrada está estrechamente relacionada con la última publicada en este blog. Si con la redirección de comandos empezamos a tomar contacto con una forma de introducir órdenes en la terminal de forma que no se tratara de simplemente de teclear el comando, con las tuberías y las concatenaciones aumentaremos las prestaciones de nuestra shell hasta límites que solo nuestra imaginación podrá establecer.
Pipes o tuberías
Describir las pipes o tuberías es sencillo: se trata de utilizar la salida de un comando (su resultado) como entrada de otro. Hablando en términos matemáticos, 3 + 4 - 5 x 8 sería como una tubería; el resultado de 3 + 4 es el primer operando (la entrada) de la siguiente operación, y su resultado el primer operando la de la siguiente operación.
Para construir una tubería utilizamos en carácter | (Alt Gr + 1) y lo colocamos entre la sucesión de comandos que queremos ejecutar. Para trabajar con tuberías es muy frecuente emplear el comando tee.
tee
Sirve para enviar la entrada del teclado a la pantalla y a uno o más ficheros.
tee -a: inserta los datos al final del archivo.Veamos algunos ejemplos:
cat grupos001.txt | tee grupos002.txtDe esta forma hemos listado el contenido del fichero grupos001.txt con el comando cat y la salida de dicho comando la hemos enviado, mediante una tubería, al comando tee, el cual nos muestra en pantalla ese contenido y, al mismo tiempo, nos lo inserta en el archivo grupos002.txt que, si no existe, será creado. Sería otra manera de duplicar un archivo, pero es solo un ejemplo de uso.
cat puesto01.txt 2>&1 | tee puesto02.txtLo que hemos hecho ahora es listar el archivo puesto01.txt, enviar el error estándar a la pantalla y enviar la salida del comando cat al comando tee, tubería mediante, para crear puesto02.txt.
cat archivo1 2>&1 | tee -a archivo2Este tercer ejemplo es igual que el anterior pero al incluir el modificador -a al comando tee lo que hacemos en añadir los datos listados de archivo1 en archivo2 si este ya existiera.
Son ejemplos muy simples pero sirven para observar el potencial que pueden tener varias tuberías consecutivas a la hora de simplificar operaciones en el terminal de comandos.
Concatenación de comandos
La concatenación funciona de manera similar a las tuberías pero con una salvedad: en esta ocasión hablamos de comandos ejecutados consecutivamente, uno tras otro y en la misma línea, pero independientes entre sí. Se pueden separar de dos formas obteniendo dos diferentes resultados:
Ejemplo 1: cd /etc ; ls -lAquí, los comandos cd /etc y ls -l están separados por el carácter ; lo que significa que aunque el primero de un error el siguiente se ejecuta de todas formas, y así sucesivamente en caso de haber más.
Ejemplo 2: cd /etc && ls -lEn cambio, si están separados por && al primer error la secuencia de comandos se detiene, sea la concatenación tan larga como sea.
Un ejemplo clásico de concatenación es teclear en el terminal la siguiente línea:
sudo apt-get update ; sudo apt-get upgradeSuele ocurrir que cuando queremos actualizar repositorios y sistema con estos dos comandos el primero se toma su tiempo antes de que podamos ejecutar el segundo, lo que nos lleva a estar pendiente del monitor pasa saber cuando introducir la segunda orden. De este modo actualizaremos nuestros repositorios con apt-get update y nuestra distribución con apt-get upgrade de una sola vez. Es como dejar programadas varias tareas para que se vayan realizando una detrás de la otra hasta quedar todas acabadas.
Y como hemos hablado de pipes escuchemos a la que fue banda de Pepper Keenan, Corrosion Of Conformity, en el vídeoclip de "Albatross".
sábado, 23 de noviembre de 2013
Redirección de comandos
Resto de entradas con intenciones didácticas en la etiqueta Aprendizaje.
Hoy vamos a conocer como redireccionar el resultado de un comando hacia la pantalla o hacia un archivo. Se emplean unos caracteres llamados operadores de redirección o redireccionadores para enviar el resultante de la ejecución de un comando al lugar donde nos interesa tenerlo.
Lo primero a tener claro es que los procesos en GNU/Linux tienen asociados tres archivos ubicados en el directorio /dev y denominados:
/dev/stdin o entrada estándar
/dev/stdout o salida estándar
/dev/stderr o salida de errores
La entrada estándar o stdin es el lugar desde donde un comando obtiene la información a procesar, y por defecto es el teclado.
La salida estándar o stdout es el lugar donde un comando envía el resultado de su ejecución, y por defecto es la pantalla del terminal.
La salida de errores o stderr es el lugar donde un comando envía un mensaje de error en caso de que se produzca; por defecto es la pantalla pero también puede ser un archivo.
Cada uno de estos tres archivos lleva también asociado un número descriptor:
stdin - 0
stdout - 1
stderr - 2
Luego están los operadores, que son los símbolos < y >. Con estos caracteres realizaremos la operativa de redirección. Resumiendolo en una tabla:
Como siempre digo, conviene consultar toda la documentación que cada uno tenga a mano para completar y terminar de entender el concepto de redirección. Y practicar, practicar mucho.
Parece que la ocasión la pintan calva para engarzar un vídeo de One Direction, ¿verdad? Pues lo siento, se van a quedar con las ganas. Ahí tienen a la extinta formación post-metalera Isis que, digamos, transitaron por senderos ligeramente dispares.
Hoy vamos a conocer como redireccionar el resultado de un comando hacia la pantalla o hacia un archivo. Se emplean unos caracteres llamados operadores de redirección o redireccionadores para enviar el resultante de la ejecución de un comando al lugar donde nos interesa tenerlo.
Lo primero a tener claro es que los procesos en GNU/Linux tienen asociados tres archivos ubicados en el directorio /dev y denominados:
/dev/stdin o entrada estándar
/dev/stdout o salida estándar
/dev/stderr o salida de errores
La entrada estándar o stdin es el lugar desde donde un comando obtiene la información a procesar, y por defecto es el teclado.
La salida estándar o stdout es el lugar donde un comando envía el resultado de su ejecución, y por defecto es la pantalla del terminal.
La salida de errores o stderr es el lugar donde un comando envía un mensaje de error en caso de que se produzca; por defecto es la pantalla pero también puede ser un archivo.
Cada uno de estos tres archivos lleva también asociado un número descriptor:
stdin - 0
stdout - 1
stderr - 2
Luego están los operadores, que son los símbolos < y >. Con estos caracteres realizaremos la operativa de redirección. Resumiendolo en una tabla:
- stdin - entrada estándar (teclado) - Descriptor: 0 - Operador: <
- stdout - salida estándar (terminal) - Descriptor: 1 - Operador: >
- stderr - salida de errores (pantalla o archivo) - Descriptor: 2 - Operador: >
Para entender todo esto lo mejor es verlo con ejemplos.
Imaginemos que queremos enviar la salida de un comando a un fichero para verlo con posterioridad, por ejemplo, el listado del contenido de nuestro directorio actual (comando ls -l) al archivo lista.txt. Lo haríamos así:
1) De salida estándar stdout (pantalla) a archivo -1er caso-: ls -l > lista.txt
Así, en lugar que ver el resultado del comando ls -l por pantalla obtendríamos un archivo llamado lista.txt en el que aparece el contenido de nuestro directorio actual según los términos del comando ls -l. Si este archivo ya existiera lo sobreescribiría. Veamos más ejemplos.
2) De salida estándar stdout (pantalla) a archivo -2º caso-: ls -l >> lista.txt
En este caso el redireccionador es >> y lo que conseguimos con él es añadir el resultado del comando ls -l al archivo lista.txt ya existente. Podemos así añadir contenido al archivo repetidas veces si no queremos crear uno nuevo cada vez o machacar el ya existente.
3) De error estándar stderr a archivo (1er caso): ls -l 2> errores.txt
Habrá ocasiones en que un comando nos de error al ejecutarse, total o parcialmente, y en esa ocasión quizá sea útil ver pausadamente en qué consiste ese error. Para eso está la salida de errores y lo más común es derivarla a un archivo, en este caso errores.txt. Recuerden que si ya existe lo sobreescribirá. Si no se produce ningún error el archivo se creará sin contenido alguno. No saldrá nada por pantalla.
4) De error estándar stderr a a archivo (2º caso): ls -l 2>> errores.txtMismo caso que el que vimos más arriba; si el redireccionador es doble lo que hacemos es añadir contenido al archivo de errores designado (que sigue siendo errores.txt). Tampoco saldrá nada por pantalla.
5) De error estándar stderr a la salida estándar stdout (pantalla): cp * 2>&1En esta ocasión usando los descriptores hemos redireccionado la salida de error del comando cp * (copiar todo) a la salida estándar (la pantalla) mediante el carácter &. De esta forma si no es posible copiar todo lo designado con el comando cp por el motivo que sea (como puede ser no tener privilegios para hacerlo) los mensajes de error serán visualizados por la salida estándar (pantalla).
6) De un archivo al comando por la entrada estándar stdin (teclado): grep "López" < empleados.txtAquí hemos empleado el comando grep, el cual sirve para filtrar resultados en función del parámetro introducido, que ha sido "López". De este modo, dentro de un hipotético archivo llamado empleados.txt se han buscado todas las líneas de texto que contengan "López" y el resultado de esta búsqueda se ha enviado a la salida estándar (pantalla). Dicho de otro modo, el resultado de la búsqueda se emplea como entrada del comando grep y el resultado de su ejecución lo vemos por la pantalla.
7) De error estándar stderr a dispositivo nulo: ls -l 2> /dev/nullDe esta forma los errores producidos al ejecutar el comando ls -l irán a un dispositivo nulo y se perderán.
8) De salida estándar stdout a dispositivo nulo: ls -l > /dev/nullNo hay mucho más que explicar de este caso: el comando se ejecuta y su resultado se pierde por el agujero negro de la salida nula.
Como siempre digo, conviene consultar toda la documentación que cada uno tenga a mano para completar y terminar de entender el concepto de redirección. Y practicar, practicar mucho.
Parece que la ocasión la pintan calva para engarzar un vídeo de One Direction, ¿verdad? Pues lo siento, se van a quedar con las ganas. Ahí tienen a la extinta formación post-metalera Isis que, digamos, transitaron por senderos ligeramente dispares.
sábado, 9 de noviembre de 2013
Más comandos para operar con archivos y directorios
Resto de entradas con intenciones didácticas en la etiqueta Aprendizaje.
Ya hemos hablado de como trabajar con archivos y directorios pero no es posible condensar todo el material que bajo ese título podría caber sin convertir la entrada en interminable. De tal modo, nuevamente vamos a vernos las caras con mandatos de terminal que nos ofrecen distintas prestaciones según la tarea que estemos realizando.
alias
Este comando ya fue tratado en el blog para un ejemplo concreto, pero no quiero que se quede fuera del tratamiento general que es la tónica del blog. Sirve para crear un atajo a un comando fijándole un nombre.
Sirve para eliminar un alias existente.
ln
Comando para crear enlaces a archivos. Hay enlaces dos tipos de enlaces: duros y simbólicos. El enlace duro es un duplicado del archivo al que enlaza pero con otro nombre. Comparte inodo (estructura de datos que conserva cada archivo) con el original por lo que no pueden crearse en particiones o unidades distintas. El enlace simbólico funciona como un acceso directo de Windows, tenga o no el mismo nombre. Pueden crearse al margen de la unidad o partición donde se encuentren.
Comando que muestra una serie de datos precisos acerca de un archivo o un directorio como nombre, tamaño, bloques que ocupa, tipo de archivo, inodo, enlaces, ID, GUID, propietario, grupos y fechas de acceso y modificación.
file
Comando simple que nos informa de si un objeto es un directorio o un archivo, y de qué tipo si es lo segundo.
cmp
Compara dos archivos y nos dice si son o no distintos. Nos informa en qué número de línea está la diferencia.
diff
Compara dos archivos línea a línea y nos dice las diferencias, algo que resulta más útil cuando se trata de archivos de texto.
wc
Este comando no siempre viene por defecto en nuestra distribución por lo que, en tal caso, hay que instalarlo si lo queremos usar. Sirve para convertir paquetes de software de, entre otros, formato .deb (Debian), .rpm (Red Hat) y .tar.gz (Slackware).
Y como hemos hablado del comando alien, nada más apropiado que evocar el trailer original de 1979 de la mítica película de Ridley Scott.
Ya hemos hablado de como trabajar con archivos y directorios pero no es posible condensar todo el material que bajo ese título podría caber sin convertir la entrada en interminable. De tal modo, nuevamente vamos a vernos las caras con mandatos de terminal que nos ofrecen distintas prestaciones según la tarea que estemos realizando.
alias
Este comando ya fue tratado en el blog para un ejemplo concreto, pero no quiero que se quede fuera del tratamiento general que es la tónica del blog. Sirve para crear un atajo a un comando fijándole un nombre.
alias -a: elimina las definiciones de alias en el entorno de ejecución actual.
alias -p: muestra la lista de alias existente en el archivo .bashrc con el formato nombre_alias=valor.
alias instalar="sudo apt-get install": crea un atajo para el comando sudo apt-get install llamado instalar.
alias lhost="cd /var/www/html": crea un atajo de acceso al directorio /var/www/html/ llamado lhost.
/comando_alias: tecleado de esta manera, en caso de invocar un alias cuyo nombre coincida con el de otro comando, no se tiene en cuenta dicho alias.
~/.bashrc: archivo oculto donde se incluyen los alias que deseamos que se vuelvan permanentes.unalias
Sirve para eliminar un alias existente.
ln
Comando para crear enlaces a archivos. Hay enlaces dos tipos de enlaces: duros y simbólicos. El enlace duro es un duplicado del archivo al que enlaza pero con otro nombre. Comparte inodo (estructura de datos que conserva cada archivo) con el original por lo que no pueden crearse en particiones o unidades distintas. El enlace simbólico funciona como un acceso directo de Windows, tenga o no el mismo nombre. Pueden crearse al margen de la unidad o partición donde se encuentren.
ln archivo1 archivo2: crea el enlace duro archivo2 a partir de archivo1.
ln -s archivo1 archivo2: crea el enlace simbólico archivo2 a partir de archivo1.stat
Comando que muestra una serie de datos precisos acerca de un archivo o un directorio como nombre, tamaño, bloques que ocupa, tipo de archivo, inodo, enlaces, ID, GUID, propietario, grupos y fechas de acceso y modificación.
file
Comando simple que nos informa de si un objeto es un directorio o un archivo, y de qué tipo si es lo segundo.
cmp
Compara dos archivos y nos dice si son o no distintos. Nos informa en qué número de línea está la diferencia.
diff
Compara dos archivos línea a línea y nos dice las diferencias, algo que resulta más útil cuando se trata de archivos de texto.
wc
Cuenta las líneas, palabras y caracteres de un archivo.
wc -c: muestra solo el número de caracteres.
wc -w: muestra solo el número de palabras.
wc -l: muestra solo el número de líneas.alien
Este comando no siempre viene por defecto en nuestra distribución por lo que, en tal caso, hay que instalarlo si lo queremos usar. Sirve para convertir paquetes de software de, entre otros, formato .deb (Debian), .rpm (Red Hat) y .tar.gz (Slackware).
alien -d archivo.rpm/tar.gz: para generar un paquete .deb a partir de un .rpm o un .tar.gz. (opción por defecto).
alien -t archivo.deb/rpm: para generar un paquete .tar.gz a partir de un .deb o un .rpm.
alien -r archivo.deb/tar.gz: para generar un paquete .rpm a partir de un .deb o un .tar.gz.Nuevamente les recuerdo que solo una pequeña muestra de las opciones existentes son las mostradas aquí. Acudan a la ayuda del terminal para recabar más información.
Y como hemos hablado del comando alien, nada más apropiado que evocar el trailer original de 1979 de la mítica película de Ridley Scott.
Suscribirse a:
Entradas (Atom)
