Mostrando entradas con la etiqueta ubuntu. Mostrar todas las entradas
Mostrando entradas con la etiqueta ubuntu. Mostrar todas las entradas

jueves, 25 de febrero de 2016

Comprobar archivos duplicados desde el terminal Linux (Fdupes)


terminal







Cuando trabajamos con muchos archivos es fácil que tengamos el mismo archivo repetido en distintas carpetas o con distinto nombre. Por eso resulta útil comprobar la existencia de archivos repetidos y evitar así redundancias y espacio en disco mal aprovechado. Veremos cómo realizar dicha comprobación utilizando la aplicación fdupes. Es verdaderamente rápida y funciona realizando distintas comprobaciones: primero el tamaño de los archivos, el md5 parcialmente, el md5 completamente y finalmente la comparación byte a byte. Evidentemente, si en la primera comprobación resuelve que dos archivos no son iguales, no pasa a la segunda, y así sucesivamente.
Lo primero es instalar la aplicación, si estamos en Arch Linux:
sudo pacman -S fdupes

En Ubuntu / Debian sería así:
sudo apt-get install fdupes

Luego nos situamos en el directorio correspondiente y ejecutamos:
fdupes -r .

Con -r lo que hacemos es la comprobación de forma recursiva (buscamos en los subdirectorios).
Si añadimos la opción -d se nos preguntará qué archivos queremos borrar o si queremos mantenerlos todos. Al final nos mostrará un listado de archivos que no son iguales entre sí:

terminal

Fuentes:

http://www.commandlinefu.com/commands/view/3555/find-duplicate-files-based-on-size-first-then-md5-hash https://en.wikipedia.org/wiki/Fdupes https://github.com/adrianlopezroche/fdupes




miércoles, 30 de septiembre de 2015

Usar una segunda pantalla en i3 wm

VGA
Si eres programador sabrás lo útil que es utilizar una segunda pantalla para trabajar. Todos los sistemas operativos son capaces de gestionar y configurar esta característica fácilmente. Pero si utilizas un window manager como i3 también sabrás que no existe un interfaz gráfico para configurarlo y hay que usar el terminal. Vamos a ver cómo configurarlo utilizando como ejemplo una conexión por VGA.
Lo primero que tenemos que hacer es conectar la segunda pantalla (monitor) a nuestro pc y a continuación ejecutar en el terminal ésto:

xrandr

Con ello veremos los monitores conectados a nuestro PC. La salida en mi caso fue la siguiente:
Screen 0: minimum 8 x 8, current 2560 x 1024, maximum 32767 x 32767
LVDS1 connected primary 1280x800+0+0 (normal left inverted right x axis y axis) 0mm x 0mm
   1280x800      59.94*+
   1024x768      60.00  
   800x600       60.32    56.25  
   640x480       59.94  
   640x400       60.00  
VGA1 connected 1280x1024+1280+0 (normal left inverted right x axis y axis) 338mm x 270mm
   1280x1024     60.02*+  75.02  
   1152x864      75.00  
   1024x768      75.08    75.03    60.00  
   832x624       74.55  
   800x600       75.00    60.32  
   640x480       75.00    60.00  
   720x400       70.08  
VIRTUAL1 disconnected (normal left inverted right x axis y axis)

De modo que deberemos ejecutar lo siguiente desde el terminal para que funcionen ambos monitores:
xrandr --output LVDS1 --mode 1280x800; xrandr --output VGA1 --mode 1280x1024 --right-of LVDS1

Lo que se hace es definir el mode o resolución de cada monitor y además, señalamos que el segundo monitor (VGA1) lo queremos poner a la derecha del principal (LVDS1). En base a la instrucción anterior podemos crear un script, que llevará el siguiente código:
#!/bin/bash
IN="LVDS1"
EXT="VGA1"
if (xrandr | grep "$EXT disconnected")
then
    xrandr --output $IN --auto --output $EXT --off
else
    xrandr --output $IN --auto --primary --output $EXT --auto --right-of $IN
fi

Aquí comprobamos si el segundo monitor está conectado o no. Si no está conectado, lo deshabilitamos. Si está conectado, lo ponemos a la derecha del principal, como hicimos anteriormente. Además, utilizamos –auto para que se configure el mode de forma automática.
Si queremos que el script se ejecute cada vez que iniciemos sesión en el window manager i3, solamente tenemos que añadir la siguiente línea al final del archivo config que se encuentra en la carpeta .i3 (normalmente ~/.i3) y que se encargará de llamar al script que hemos creado.
exec --no-startup-id ~/ruta_script/nombre_script.sh

