Variables linux

Topic created · 6 Mensajes · 1385 Visitas
  • Bueno, me gustaría saber como poder hacer una carpeta (mkdir Carpeta) pero para el nombre, hace que sea una variable de fecha. Por ejemplo, imaginemos que existiese tal variable que te da la fecha (%fecha%)

    mkdir backup_%fecha% /home/backup/
    cp /home/trabajo*.* /home/backup/backup_%fecha%

    Seria posible algo así? Quiero crear un .sh en Linux que al llamarlo, creara una carpeta según la fecha a la que estamos y copiara unos determinados archivos a esa carpeta creada.

    En Windows creo recordar que era establecer una variable a la fecha actual y usarla, pero no se como se hace eso en Linux y ni siquiera se con seguridad de que se pueda hacer.

    Salu2

  • para crear una carpeta que incluya la fecha actual debes hacer esto:
    mkdir "backup_$(date +%d-%m-%y)"
    que te creará una carpeta con un nombre como este:

    backup_07-01-12
    

    Espero que te haya servido :icon_cheesygrin:

  • Gracias, pero si tengo una carpeta llena de backups, al haber un comando de copiar archivos a una carpeta backup, el script trabajará sobre la variable actual hasta k acabe, y si lo hago otra vez, trabajara sobre otra carpeta olvidandose de esa no?

    Si me ayudas en solo darle minutos y horas a la variable, te llevas otro gracias. ;D

    Salu2

  • no se si te he entendido bien, pero si quieres almacenar en una variable la hora y minutos actuales tendrias que hacerlo asi:

    AHORA=$(date +%H:%M)

    Y luego para usar la variable por ejemplo con mkdir tendrías que ponerle delante un "$":

    mkdir "backup_$AHORA"

    que te crearia una carpeta como esta:

    backup_00:11
    

    ¿Era eso lo que querias?

  • entonces el código seria asi?

    tiempo=$ (date +%H:%M)
    fecha=$ (date +%d-%m-%y)
    mkdir "backup_$tiempo [$fecha]"
    

    Y yo preguntaba si en la carpeta tengo 7 carpetas con ese nombre y ese tipo de formato de fecha, al utilizar el script, no se copiaría a la primera carpeta de esas características?

    Es decir, solo trabaja sobre la carpeta actual, y si ejecuto el script otra vez, trabajara sobre otra (vamos, k no se líen entre ellas es lo k me interesa saber)

    Salu2

  • Cada vez que se ejecute el script, tiemo y fecha tendrán un valor distinto (a no ser que lo ejecutes dos veces antes de que pase un minuto; si crees que lo puedes hacer dos veces antes de que pase un minuto deberías añadirle los segundos también a tiempo, al final te explico cómo), así que te creará otra carpeta distinta cada vez, por eso no te preocupes. Creo que tu script quedaría así:

    #!/bin/bash
    TIEMPO=$(date +%H:%M)
    FECHA=$(date +%d-%m-%Y)
    mkdir "backup_$TIEMPO [$FECHA]"
    cp "/home/trabajo/*" "/home/backup/backup_$TIEMPO [$FECHA]"

    PD: para añadirle los segundos y poder ejecutarlo dos veces en el mismo minuto sin que te lo mande todo a la misma carpeta, deberás declarar tiempo de esta forma:
    TIEMPO=$(date +%H:%M:%S)

    Un saludo, espero que te sirva :wiii: