Publi

  • Sed… de venganza (1): Sustituyendo cadenas en múltiples archivos

    3846929292_60721fb24e

    Es uno de los grandes desconocidos y tan temidos comandos de que disponemos. Y es cierto que a veces da pereza mirarse el manual cuando queremos hacer algo que sed podría hacer rápidamente.

    Lo que cuento hoy es su uso más popular (porque sed se puede usar para muuuuuchas cosas) y es muy simple, sustituir en un stream un texto por otro (Donde dije digo, digo Diego).

    Imaginemos un fichero de texto, para ser originales llamémosle README, y en el texto queremos cambiar la palabra «Ireland» por «Spain».… Leer artículo completo

  • Una balanza que no funciona

    450px-balanzaLlega el día en que nos dedicamos al desarrollo, ya sea por libre, en una empresa, para investigación o en cualquier otra circunstancia; tenemos que poner en práctica lo aprendido durante tanto tiempo y no estamos haciendo simples ejercicios ni programas de un máximo de 200 líneas (con muchos espacios en blanco, comentarios multi-línea y esas cosas).
    Es decir, nos enfrentamos a un proyecto real y tenemos que dar lo mejor de nosotros mismos en su realización.… Leer artículo completo

  • Saber si estamos conectados a internet [bash]

    cat_linuxA menudo lanzo scripts que necesitan saber si la conexión a Internet está disponible para lanzarse, en caso de que no lo esté, invertirán mucho tiempo en terminar o terminarán con muchos errores. La forma más fácil de saber cuándo estamos conectados es intentar acceder a un ordenador que sepamos seguro que está conectado… por ejemplo google.com, que para eso está.

    Podemos por ejemplo hacer ping al servidor, pero un ping es muy visual, necesitaremos hacer algo más para aprovechar la salida de ese ping; aunque también podemos intentar conectar por el puerto 80 (http).… Leer artículo completo

  • Búsquedas rápidas en el historial de BASH

    2683642114_bba3d6383e
    Cuando pasamos mucho tiempo en escribiendo en terminal, a veces tenemos la necesidad de repetir algo que escribimos en el pasado. Puede que estemos compilando algún programa, o haciendo un ./configure e instalando dependencias de un programa…
    Muchas distribuciones lo tienen por defecto (por ejemplo Gentoo), pero otras muchas (Ubuntu, Mandriva, ArchLinux…) no lo tienen; se trata de activar las teclas de Avance y Retroceso de página para hacer búsquedas en nuestro historial.… Leer artículo completo

  • Cuando un proceso «se come» la memoria de nuestro sistema

    Hoy en día no se le suele ver la cara, dado que la memoria de nuestro sistema suele ser grande, pero cuando por ejemplo, a un proceso se le va la mano y reserva más memoria de la que tiene nuestro sistema, entra en marcha un proceso especial del núcleo de Linux; el OOM Killer (Out Of Memory Killer), que se encarga de detectar qué proceso es el peor del sistema y matarlo.… Leer artículo completo

  • Aprovechando el return de la función main()

    turn

    Imaginamos que en la realización de nuestro shell-script utilizamos un pequeño programa que hemos hecho en C (por ejemplo) y, además de su salida por pantalla, debemos tener también otro valor de retorno (ya sea un código de error, un número de veces que se ha realizado una acción, etc). Es decir, nuestro int main() { return X; }.

    Para ello tenemos este programa:

    1
    2
    3
    4
    int main()
    {
      return 4;
    }

    Lo llamamos test.c y lo compilamos:

    $ gcc -o test test.c

    y justo después de ejecutar el programa, debemos leer el valor de $?Leer artículo completo

  • Control-D para terminar la entrada estándar (EOF stdin)

    A veces, con muchos comandos, por ejemplo sort, tail, cat, read, o muchos otros programas que leen datos de un fichero que luego procesan, tenemos la necesidad de utilizarlos con la entrada estándar del sistema, ya sea para hacer una prueba rápida, evitar tener que escribir un fichero o cualquier otra cosa.

    Pero podemos estar introduciendo texto para esos comandos de forma indefinida:

    $sort
    estrella
    mar
    troglodita
    alienígena
    carpa
    kiosko
    gatillo

    ¿La forma de dejar de introducir texto?… Leer artículo completo

  • Ejecutar una orden externa redirigiendo STDIN [C]

    Cuando lo hacemos desde la línea de comando, es muy fácil:

    echo -e «david\njose\nalfredo\nzacarias\npatrick\ngaspar» | sort

    Pero a la hora de querer hacer un programa que ejecute la orden sort, pasándole una serie de líneas no es tan intuitivo.

    Para ello, he construido una tubería, y para ello hacemos que el descriptor STDIN_FILENO sea input[0] es decir, el descriptor de lectura de la pipe (con dup2).
    Luego pasamos las líneas que necesitemos a la pipe a través del descriptor input[1] y lo cerramos para dar por finalizada la entrada de datos.… Leer artículo completo

  • Monitoriza las aplicaciones con las que trabajas

    dtracks Lo leí hace tiempo en Genbeta pero hasta hace unos días no me decidí a probarlo (lo dejé medio olvidado en la lista de cosas por hacer), pero me ha gustado bastante.
    Sirve para saber con qué programas pasas el tiempo en el ordenador, y así podemos ver lo productivos que somos, según esto mi productividad puede mejorar.
    Es un programa pequeño pero muy útil. Se puede descargar el código fuente desde aquí, pero podéis probar a ver si vuestra distribución lo trae en sus repositorios.… Leer artículo completo

  • Graba lo que haces en la consola

    cinta Estoy de vacaciones, pero tuve que usar este comando en un pequeño proyecto y me pareció buena idea publicarlo en el blog.

    A veces tenemos la necesidad de guardar lo que estamos haciendo en consola (sería como un screencast pero para la línea de comandos). Tenemos que guardar los comandos que escribimos y las diferentes salidas en un archivo de texto.
    Podemos hacer lo siguiente:

    $ script test
    Script iniciado; el fichero es test
    $ echo «Hola mundo»
    Hola mundo
    $ exit

    Se grabará todo lo que hemos hecho y la salida de los comandos ejecutados en el fichero test.… Leer artículo completo