Entrada

Papelera de reciclaje en bash

Eduardo Suarez, corresponsal de guerra en Pakistán… es broma!! es un amigo mío que se le vio el detalle de ofrecerme una joyita de script para Linux. Pensé buab! vamos a publicárselo que le hace ilusión al chico. El script consiste en una papelera de reciclaje.

El script está documentado y dedicado :)

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
#!/bin/bash
#AUTOR: Eduardo Luis Suarez Lorenzo
#Programa que simula una papelera de reciclaje. Envia los archivos indicados como #parametros a un directorio oculto para dar la posibilidad de restaurarlos en otro momento.

	if test $# -lt 1 #comprueba que el numero de argumentos no sea menor que 1
	then		  #en caso contrario sale del programa
		echo "Error. Faltan argumentos"
		echo "Uso: mirm [-l][-r][-h] fichero [fichero,...]"
		exit 1
	fi

	if test ! -d /$HOME/.papelera #comprueba si el directorio que hara de
	then				#papelera exista, y si no lo crea
		mkdir /$HOME/.papelera
	fi

	while getopts lrh opts $* #se utiliza para definir los posibles
	do			   #parametros funcionales del script
		case $opts in

	#en el caso de que como parametro se introduzca -l se mostrara un listado
	#de los ficheros contenidos en la papelera
		l) echo "LISTADO DE ARCHIVOS DE LA PAPELERA DE RECICLAJE"
		   echo
		   for i in /$HOME/.papelera/* #toma todas las entradas del
		   do				#directorio
			echo "$i"   #muestra la entrada actual
		   done
		   exit 1;; #sale del script

	#en caso de que el parametro sea -r se borrar el contenido de la papelera

		r) read -p "Esta seguro de que desea vaciar la papelera? (s/n):" resp	#se pide confirmacion para la eliminacion de los archivos.
		   case $resp in

			s|S)rm -r /$HOME/.papelera/* 2>/dev/null #si la respuesta 
#"s" o "S" se eliminaran los archivos, y si la papelera ya esta vacia se ocultara 
#el error.
		   	    echo "Se ha vaciado la papelera."
			    exit 1;;
			n|N)exit 1;;#si la respuesta es "n" o "N" saldra del script
		   esac;;

		h) echo "Argumentos de $0:" #si el argumento es -h se mostrara
		   echo			     #una ayuda de la utilizacion
		   echo "[-l] -> Lista el Contenido de la Papelera"
		   echo "[-r] -> Borra todo el Contenido de la Papelera"
		   exit 1;; #sale del script
#en el caso de que el argumento introducido no sea ninguno de los anteriores se #muestra un mensaje de error y sale del script
		*) echo "Error. Opcion incorrecta"
		   exit 1;;

		esac
	done
#si los parametros introducidos se corresponden con archivos con su ruta absoluta
#se pedira confirmacion de eliminacion
	read -p "Esta seguro de qu desea borrar los archivos?(s/n):" resp

	case $resp in

	s|S) for i in $* #si la respuesta es "s" o "S"
	     do
		if test -f $i #se comprueba que los archivos existan
		then
			mv $i /$HOME/.papelera #si existen se mueven a la papelera
			echo "Borrando $i..."
		else
			echo "Error. El Fichero $i no se encuentra en la ruta especificada" #si no existen se muestra un mensaje de error.
		fi
	     done;;

	n|N) echo "Los Archivos no han sido borrados" #si la respuesta es "n" o "N" se sale del script
	     exit 1;;
	esac

# este script va dedicado pa maxi un xiko reciklado a la par q retractil. Un beso! :)~
Esta entrada está licenciada bajo CC BY 4.0 por el autor.