Espero que os haya sido útil. Si tenéis alguna duda, podéis utilizar los comentarios.


Fuentes

https://wiki.archlinux.org/index.php/Xrandr
http://www.x.org/archive/X11R7.5/doc/man/man1/xrandr.1.html




martes, 29 de septiembre de 2015

Exportar notas de Kindle en Linux

Kindle
Los que tengáis el lector de libros electrónicos Kindle seguramente sabréis cómo gestiona las notas de vuestros libros y documentos. En la memoria interna hay una carpeta llamada documents y dentro hay un archivo llamado My Clippings.txt que es el que guarda todas las notas, subrayados y marcas que hagamos en nuestros documentos, ordenados cronológicamente. Por ejemplo:

==========
blogs_2015.07.26 
- Tu subrayado en la posición 3115-3116 | Añadido el lunes, 3 de agosto de 2015 23:57:42

GitHub lanza la primera edición estable de su editor Atom | La mirada del replicante
==========
blogs_20150817_2121
- Tu subrayado en la posición 42-42 | Añadido el sábado, 22 de agosto de 2015 16:27:23

Tails 1.5
==========
La conjura de los necios (John Kennedy Toole)
- Tu marcador en la posición 2179 | Añadido el domingo, 30 de agosto de 2015 8:35:45
==========
La conjura de los necios (John Kennedy Toole)
- Tu marcador en la posición 2236 | Añadido el domingo, 30 de agosto de 2015 23:57:49
==========

Si queremos exportar nuestras notas, lo que podemos hacer es conectar mediante USB nuestro Kindle y copiar donde deseemos el archivo My Clippings.txt . ¿Cual es el problema?, que todas esas notas y subrados de nuestros libros están mezclados, de modo que no podemos exportar únicamente las notas de un determinado libro. Claro, se podría hacer a mano, copiando y pegando pero sería un proceso de lo más tedioso. Por eso vamos a explicar cómo hacerlo rápidamente utilizando el terminal Linux y en concreto el comando sed. Ya vimos en el post Reemplazar texto de varios archivos en Linux el uso de este comando pero en esta ocasión no reemplazaremos texto sino que lo redireccionaremos a un nuevo archivo.
Veamos:
sed -n '/La conjura de los necios/,/==========/p' My\ Clippings.txt > La conjura de los necios

Ésto lo que hará será copiar todas las subcadenas entre La conjura de los necios y ========== y las copiará a un archivo llamado La conjura de los necios. Ésta sería la idea básica, pero existe un pequeño escollo que salvar, que es el caso de que la cadena de entrada tenga espacios en blanco. En el siguiente script se soluciona:
#!/bin/bash
read -r -p "Indica el nombre (o parte del nombre) del libro:" archivo
busqueda=$(echo"$archivo" | sed 's/ /\\ /g')
sed -n '/'"$busqueda"'/,/==========/p' My\ Clippings.txt > $archivo.txt
echo"Creado el archivo "$archivo.txt

La línea busqueda=$(echo “$archivo” | sed ‘s/ /\ /g’) del script lo que hace es sustituir los espacios en blanco de la cadena de entrada y los sustituye por barra invertida y espacio en blanco. Ésto se hace así para que la búsqueda con sed se haga correctamente en caso de que la cadena de entrada tenga espacios en blanco, como pasa con La conjura de los necios.

Nota: La búsqueda es sensible a mayúsculas y minúsculas.
Espero que os sea útil. Podéis utilizar los comentarios para aclarar cualquier duda.


Fuentes:

http://linux.die.net/man/1/sed
http://stackoverflow.com/questions/2462385/getting-an-ambiguous-redirect-error




lunes, 28 de septiembre de 2015

CMUS: Reproductor de audio desde el terminal Linux

cmus headphones

Cmus es probablemente el reproductor musical más conocido dentro de los que se ejecutan desde el terminal. Aunque haya gente a la que las aplicaciones de terminal no le agraden demasiado, pienso que Cmus merece una oportunidad: por su poco consumo de recursos, por la facilidad para configurarlo a nuestro gusto y porque se puede controlar utilizando únicamente el teclado. Si estás familiarizado con el editor Vi, utilizar Cmus te resultará sencillo, ya que se utilizan comandos muy parecidos.


Instalación

Desde Debian/Ubuntu:
sudo add-apt-repository ppa:jmuc/cmus
sudo apt-get update
sudo apt-get install cmus

Desde Arch Linux y derivados:
sudo pacman -S cmus



Vistas

La aplicación se divide en varias vistas o pantallas. Podemos cambiar a cada una de ellas pulsando su número correspondiente:
1. Librería: Es la vista por defecto. Se divide en dos pestañas: album/artista y canciones del álbum seleccionado. Podemos pasar de una a otra pulsando la tecla tab.
2. Librería ordenada: Muestra la vista de playlist, permitiendo saltar a canciones (o tracks) específicos. Ésta lista puede ser filtrada utilizando la vista 6.
3. Lista de reproducción.
4. Cola de reproducción.
5. Navegador de archivos.
6. Filtros: Se trata de una lista de filtros predefinidos para aplicar a la librería (vista 2).
7. Configuración Muestra los comandos y las teclas rápidas.


Uso básico

Lo primero que debemos hacer es añadir nuestra música a la librería. Se puede hacer mediante el siguiente comando:
add: /ruta/de/audio

Ejemplo:
add: ~/mi_musica

Para reproducir una canción simplemente nos situamos sobre ella y pulsamos intro. Sabremos desde qué vista se está reproduciendo la canción mirando en la parte inferior derecha, en la que se indicará playlist, queue, all library … 




Los controles básicos de reproducción son los siguientes:
  • z: Canción Anterior
  • c: Pause/Unpause
  • v: Stop
  • b: Siguiente canción
  • + / - :: Subir / bajar volumen
También pueden resultar útiles las siguientes teclas:
  • e: Añadir canción/álbum a la cola
  • y: Añadir canción/álbum a la lista
  • p, P: Ordenar la canción dentro de la cola o la lista
  • Supr: Eliminar canción/álbum de la cola ó lista
Si queremos vaciar una la lista de reproducción o la cola de reproducción, nos colocamos en la vista correspondiente y escribimos lo siguiente:
:clear



Busqueda de una canción

En la segunda vista podemos saltar a una canción usando el caracter / , para ello hay que escribir parte del título de la canción (al estilo Vi) y pulsar intro dos veces para reproducirla. O podemos pulsar n para pasar a la siguiente ocurrencia (también al estilo Vi).



Customización de la vista lista ordenada

Podemos filtrar las canciones para que sólo se muestren las de duración menor a dos minutos mediante:
:filter duration<120

O que sólo se muestren los de un estilo en concreto:
:filter genre=”rock”

Para combinar ambos filtros:
:filter duration<120 amp="" genre="”rock”</code">

Podemos anular cualquier filtro mediante:
:filter



Cmus tiene muchas más características de las que aquí se citan y que te animo a que vayas descubriendo conforme vayas utilizándolo, si así lo deseas. 



Fuentes

http://www.increasinglyadequate.com/cmus.html
http://linux.die.net/man/1/cmus




viernes, 15 de mayo de 2015

Convertir imágenes PNG a JPG de forma masiva en Linux














En este post vamos a hablar de cómo convertir imágenes PNG en imágenes JPG usando la utilidad mogrify de ImageMagick. 


Instalación

Tenemos que instalar la utilidad del modo habitual:

Debian / Ubuntu y derivados:
sudo apt-get install imagemagick

Arch Linux y derivados:
pacman -S imagemagick 

Podéis encontrar más información de cómo instalarla desde aquí: http://www.imagemagick.org .



Ejemplos de uso

Una vez instalada podemos realizar la conversión. Veamos algunos ejemplos:

Convertir una imagen PNG a JPG:
mogrify -format jpg archivo.png 


Convertir todas las imágenes png de la carpeta actual a imágenes JPG:
mogrify -format jpg *.png 


Convertir todas las imágenes del directorio actual y todas las subcarpetas. Nos ayudaremos del comando find:
find -name *.png -exec mogrify -format jpg {} ';'


Una vez que hayamos hayamos realizado la conversión, quizás queramos eliminar las imágenes PNG (cuidado con este comando, ya que eliminará todas las imágenes PNG que haya en el directorio actual y todos sus subdirectorios. Debemos asegurarnos previamente de cual es nuestro directorio actual con pwd):
find -name *.png -exec rm {} ';'


Hemos podido ver algunos ejemplos de uso, aunque la funcionalidad de ImageMagick es mucho más amplia, puesto que es capaz de realizar conversiones entre más de 100 formatos.



Fuentes

http://superuser.com/questions/71028/batch-converting-png-to-jpg-in-linux




sábado, 9 de mayo de 2015

Uso del comando tr en Linux










