Script para ejecutar tar

Imagen de a343
0 puntos

Hola,

Estoy haciendo un script en tcl/tk, que da una interfaz al comando tar, quitando la parte de diseño, todo es muy parecido a bash
Bueno el principal problema que tengo es que no me coje varios archivos, se lo paso como una cadena con los nombres separados con espacios, he mostrado por el terminal la variable y efectivamente va con espacios, sin embargo tar no me coge los archivos y me crea un archivador vacio.
Despues tengo un segundo problema, y es que quiero utilizar el comando -t para mostrar los archivos que contenga un archivador antes de descomprimirlo, por el terminal la sentencia me funciona, pero en el script no hace nada.

comprimir y ver, son las funciones que fallan.

Aqui os dejo el codigo:

#!/usr/bin/wish

proc insertar {} {

set filename [tk_getOpenFile]

if {$filename != ""} {
.f.lista insert end $filename
}
}

proc comprimir {} {

#elijo nombre del archivo final comprimido
set comprimido [.nombre get]
#elijo directorio donde guardar el archivo
set dir [tk_chooseDirectory]
#añado todos los nombres de los archivos a esta variable
set var [.f.lista get 0 end]

#comprobacion de que coge bien los valores
puts $var

#comprimo y muevo el resultado al directorio elegido
set retval [catch { exec tar -czf $comprimido $var}]
exec mv $comprimido $dir

}

proc descomprimir {} {

set dir [tk_chooseDirectory]

set nombre [.f.lista get 0 end]
#tar xvfz fichero -C $HOME/directorio
exec tar -xzf $nombre -C $dir
}

proc ver {} {
#elijo nombre de fichero comprimido que quiero ver sus archivos
set nombre [.f.lista get 0 end]
#muestro archivos que contiene
exec tar -tf $nombre
}

proc borrar {} {

set tam [.f.lista size]
set i 0

.f.lista delete $i $tam
}

frame .f
listbox .f.lista -selectmode multiple -yscrollcommand {.f.sb set}
scrollbar .f.sb -command {.f.lista yview}
pack .f -side top -fill both -expand true
pack .f.lista -side left -fill both -expand true
pack .f.sb -side right -fill y

label .nombreFinal -text "Introduzca el nombre que le dará al archivo comprimido"
pack .nombreFinal -side top -fill x

entry .nombre
pack .nombre -side top -fill x

button .actualizar -text "Insertar" -command {insertar}
pack .actualizar -side left

button .comprimir -text "Comprimir" -command {comprimir}
pack .comprimir -side left

button .descomprimir -text "Descomprimir" -command {descomprimir}
pack .descomprimir -side left

button .ver -text "Ver Archivos" -command {ver}
pack .ver -side left

button .borrar -text "Borrar Lista" -command {borrar}
pack .borrar -side right

Espero que me podais ayudar

Imagen de a343
+1
0
-1

Hola,

Ya tan solo necesito saber como pasarle al comando tar mas de un archivo y que no sea en mas de una variable.
Si tengo una variable con el nombre de dos archvios separados por un espacio
var = "archivo.txt archivo2.txt"

Eso no me lo reconoce como dos archivos, pero si le paso 2 variables cada una con el nombre de uno de los archivos si que lo reconoce, pero tan solo puedo usar una, ya que no sabre el numero de archivos que el user querra comprimir.

+1
0
-1