Publi

  • Cómo extraer ruta, nombre de fichero y extensión en Bash de forma nativa para nuestros scripts

    7959831794_e5699df68b_k
    Bash tiene infinidad de opciones, y en los últimos años se ha extendido muchísimo y nos permite hacer cosas muy chulas. Aunque un sistema con tantas opciones como este, es también un poco lioso y difícil de aprender. Por eso en ocasiones viene bien una chuleta para realizar operaciones sencillas que pueden llegar a ser un poco rebuscadas como obtener el nombre de un fichero y su extensión.

    Bash, al ser un intérprete de comandos de consola, una de sus principales funciones es trabajar con archivos y cuando queremos utilizar archivos, tenemos que jugar con sus posibles nombres, para ello, deberíamos poder extraer fácilmente la ruta de un archivo, su nombre y separarlo de la extensión.… Leer artículo completo

  • Cómo procesar múltiples argumentos de entrada en scripts para Bash

    photo-1455540904194-fc101941273a_r

    Los argumentos de entrada de un programa nos sirven para modificar ligeramente el comportamiento de un programa dentro de las opciones que nos permita su desarrollador. Y, sobre todo, siempre que trabajamos con programas para consola, es muy buena idea permitir que nuestros usuarios puedan utilizar funciones extras o especificar sus propios parámetros de trabajo sin necesidad de modificar el programa.

    Si trabajáis con lenguajes como C o C++ podéis leer algo de información al respecto:

    Pero, cuando hacemos algún script en Bash para línea de comandos, también puede resultar muy útil, tanto para especificar archivos de entrada, como las propias opciones de nuestro programa.… Leer artículo completo

  • Encontrar la diferencia entre la salida de dos comandos en nuestra terminal

    Spot_the_difference

    Este es un pequeño truco que, en ocasiones me ha salvado un poco de tiempo. Un mini-post que tenía ganas de compartir por aquí y que hoy voy a empezar por el final. Es decir, poniendo el código:

    1
    $ diff <(comando 1) <(comando 2)

    Con esto, ejecutamos el comando 1, luego el comando 2 y se lo pasamos a diff en forma de pipe creada expresamente para la ocasión.… Leer artículo completo

  • Cómo listar archivos de forma recursiva en C, y un mundo de posibilidades en nuestros programas

    3042638653_f14c62a4f7_bPuede que seas un hacha con el comando find o incluso con locate; pero hay veces que nuestro software tiene que ser capaz de realizar la búsqueda de un archivo en el árbol de directorios, puede que queramos hacer inclusiones, exclusiones, o analizar las características del archivo.
    Podemos tener varias misiones, por ejemplo calcular el tamaño que ocupan todos los archivos a partir de una ruta dada (como hace du -s), copiarlos a otra ruta como haría un gestor de archivos o, incluso buscar archivos repetidos.… Leer artículo completo

  • Borrar la caché de Magento desde la línea de comandos

    Foto: Steve Jurvetson (Flickr CC)

    Cuando estás haciendo muchos cambios en una instalación de Magento, debes borrar la caché a menudo. Un caso especial es si utilizas scripts periódicos para actualizar listas de precios o stock, en ese caso debes programar también el borrado de cachés.

    Este pequeño script ha sido visto en muchas webs por lo que no me extenderé mucho y mencionaré dos fuentes donde podéis consultarlo (os invito a visitar estas páginas porque amplían la información que veis aquí).… Leer artículo completo

  • Sonidos de un viejo disco duro IDE realizando tareas

    Ingredientes: Un disco duro viejo, un adaptador USB, un micrófono y algunos comandos para probar. Me pareció una cosa muy friki y bastante chula. Un disco duro que salió al mercado en Enero del año 2000 (¡¡15 años!!) y todavía funciona. No sabría decir si como el primer día, pero funciona bastante bien, aunque a estas alturas, como no tengamos a disposición un adaptador especial IDE sería muy difícil echarlo a andar.… Leer artículo completo

  • Creando un servidor que acepte múltiples clientes simultáneos en C

    5989707041_64de393f6b_oPara hacer una prueba de esto, crearemos un servidor al que nos podremos conectar por telnet y pedir cierta información a través de comandos. El ejemplo soporta los siguientes comandos (en mayúsculas):

    • DATE: Pide la fecha al servidor
    • TIME: Pide la hora al servidor
    • HOLA: Saluda y me dice mi IP
    • EXIT: Cierra el cliente actual
    • CERRAR: Cierra el servidor.
    • Cualquier otra cosa se manda repetida (ECHO)
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    265
    266
    267
    /**
    *************************************************************
    * @file servtcp.c
    * @brief Breve descripción
    * Ejemplo de un cliente TCP usando threads
    *
    *
    * @author Gaspar Fernández <blakeyed@totaki.com>
    * @version 0.1Beta
    * @date 13 ene 2011
    * Historial de cambios:
    *   20110113 - Versión inicial
    *
    *
    *************************************************************/


    #include <fcntl.h>
    #include <string.h>
    #include <stdlib.h>
    #include <errno.h>
    #include <stdio.h>
    #include <netinet/in.h>
    #include <resolv.h>
    #include <sys/socket.h>
    #include <sys/types.h>
    #include <sys/wait.h>
    #include <arpa/inet.h>
    #include <unistd.h>
    #include <pthread.h>
    #include <string.h>

    /** Puerto  */
    #define PORT       7000

    /** Número máximo de hijos */
    #define MAX_CHILDS 3

    /** Longitud del buffer  */
    #define BUFFERSIZE 512

    int AtiendeCliente(int socket, struct sockaddr_in addr);
    int DemasiadosClientes(int socket, struct sockaddr_in addr);
    void error(int code, char *err);
    void reloj(int loop);

    int main(int argv, char** argc){

        int socket_host;
        struct sockaddr_in client_addr;
        struct sockaddr_in my_addr;
        struct timeval tv;      /* Para el timeout del accept */
        socklen_t size_addr = 0;
        int socket_client;
        fd_set rfds;        /* Conjunto de descriptores a vigilar */
        int childcount=0;
        int exitcode;

        int childpid;
        int pidstatus;

        int activated=1;
        int loop=0;
        socket_host = socket(AF_INET, SOCK_STREAM, 0);
        if(socket_host == -1)
          error(1, "No puedo inicializar el socket");
       
        my_addr.
    Leer artículo completo
  • Las teclas que utilizo más frecuentemente en Emacs / Guía para principiantes

    emacs_poesiaHace unos días hablé de la importancia de conocer los atajos de teclado de tu IDE favorito; hoy hablaré de las teclas que más utilizo en el mío, Emacs, y de paso hago una pequeña guía para principiantes en este editor.

    I. Un apunte básico del uso del teclado en Emacs

    Lo primero que hay que mencionar es que hay muchas combinaciones con la tecla Control y Alt (o Meta), cuando una tecla, por ejemplo, la «x» se pulsa junto con Control diremos C-x y cuando esa misma tecla la pulsamos junto con Alt diremos M-x cuando pulsamos una combinación por ejemplo (M-g) y luego tenemos que soltar las teclas y pulsar una tecla sola, por ejemplo, otra g, diremos (M-g g), lo mismo vale con combinaciones, si tenemos que pulsar primero C-x y luego C-c diremos: «C-x C-c»

    Si por alguna casualidad no podemos pulsar la tecla Meta, o una combinación (como sucede en algunos tipos de terminales remotos), podemos, para pulsar M-x, pulsar «Escape x»

    II.

    Leer artículo completo
  • Curioso e interesante (2): Fragmentación en Linux, WikiUnix, convertir documentos desde la línea de comando, Ubuntu más seguro que Windows by Dell

    Estos días he estado un poco liado, pero he dejado varias pestañas del navegador abiertas con algunas curiosidades que he encontrado estos días y me han llamado la atención:

    • Lo leí en Muy Linux. Hay controversia en este tema… casi todos decimos que no es necesario, y otros dicen que sólo somos geeks talibanes que ocultamos las carencias de nuestro sistema operativo preferido; pero la realidad es que la fragmentación en los sistemas de archivos más populares de Linux es significativamente menor que en Windows.
    Leer artículo completo
  • Un fondo de escritorio para Linuxeros

    Acabo de verlo en MuyLinux y me ha encantado. Lo han sacado de Be Linux My Friend. Es una chuleta para la línea de comandos, con todas esas órdenes útiles que vamos a necesitar.
    Dada su distribución, bien podemos tener iconos de escritorio a la izquierda o un emulador de terminal para ir practicando 🙂
    Encontramos los comandos básicos para manejo de ficheros, búsquedas procesos, compresión, instalación de programas, permisos, y más.… Leer artículo completo