Reglamento general de los foros   •   FAQ   •   Buscar en el foro •  Registrarse | Iniciar sesión 



Foros Linux » Desarrollo » Programación


Nuevo tema Responder al tema  [ 9 mensajes ] 
Patrocinadores

Autor
Buscar:
Mensaje

Desconectado
Forista Nuevo
Forista Nuevo
Avatar de Usuario

Registrado: Sab Jul 04, 2009 11:00 pm
Mensajes: 8

Nota Publicado: Sab Jul 04, 2009 5:47 pm 
Arriba  
buenas gente, precisaria ayuda con un shell que tengo que hacer, es lo siguiente, que me ingresen un nombre de una carpeta, buscarla esta dentro de otra con un ls o algo por el estilo, y poder borrar este directorio con sus carpetas y archivos, con rm - rf
yo lo imagino con read, para el name, y pipe para tuberia para ls o algo por estilo, pero ya que soy nuevo en shell script agradecria si alguien puede ayudarme con algun codigo o alguna pista, muchas gracias linuxeros!

 Perfil  

Desconectado
Forista Medio
Forista Medio
Avatar de Usuario

Registrado: Mié May 04, 2005 11:00 pm
Mensajes: 351
Ubicación: Bogotá

Nota Publicado: Sab Jul 04, 2009 6:09 pm 
Arriba  
Saludos

Depronto algo por este estilo te puede servir?
Código:
#!/bin/bash
read -p "Insertar Carpeta a Borrar: " carpeta

# Verifico que la carpeta sea un directorio
if [ -d "$carpeta" ]; then
   cd $carpeta
   blablabla
   blablabla
else
   echo "La Carpeta $carpeta No es un directorio o no existe"
fi

_________________
Mi Foro: http://www.hablarmierda.net
Mi Blog: http://www.michael-pratt.com/blog
Mis Distros: Slackware (Current)| Archlinux

 Perfil WWW  

Desconectado
Forista Nuevo
Forista Nuevo
Avatar de Usuario

Registrado: Sab Jul 04, 2009 11:00 pm
Mensajes: 8

Nota Publicado: Dom Jul 05, 2009 12:45 am 
Arriba  
me olvide de poner el shell que llama su codigo,

su code es :

Código:
if [ $# -ge 1 ]; then
    rm -fR "ProyectoSistemaOperativos/Simulaciones/$*"
    exit 0
else
   exit 1
fi

gracias amigos linuxeros!

 Perfil  

Desconectado
Forista Nuevo
Forista Nuevo
Avatar de Usuario

Registrado: Sab Jul 04, 2009 11:00 pm
Mensajes: 8

Nota Publicado: Dom Jul 05, 2009 12:48 am 
Arriba  
fuaa y tambien me olvide del codigo grande jaja,
aqui va:
Código:
if [ $osch -eq 3 ]
then
   opcn="-1"
while [ $opcn != "0" ]; do
   echo -e "\033[44;1;33m" # Colores
   clear
   echo ""
   echo -e "  \033[41;1;33m                                                                           \033[44;1;33m  "
   echo -e "  \033[41;1;33m  Programa con interfaz de texto para la gestion de empresas y empleados.  \033[44;1;33m  "
   echo -e "  \033[41;1;33m                                                                           \033[44;1;33m  "
   echo ""
   echo -e "           \033[42;1;32m[+] Borrar empresa                             [_][+][X]\033[44;1;33m            "
   echo -e "           \033[47;1;30m                                                        \033[44;1;33m            "
   echo -e "           \033[47;1;33m         Ingrese el nombre de la emmpresa a borrar.     \033[44;1;33m            "
   echo -e "           \033[47;1;30m                                                        \033[44;1;33m            "
   echo -e "           \033[47;1;30m         \033[47;1;31m[0]\033[47;1;30m Cancelar                                   \033[44;1;33m            "
   echo -e "           \033[47;1;30m                                                        \033[44;1;33m            "
   echo ""

    ls ProyectoSistemaOperativos/Simulaciones/ > ProyectoSistemaOperativos/Sim.tmp
    cantemp=`awk '{ cant += 1 } END { print cant }' ProyectoSistemaOperativos/Sim.tmp`
    if [ -z $cantemp ]; then
        echo -e "\033[47;1;30m <<no existe ninguna empresa>> \033[44;1;33m\c"
    else
        for (( c = 1; c <= $cantemp ; c++)); do
            l=`head -$c ProyectoSistemaOperativos/Sim.tmp | tail -1`
            echo -e "\033[47;1;33m \033[47;1;31m$c)\033[47;1;30m $l \033[44;1;33m\c"
        done
    fi
    rm ProyectoSistemaOperativos/Sim.tmp

    echo ""
    echo ""
   echo -e "                Ingrese una opcion[<<nombre>>, 0]: \c"
   read opcn

    if [ -z "$opcn" ]; then
        echo ""
        echo -e "         \033[41;1;33m   Ingrese un nombre,     \033[44;1;33m"
        echo -e "         \033[41;1;33m   Enter para continuar...\033[44;1;33m\c"
        read opcn
        opcn="-1"
    else
        if [ "$opcn" = "0" ]; then
            echo -e "\033[0m\c" # si es 0 no hacer nada para que termine el mientras.
        else
          existe="F"
            empresa=$opcn

            ls -F ProyectoSistemaOperativos/Simulaciones/ | grep / > ProyectoSistemaOperativos/Sim.tmp
            cantemp=`awk '{ cant += 1 } END { print cant }' ProyectoSistemaOperativos/Sim.tmp`
            if [ -z $cantemp ]; then
                echo -e "\c"
            else
                for (( c = 1; c <= $cantemp ; c++)); do
                    emp=`head -$c ProyectoSistemaOperativos/Sim.tmp | tail -1`
                 if [ "$emp" = "ProyectoSistemaOperativos/Simulaciones/$empresa/" ]; then
                    existe="T"
                 fi
                done
            fi
            rm ProyectoSistemaOperativos/Sim.tmp

          if [ $existe = "T" ]; then
                echo ""
                echo -e "         \033[41;1;33m   Eliminar $empresa.         \033[44;1;33m"
                echo -e "            Esta seguro? [S/N] \c"
                read opcn
                if [ $opcn = "S" -o $opcn = "s" ]; then
                    bash ProyectoSistemaOperativos/Scripts/BorrarSimulacion.sh $empresa
                    echo ""
                    echo -e "         \033[41;1;33m   Empresa borrada.       \033[44;1;33m"
                    echo -e "         \033[41;1;33m   Enter para continuar...\033[44;1;33m\c"
                    read opcn
                fi
                opcn="-1"
            else
                echo ""
                echo -e "         \033[41;1;33m   Nombre no valido.      \033[44;1;33m"
                echo -e "         \033[41;1;33m   Enter para continuar...\033[44;1;33m\c"
                read opcn
                opcn="-1"
            fi
        fi
    fi
done
echo -e "\033[0m"
clear
   
fi


lo que me sucede es que no entra en donde uso la bandera es decir, me anda todo bien, pero cuando voy a borrar un directorio no lo borra porque me da como que no existe,
probe inicializando la bandera ya en true pero el problema que tambien tengo, es que si ingreso el nom de un directorio que no existe me lo toma como que existiera y me sigue los pasos para borrar como que fuese uno de los existentes
espero.... alguna ayuda, gracias amigos linuxeros!

 Perfil  

Desconectado
Moderador
Moderador
Avatar de Usuario

Registrado: Mié Nov 28, 2007 12:00 am
Mensajes: 923
Ubicación: En la X del explorer (pulse para llamar)

Nota Publicado: Dom Jul 05, 2009 4:24 am 
Arriba  
DiTeN escribió:
me olvide de poner el shell que llama su codigo,

su code es :

Código:
if [ $# -ge 1 ]; then
    rm -fR "ProyectoSistemaOperativos/Simulaciones/$*"
    exit 0
else
   exit 1
fi

gracias amigos linuxeros!


Este rm no lo tengo muy claro de que haga lo que se espera...
Suponiendo que los parámetros contenidos en $* sean uno, dos y tres, expandiendo la instrucción quedaría:
Código:
rm -fR "ProyectoSistemaOperativo/Simulaciones/uno dos tres"

No sé si debería ser
Código:
rm -fR "ProyectoSistemaOperativo/Simulaciones/uno
rm -fR "ProyectoSistemaOperativo/Simulaciones/dos
rm -fR "ProyectoSistemaOperativo/Simulaciones/tres

_________________
Descargue el gestor de mp3 "Music Manager" -> (mmlf)
Última versión del gestor "Music Manager" -> (jmmm)

 Perfil  

Desconectado
Forista Nuevo
Forista Nuevo
Avatar de Usuario

Registrado: Sab Jul 04, 2009 11:00 pm
Mensajes: 8

Nota Publicado: Dom Jul 05, 2009 3:18 pm 
Arriba  
al final el error era con una ruta relativa,
agradezco la ayuda amigos!

 Perfil  

Desconectado
Forista Nuevo
Forista Nuevo
Avatar de Usuario

Registrado: Dom Jul 12, 2009 11:00 pm
Mensajes: 4

Nota Publicado: Dom Jul 12, 2009 9:40 pm 
Arriba  
Necesito saber si alguien sabe como identificar que una variable sea numérica o no

 Perfil  

Desconectado
Forista Mayor
Forista Mayor
Avatar de Usuario

Registrado: Vie Ago 24, 2007 11:00 pm
Mensajes: 702
Ubicación: Galicia - España

Nota Publicado: Lun Jul 13, 2009 2:41 am 
Arriba  
Supongo que habrá un método más directo pero esto funciona
Código:
[fran@Azul tmp]$ VAR=adlkfj333
[fran@Azul tmp]$ echo $VAR | egrep '^[0-9]+$'
[fran@Azul tmp]$ VAR=333
[fran@Azul tmp]$ echo $VAR | egrep '^[0-9]+$'
333
[fran@Azul tmp]$

_________________
Mi blog: Conocimiento Abierto

 Perfil WWW  

Desconectado
Forista Nuevo
Forista Nuevo
Avatar de Usuario

Registrado: Dom Jul 12, 2009 11:00 pm
Mensajes: 4

Nota Publicado: Lun Jul 13, 2009 9:14 am 
Arriba  
Funciono y gracias, pero tuve que agregar algo

echo $VAR | egrep '^[0-9]+$'
echo $?

Posdata me salvaste.

 Perfil  
Mostrar mensajes previos:  Ordenar por  
Nuevo tema Responder al tema  [ 9 mensajes ] 

Saltar a:  


¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 4 invitados

No puede abrir nuevos temas en este Foro
No puede responder a temas en este Foro
No puede editar sus mensajes en este Foro
No puede borrar sus mensajes en este Foro


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group :: Style based on FI Subice by phpBBservice.nl :: Todos los horarios son UTC - 6 horas
Traducción al español por Huan Manwë
phpBB SEO