El comando tr se usa para sustituir o eliminar determinados caracteres. Es realmente útil y lo mejor que podemos hacer para comprobar su funcionamiento es ilustrarlo con algunos ejemplos:

Sustituir los caracteres en minúscula por caracteres en mayúscula:
$ echo “Hola Mundo” | tr a-z A-Z
HOLA MUNDO


Sustituir los espacios en blanco por tabuladores:
$ echo "Hola Mundo Hola Mundo" | tr [:space:] '\t'
Hola    Mundo    Hola    Mundo


Suprimir la repetición de espacios en blanco:
$ echo "Hola     que    tal   " | tr -s [:space:]
Hola que tal


Eliminar un caracter concreto:
$ echo "Hola que tal" | tr -d 'a'
Hol que tl


Dejar sólo los caractéres numéricos:
$ echo "El día 14 cumpliré 23 años" | tr -cd [:digit:]
1423


Unir las líneas de todo un archivo en una sóla línea:
tr -s '\n' ' ' < prueba.txt


Como vemos, el comando tr tiene muchas y variadas aplicaciones. Aquí sólo he mostrado algunos ejemplos que espero que sean útiles y que sirvan para iniciarse en su uso.




miércoles, 11 de febrero de 2015

Acceso directo a aplicación ejecutada mediante Wine (Linux)













Vamos a crear un lanzador que nos permita ejecutar una aplicación desde Wine con solo hacer doble click desde el escritorio. Para ello vamos a seguir los siguientes pasos:

  1. Ejecutar winecfg desde el terminal.
  2. Pulsar en la pestaña Unidades.
  3. Configurar una unidad. Para ello tenemos que pulsar en “Añadir…” , seleccionar una letra (por ejemplo la D) y finalmente pulsar rellenar el campo Ruta: con la partición donde se encuentre la aplicación (por ejemplo: /media/datos ).
  4. Crear un lanzador en el escritorio, pulsando con el botón derecho y pulsando en “Crear lanzador”. En el campo “Comando” deberá poner lo siguiente:
     wine "RUTA_EJECUTABLE"

      Donde RUTA_EJECUTABLE será la ruta completa del ejecutable, usando la notación Windows. Por ejemplo:
wine "D:\Aplicaciones\notepad.exe"

      Démonos cuenta de que la letra D corresponde a la unidad configurada en el punto 3 (en mi caso correspondería a /media/datos ).


Y eso es todo. Con este truco podremos ejecutar cómoda y rápidamente las aplicaciones para Windows desde nuestra distribución Linux. Para resolver cualquier duda podéis utilizar los comentarios.




martes, 3 de febrero de 2015

Copiar / cortar y pegar en el editor Vi












Como en cualquier editor de texto, las operaciones de copiar y pegarcortar y pegar) son muy importantes. Vamos a ver como hacerlo en Vi:
  1. Posicionarse al principio del texto que queremos seleccionar.
  2. Presionar v para iniciar la selección (también podemos seleccionar la línea completa con V ).
  3. Movernos con las teclas de cursor para seleccionar el texto deseado.
  4. Presionar d para cortar o y para copiar.
  5. Movernos a la línea donde queremos pegar el texto.
  6. Presionar p para copiar después del cursor o P para pegar antes del cursor.


Se puede hacer también una copia múltiple. Podemos guardar varios fragmentos de texto, cada uno en un registro distinto. Cada registro será identificado por una letra.

Por ejemplo, seleccionamos Madrid y luego pulsamos "ay (en el registro a se habrá guardado el texto Madrid). Luego seleccionamos Barcelona y pulsamos "by (en el registro b se habrá guardado el texto Barcelona). Ahora podremos irnos a otra parte del texto y pegar la palabra Madrid pulsando "ap y la palabra Barcelona pulsando "bp .

Lo mejor es practicar, para ir cogiendo el manejo de estos y otros muchos comandos. Espero que haya sido de utilidad. Podéis utilizar los comentarios para plantear dudas.


Fuentes:

http://vim.wikia.com/wiki/Copy,_cut_and_paste




jueves, 22 de mayo de 2014

Mostrar Barra de Progreso al Copiar Archivos desde el Terminal (Linux)











Quizás alguna vez nos toque copiar archivos de gran tamaño y por comodidad o constumbre queramos utilizar el terminal de Linux. Como sabemos, se puede hacer facilmente con la instrucción cp, pero tiene un inconveniente: no da ningún tipo de información de cuanto llevamos copiado, de la estimación de tiempo restante, de qué archivos se han copiado y de cuales se están copiando ... Es decir, nos faltaría toda esa información que nos da una barra de progreso cuando utilizamos un gestor de archivos con interfaz gráfica. ¿Como podemos obtenerla cuando estamos utilizando el terminal?. A continuación lo explico.

En vez de utilizar el comando "cp" vamos a utilizar "rsync --progress". No nos muestra una barra de progreso tal y como la entendemos, pero sí nos aporta la misma información. Veamos unos ejemplos y una captura de pantalla:


  • Copiar un archivo:
rsync --progress  /home/usuario/videos/concierto.mp4 /media/datos/videos


  • Copiar un directorio:
rsync --progress -r /home/usuario/videos /media/datos/


A continuación muestro una captura de pantalla:




Como vemos, nos da información individual de cada archivo, indicando la cantidad de información copiada, el porcentaje, la tasa y el tiempo estimado para la finalización. Ahora sí tendremos una idea más precisa de qué está pasando.

Pero la funcionalidad de rsync es mucho más amplia, así que recomiendo visitar su web oficial donde encontraréis documentación, ejemplos y demás: 
http://rsync.samba.org. Además, en caso de que en tu distribución no venga instalada esta utilidad (y tampoco la encontréis en los repositorios), en esa misma página podréis descargarla.

Espero que haya sido útil. Para cualquier duda podéis utilizar los comentarios. 


Fuentes:

http://everythinglinux.org/rsync/
http://apple.stackexchange.com/questions/19121/will-terminal-show-a-progress-bar-when-i-copy-with-cp




lunes, 10 de marzo de 2014

Comparar dos directorios rápidamente en Linux









En Linux se pueden comparar dos directorios o carpetas mediante el comando diff. Por ejemplo, si ejecutamos lo siguiente:
diff directorio1 directorio2

Ésto nos indicará qué archivos están en un directorio y no en otro. En caso de que haya dos archivos con el mismo nombre y su contenido sea distinto, también se indicará.

El comando anterior tiene un inconveniente, y es que puede ser demasiado lento. Si los directorios contienen muchos archivos o si la unidad de almacenamiento es algo lenta, el proceso puede eternizarse.  Pero el siguiente comando solucionará ésto de un plumazo:

diff <(cd dir1 && find | sort) <(cd dir2 && find | sort)


Como vemos, se sigue usando el comando diff, pero en vez de comparar los archivos, compara el listado ordenado del directorio.

Si lo probáis veréis lo potente que puede llegar a ser. Podéis utilizar los comentarios si os surge alguna pregunta.




Fuentes:




miércoles, 4 de diciembre de 2013

Organizar archivos en carpetas según su fecha (consola Linux)








En una entrada anterior vimos cómo Organizar / mover archivos a distintas carpetas según su extensión (Bash Script). Hoy veremos un caso parecido, pero esta vez nos fijaremos en la fecha del archivo. Por ejemplo, queremos ordenar nuestro directorio de fotos por meses. Pues ésto lo podemos hacer de forma sencilla desde la consola de linux.

Lo primero es abrir el terminal y situarnos en el directorio que queremos ordenar y crear los directorios. Para simplificar el ejemplo crearemos solo dos:
mkdir noviembre

mkdir diciembre


A continuación crearemos un archivo auxiliar que nos servirá de margen inferior para mover las fotos. Es decir, moveremos a una carpeta todos los archivos cuya fecha de modificación sea más reciente que la fecha del archivo auxiliar. Por tanto, deberemos empezar por los archivos más recientes (en este caso por el més más reciente: Diciembre, después Noviembre, ...).

Empezaremos por el mes de diciembre, fijando la fecha del archivo auxiliar al 1 de diciembre:
touch -t 201312010000 auxiliar

Y moveremos todos los archivos más recientes que el archivo auxiliar a la carpeta diciembre:
find -maxdepth 1 -type f -newer auxiliar -exec mv {} diciembre \;

Procederemos de forma similar con el mes de noviembre
touch -t 201311010000 auxiliar

find -maxdepth 1 -type f -newer auxiliar -exec mv {} noviembre \;

Y haremos lo mismo con el resto de meses.

Explicación detallada de los comandos:

touch -t 201312010000 auxiliar

Crea un archivo con la fecha y hora de modificación 01/12/2013 00:00

find -maxdepth 1 -type f -newer auxiliar -exec mv {} diciembre \;

