Comunidad Underground Hispana  

Retroceder   Comunidad Underground Hispana > Programacion > Batch / Bash-Shell

Respuesta Crear Nuevo Tema
 
Compartir en twitter LinkBack Herramientas Desplegado
Antiguo 09-nov-2015, 12:18   #1
Miembro
 
Fecha de Ingreso: abril-2015
Ubicación: D.F.
Amigos 0
Mensajes: 52
Gracias: 3
Agradecido 1 vez en 1 mensaje.
Lightbulb crear archivo a partir de una plantilla

Saludos apenas me inicio en esto del bash en linux mint y me propuse hacer un script en el cree una nueva carpeta, y dentro de esta cree un archivo a partir de una plantilla (es decir que a partir de algun archivo que tenga alojado en el directorio plantillas lo cree dentro de la carpeta que acabo de crear).

Tengo el siguiente código:
Código:
#! /bin/bash

# ingresamos a la carpeta Documentos del usuario
cd ~
cd Documentos

# si no existe la carpeta proyectos1 la creamos
if [ -d proyectos1 ]
then
   echo "la carpeta ya fue creada"
else
   #echo "se crea la carpeta"
   mkdir proyectos1
   # nos movemos a la carpeta proyectos1
   cd proyectos1
   # creamos un archivo .odt a partir de una plantilla

fi
  
En esta parte de código es donde se crea el archivo que les menciono:
Código:
else
   #echo "se crea la carpeta"
   mkdir proyectos1
   # nos movemos a la carpeta proyectos1
   cd proyectos1
   # creamos un archivo .odt a partir de una plantilla

fi
  
La ruta donde tengo guardados los archivos de plantillas es la siguiente:
/home/victor/Plantillas/plantillas personales

Dentro de la carpeta plantillas personales tengo varios archivos .odt entre otro y lo que quiero hacer es crear un nuevo archivo a partir de una plantilla .odt pero no se como hacerlo.

Se que con touch se pueden crear archivos, pero no se como hacer para que los cree a partir de una pantilla:
Código:
touch nombreArchivo.extención
  
O se me ocurre que con el comando cp podría copiar uno directamente desde plantillas y ya solo seria cuestión de renombrarlo.

¿Como podría hacerlo?
__________________
Dos deberá haber; ni más ni menos. Uno para encarnar el poder, y el otro para ansiarlo. - Darth Bane
victor_belmont está desconectado   Responder Citando
Antiguo 05-ago-2016, 05:38   #2
Recien llegado
 
Avatar de The_Linux_Girl
 
Fecha de Ingreso: agosto-2016
Amigos 0
Mensajes: 3
Gracias: 0
Agradecido 1 vez en 1 mensaje.
Predeterminado Respuesta: crear archivo a partir de una plantilla

Buenas Victor,

El comando que buscas es el cp, que te permite copiar un fichero con el nombre que tu quieras.

He escrito un script parecido al tuyo pero cuenta con detalles interesantes, como el log, el execute_user y la comprobación de errores que te vendrán bien en un futuro, además te recomiendo que uses SIEMPRE rutas absolutas.
Adjunto la ejecuión del script para que veas los valores que toman las variables en tiempo de ejecución.

Faltaría por añadir la comprobación del mkdir

No dudes en comentar cualquier duda.

Saludos!!


-----------------------------------------------------
Script
--------------------------------------------------------
#! /bin/bash
#
# Programa para la generacion de ficheros a partir de una plantilla
#
################################################## #########################

#Declaracion de rutas y variables
SCRIPT_NAME=`basename ${0} | cut -d"." -f1`
execute_user=`whoami`
timestamp=$( date +%Y%m%d_%H%M )
DOCUMENT_DIR=/home/${execute_user}/Documentos
PLANTILLA_DIR=${DOCUMENT_DIR}/plantillas
PLANTILLA_NAME=Plantilla.odt
DESTINO_DIR=${DOCUMENT_DIR}/proyectos1
FINAL_NAME=miproyecto.odt
LOG_DIR=/home/${execute_user}/Logs
LOG_FILE=${LOG_DIR}/${SCRIPT_NAME}_${timestamp}.log

echo "${timestamp}: Comienzo del programa" >> ${LOG_FILE}

cd ${DOCUMENT_DIR}
if [ $? -ne 0 ]
then
echo "$( date +%Y%m%d_%H%M%S ): No se ha podido acceder a la ruta ${DOCUMENT_DIR}" >> ${LOG_FILE}
exit 1
fi

#si no encuentra la carpeta proyectos la creamos
if [ -d ${DESTINO_DIR} ]
then
echo "$( date +%Y%m%d_%H%M%S ): Carpeta ya existente" >> ${LOG_FILE}
else
echo "$( date +%Y%m%d_%H%M%S ): Creamos la ruta de proyectos" >> ${LOG_FILE}
mkdir ${DESTINO_DIR}
fi

# Una vez creada la carpeta copiamos la plantilla con el nombre que deeseemos
cp ${PLANTILLA_DIR}/${PLANTILLA_NAME} ${DESTINO_DIR}/${FINAL_NAME}
if [ $? -ne 0 ]
then
echo "$( date +%Y%m%d_%H%M%S ): No se ha podido acceder a la ruta ${DOCUMENT_DIR}" >> ${LOG_FILE}
exit 1
fi

echo "$( date +%Y%m%d_%H%M%S ): Finalizacion del programa" >> ${LOG_FILE}

exit 0

--------------------------------------------------------
Ejecucion
--------------------------------------------------------

ksh -x testh.sh
++ basename testh.sh
++ cut -d. -f1
+ SCRIPT_NAME=testh
++ whoami
+ execute_user=victor
++ date +%Y%m%d_%H%M
+ timestamp=20160804_1300
+ DOCUMENT_DIR=/home/victor/Documentos
+ PLANTILLA_DIR=/home/victor/Documentos/plantillas
+ PLANTILLA_NAME=Plantilla.odt
+ DESTINO_DIR=/home/victor/Documentos/proyectos1
+ FINAL_NAME=miproyecto.odt
+ LOG_DIR=/home/victor/Logs
+ LOG_FILE=/home/victor/Logs/testh_20160804_1300.log
+ echo '20160804_1300: Comienzo del programa'
+ cd /home/victor/Documentos
+ '[' 0 -ne 0 ']'
+ '[' -d /home/victor/Documentos/proyectos1 ']'
+ echo '20160804_1300: Creamos la ruta de proyectos'
+ mkdir /home/victor/Documentos/proyectos1
+ cp /home/victor/Documentos/plantillas/Plantilla.odt /home/victor/Documentos/proyectos1/miproyecto.odt
+ '[' 0 -ne 0 ']'
+ echo '20160804_1300: Finalizacion del programa'
+ exit 0

--------------------------------------------------------
Ficheros
--------------------------------------------------------
[victor@maquina ~]$ ls -lrt /home/victor/Documentos/plantillas/Plantilla.odt
-rw-rw-r-- 1 victor team 42 Aug 4 12:31 /home/victor/Documentos/plantillas/Plantilla.odt
You have new mail in /var/spool/mail/victor
[victor@maquina ~]$ ls -lrt /home/victor/Documentos/proyectos1/miproyecto.odt
-rw-rw-r-- 1 victor team 42 Aug 4 13:00 /home/victor/Documentos/proyectos1/miproyecto.odt

--------------------------------------------------------
LOG
--------------------------------------------------------
more /home/victor/Logs/testh_20160804_1300.log
20160804_1300: Comienzo del programa
20160804_130006: Creamos la ruta de proyectos
20160804_130007: Finalizacion del programa
The_Linux_Girl está desconectado   Responder Citando
El Siguiente Usuario Agradeció a The_Linux_Girl Por Este Mensaje:
zolo (07-ago-2016)
Respuesta

Etiquetas
bash, distro, linux mint, programación

Herramientas
Desplegado

Normas de Publicación
No puedes crear nuevos temas
No puedes responder mensajes
No puedes subir archivos adjuntos
No puedes editar tus mensajes

Los Códigos BB están Activado
Las Caritas están Activado
[IMG] está Activado
El Código HTML está Desactivado
Trackbacks están Activado
Pingbacks están Activado
Refbacks están Activado



Temas Similares
Tema Autor Foro Respuestas Último mensaje
Cargar archivo virtualizado y ejecutarlo con argumento? EleKtro Visual Basic y Net 2 25-mar-2013 17:03
Backup4all Professional 4.7 Build 270 Multilenguaje CINTHY1234 Software 0 13-may-2012 16:45
Crear un archivo ejecutable usando netbeans 6.9.1 el aprendiz Java 4 25-jul-2011 13:34
Super DVD Creator 9.8 [Full] Crear tus DVD facilmente frankymb Software 0 16-jun-2011 04:59



Portal Hacker
Powered by vBulletin® Version 3.8.8
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
SEO by vBSEO 3.6.0