Ésta instrucción se puede dividir en dos*
  • “find -maxdepth 1 -type f -newer auxiliar” lo que hace es listar los archivos del directorio actual (pero no los de los subdirectorios) que sean más recientes que la fecha de modificación que el archivo auxiliar.
  • “-exec mv {} diciembre \;” mueve los archivos listados por find a la carpeta diciembre.

Acabamos de ver una forma de organizar nuestros archivos utilizando solamente la consola. Aunque en principio parezca engorroso, resulta mucho más sencillo y cómodo que hacerlo de forma gráfica (utilizando Nemo o Nautilus), si tenemos un gran número de archivos que ordenar. Espero que os sirva.




Fuentes:







lunes, 30 de septiembre de 2013

Terminal linux desde el navegador web













Hace un tiempo estaba buscando una utilidad que me permitiera ejecutar un terminal Linux (también conocido como consola Linux) desde un navegador web. Lo necesitaba ya que quería hacer unas pruebas y no tenía ningún equipo con Linux. El hecho de que se pueda ejecutar desde el navegador es importante, porque no necesitaría instalación y sabemos cualquier equipo (que no sea demasiado antiguo) tiene un navegador instalado.

Mi búsqueda llegó a buen puerto cuando encontré la página:  

http://bellard.org/jslinux/  

Esta pequeña maravilla creada por Fabrice Bellard es capaz de emular un terminal Linux y nos permite jugar con los comandos Linux sin miedo a cargarnos algo.

Para mí, es una herramienta imprescindible a la que de vez en cuando vuelvo. Sí es cierto que tiene ciertas limitaciones con respecto a un terminal real. Por ejemplo, no permite hacer un copy/paste directamente con Ctrl+C y Ctrl+V, sino que hay que pegarlo en un campo de texto que hay en la página y ejecutar “cat < /dev/clipboard > /tmp/myfile”, para que el contenido del portapapeles quede guardado en un archivo temporal (todo ésto está explicado aquí: http://bellard.org/jslinux/faq.html). Tampoco están implementados comandos como “man”. Como veréis, la página es bastante simple, sólo con acceder os aparecerá el prompt.




 












Por todo ello, sólo me queda felicitar al creador por su excelente trabajo. Aun más si tenemos en cuenta que este proyecto ha sido programado en Javascript, un lenguaje que para muchos resulta engorroso y poco amigable.

Espero que le déis una oportunidad y hagáis algunas pruebas. Estoy seguro de que vais a guardarla en los marcadores de vuestro navegador.




Buscar un proceso entre los que se están ejecutando. Comandos ps y grep











A continuación voy a describir cómo buscar un proceso dentro de la lista de procesos que se están ejecutando. Ésto puede ser útil si existen muchos procesos y queremos buscar uno o varios de los que sepamos su nombre o parte de su nombre. Para ello utilizaremos conjuntamente los comandos ps y fgrep. Se haría de la siguiente forma:
ps -ef | grep (cadena)


Con “ps -ef” obtenemos un listado de todos los procesos que se están ejecutando. Luego con grep (cadena) filtramos esa lista y nos quedamos sólo con los que contengan la cadena.

Ejemplo:
ps -ef | grep sh


Ésto nos mostrará todos los procesos que se están ejecutando y que contengan la cadena sh. La salida que daría sería parecida a ésta (las columnas de izquierda a derecha serían: PID, usuario, tiempo, comando):
    1 root       0:00 /bin/sh /sbin/init                                       
   36 root       0:00 [pdflush]                                                
   37 root       0:00 [pdflush]                                                
  155 root       0:00 sh                                                       
  161 root       0:00 grep sh




Podemos ir un paso más allá y quitar algunas entradas del listado que no nos interesen. Por ejemplo, si queremos que se muestren todos los procesos que contengan la cadena “ap” pero que se omitan los que contienen la cadena “grep”. El comando para hacer eso sería así:
ps -ef | grep ap | grep -v grep


Como podemos ver, los comandos ps y grep utilizados en conjunción suponen una herramienta imprescindible y potente en la administración de un equipo o sistema.




Revisar archivos de log mediante Tail (Linux)










Un archivo de log es una especie de registro donde quedan guardados los distintos eventos que ocurren en un equipo. En cada entrada de ese registro se pueden guardan datos como la fecha y hora, usuario, procesos, mensajes de error, warnings, ... Los archivos de log son muy importantes para saber qué está pasando o ha pasado y de este modo depurar y solucionar errores. Éstos archivos suelen contener mucha información y leerlos e interpretarlos puede ser una tarea complicada y tediosa. El comando que veremos a continuación nos facilitará bastante las cosas, y no es otro que "tail".

Veamos las operaciones más frecuentes de éste comando (por defecto mostrará las diez últimas líneas):
  • Muestra las últimas líneas del archivo:
tail archivo.log



  • Muestra las N últimas líneas del archivo (sustituir N por el número que deseemos):
tail -n N archivo.log



  • Muestra el contenido del archivo en tiempo real. Esto es útil cuando el archivo de log está creciendo continuamente. Para pararlo basta con hacer un CTRL+C :
tail -f archivo.log


Puede resultar muy útil también el redirigir la salida hacia otro archivo:


  • Redirecciona las N últimas líneas al archivo depurar.txt :
tail -N  archivo.log > depurar.txt



  • Redirecciona la salida al archivo depurar.txt :
tail -f  archivo.log > depurar.txt


Como vemos, el comando tail nos ayuda a centrarnos solo en la información que nos interesa del archivo de log. Espero que os haya sido de ayuda.

 

 

Fuentes:

http://www.thegeekstuff.com/2010/11/50-linux-commands/




lunes, 4 de febrero de 2013

Ejecutar un comando linux dentro de otro comando linux.




En este caso vamos a ver cómo ejecutar un comando linux dentro de otro comando linux. En concreto, en el ejemplo veremos como copiar todos los archivos resultantes de hacer un búsqueda con el comando grep. Primero veamos sólo la parte de la búsqueda:


Buscar todos los archivos que contengan una palabra determinada:


grep -r -l "palabra" ruta



Ejemplo:

grep -r -l "tomate" /home/usuario/



Copiar todos los archivos que contengan una palabra determinada:

Aquí es cuando vamos a embeber (osea, incrustar o insertar) el comando grep dentro del comando cp, es decir vamos a ejecutar la salida del comando grep como parte del comando cp:

cp $(grep -r -l "palabra" ruta1) ruta2


 
Ejemplo:

cp $(grep -r -l "tomate") /home/usuario



Tomando como ejemplo lo anterior, podemos construir comandos que a su vez contengan internamente otros, lo que da lugar a crear operaciones complejas a partir de comandos sencillos.




miércoles, 19 de diciembre de 2012

Cómo saber si se está ejecutando un proceso (Linux)









 
Si queremos conocer todos los procesos que se están ejecutando en nuestro equipo, simplemente tenemos que teclear lo siguiente en consola:
ps -e


Si queremos saber si un proceso se está ejecutando y conocemos su nombre o parte de él, debemos usar el siguiente comando:
ps -e | grep nombre_proceso


Nos aparecerán todos los procesos que contengan esa cadena en su nombre. Si no nos develve ninguna línea será porque dicho proceso no se está ejecutando.  

Ejemplo:
ps -e | grep firefox




Nota: El símbolo " | " es una tubería o pipe. Sirve para aplicar la salida de un comando a la entrada de otro comando. Puedes encontrar más información aquí: 
http://dns.bdat.net/documentos/cursos/ar01s138.html




jueves, 13 de diciembre de 2012

Iniciar una aplicación siempre en un escritorio específico (Ubuntu / Linux Mint)









Como sabemos, en la mayoría de distribuciones linux podemos disponer de varios escritorios o workspaces que permiten tener en cada uno distintas aplicaciones. Hasta ahora, mi forma de funcionar era iniciar la aplicación y moverla al escritorio deseado. Pero ¿y si queremos que Firefox siempre se inicie en el escritorio 2?, ¿Podemos ahorrarnos la operación “arrastrar” la aplicación hasta otro escritorio?. La respuesta es sí, gracias a la aplicación Devil's Pie.

 

Instalación:

Lo instalamos mediante nuestro querido apt-get install:
sudo apt-get install devilspie

 
Y lo podemos ejecutar desde el terminal:

devilspie


Pero lo habitual y práctico es configurarlo para que se ejecute cada vez que iniciamos nuestro sistema operativo. En Ubuntu / Linux Mint:

Nos vamos a Sistema / Preferencias / Sesiones. Ahí pulsamos en la pestaña "Programas al inicio" y añadimos "devilspie".


Configuración:

Forma 1: Creando un archivo para cada aplicación. Estos archivos tendrán la extensión .ds y se guardarán en la carpeta ~/.devilspie . Ejemplo del archivo pidgin.ds :

(if
  (is (application_name) "Pidgin")
  (set_workspace 2)
)
Forma 2: Creando un único archivo para todas las aplicaciones. También tendrá la extensión .ds y se guardará en ~/.devilspie .
Ejemplo del archivo general.ds :


(begin
    (if
        (or
            (is (application_name) "Firefox") 
            (contains (application_name) "Search")
        )
        (set_workspace 1)
    )
    (if
        (is (application_name) "Pidgin")
        (set_workspace 2)
    )
    (if
      (contains (application_name) "Calibre")
      (set_workspace 3)
    )
)
 
Como vemos, he utilizado el operador “or” y también “contains” que comprueba si el nombre de la aplicación contiene la cadena que indicamos. Si queréis tener más información de operadores y demás artilugios para crear el archivo de configuración, podéis consutar el siguiente tutorial: http://www.foosel.org/linux/devilspie  

 
Truco: Para saber los nombres exactos de las aplicaciones podemos crear un archivo que se llame por ejemplo debug.ds y que contenga ésto:
(debug)

Cuando iniciemos devilspie desde consola, nos aparecerán los nombres de las aplicaciones que se están ejecutando en ese momento, junto con otro tipo de información de las mismas.

 

Fuentes:

http://www.foosel.org/linux/devilspie 
http://forums.linuxmint.com/viewtopic.php?f=205&t=91606




domingo, 21 de octubre de 2012

Asignar la salida de un comando a una variable (Bash Script)



 






En algunos casos puede que queramos guardar la salida de un comando o instrucción en una variable, para su posterior uso en el script. La sintaxis sería la siguiente:

variable = `comando`  



A continuación vemos un ejemplo para entenderlo mejor.


Crear un directorio que tenga como nombre la fecha actual


Utilizando lo visto anteiormente, se crea una carpeta en la que su nombre es la fecha actual con el formato yyyy-mm-dd:

#!/bin/bash
fecha=`date +"%Y-%m-%d"`
mkdir fecha
 


El nombre de la carpeta tendía la siguiente estructura: 2012-10-17 .

Como siempre, podéis utilizar los comentarios para exponer vuestras dudas.



 




sábado, 20 de octubre de 2012

Uso básico del comando awk (Linux)










El comando awk es un método muy potente que permite procesar o analizar archivos de texto que están organizados por líneas (filas) y columnas. El formato básico del comando awk es el siguiente:

awk 'condición {acción}' archivo-entrada > archivo-salida




Mostrar el contenido de un archivo

awk '{ print }' /etc/passwd  



Mostrar el valor de un campo
 
Indicamos el carácter separador (en este caso ":") y la posición del campo que queremos obtener (en este caso es el primero):

awk -F':' '{ print $1 }' /etc/passwd


 
También podemos ordenar la salida:

awk -F':' '{ print $1 }' /etc/passwd | sort



Mostrar todas las líneas con más de 80 caracteres


 awk 'length($0) > 80' /etc/passwd


Se pueden utilizar los operadores == != < > <= >=


 
Mostrar las líneas que contengan alguna palabra de las indicadas

awk '/maria|juan|antonio/' /etc/passwd



Mostrar tus comandos más utilizados:

history | awk '{print $2}' | sort | uniq -c | sort -rn | head



Mostrar la primera línea del archivo

awk "NR==1{print;exit}" /etc/passwd




Podemos hacernos una idea de que las posibilidades que ofrece awk son infinitas, a la hora de trabajar con archivos de texto. Espero que haya servido para comprenderlo y como guía básica de uso.


Fuentes 




viernes, 14 de septiembre de 2012

Descomprimir un archivo .rar en Ubuntu (p7zip)










Siempre he utilizado File Roller para comprimir y descomprimir archivos .rar en Ubuntu. Pero encontré problemas al aplicarlo a ciertos archivos, así que busqué una alternativa que funcionase en todos los casos. Encontré p7zip y se acabaron los problemas.


Instalación:

Se instala mediante el típico apt-get:

sudo apt-get install p7zip-rar



Descomprimir:

Mediante este comando sencillo y fácil de recorda:

7z x archivo.rar



Aparte, me he creado un script muy simple para descomprimir todos los archivos rar de un directorio (descomprimir.sh):

#!/bin/sh

for param in "$@"
  do
    7z x "$param" 
  done



y luego lo llamamos así:

sh descomprimir.sh *.rar





Fuentes:


http://ubuntuforums.org/showthread.php?t=1846601



Espero que os sea tan útil como a mí y si tenéis alguna duda, ponedlo en los comentarios.

 




Felinfo: Java, Linux, Virtualización. Open Source.  ©Template Blogger Green by Dicas Blogger .

TOPO