my code stock.com

Script shell para manipular archivos

Snippet options

Download: Download snippet as supermenush.sh.
Copy snippet: For this you need a free my code stock.com account.
Embed code : You will find the embed code for this snippet at the end of the page, if you want to embed it into a website or a blog!

#!/bin/sh
#------------------------------------------------------
# FUNCTIONES AUXILIARES
#------------------------------------------------------

imprimir_encabezado () {
    clear;
    echo `date`;
    echo "";
    echo "\t\t\t ----------------------";    
    echo "\t\t\t  $1 ";
    echo "\t\t\t ----------------------";
    echo "";
}

esperar () {
    echo "";
    echo "Presione enter para continuar";
    read ENTER ;
}

malaEleccion () {
    echo "Selecccón Inválida ..." ;
}

#------------------------------------------------------
# FUNCTIONES del MENU
#------------------------------------------------------
a_funcion () {
	rm output.log;
       imprimir_encabezado "Opción a: ls personalizado";
    echo "Ingrese directorio a listar";
    read directorio;
    ls -l $directorio | more;
    ls -l $directorio > output.log	
}

b_funcion () {
       imprimir_encabezado "Opción b - Contar lineas";
         echo "Ingrese en que directorio esta el archivo txt ";
         read directorio;
         awk 'NF>0' texto.txt | wc -l ;
}

c_funcion () {
      imprimir_encabezado "Opción c - Secuencias";
         echo "Ingrese la direccion en donde esta el texto ";
         read direccion;
         echo "ingrese secuencia de letras 1";
         read var1;
         echo "La secuencia aparece ";  
         awk /$var1/ texto.txt | wc -l ;
         echo "veces"; 
         echo "Ingrese secuencia de letras 2";
         read var2;
         sed -i "s/$var1/$var2/g" $direccion;
         echo "Se cambio la secuencia";
         echo $var1;
         echo "por";
         echo $var2;
}
d_funcion () {
  	 	 imprimir_encabezado "Opción d - Permisos";
		touch permisos.backup
         echo "Ingrese el path de un directorio ";
        # read directorio;
         find /home/ubuntu/Downloads -name "*.mp3">rutas.txt; #escribe nombre de archivos con extension mp3 q se encuentren en el directorio especificado en el archivo rutas.txt
        
         for linea in $( cat rutas.txt); do
              ls -l $linea | awk '{print$9" "$1}'>>permisos.backup;
         done

        #saca todos los permisos 
	for linea in $(cat rutas.txt);do
         	chmod 0 $linea;
         done
}



e_funcion () {

#restaura los permisos que estaban en el backup
	cat permisos.backup | while read linea; do
   		nombre=$( echo $linea | awk '{print $1}' );
   		permiso1=$( echo $linea | awk '{print substr($2,2,3) }'); 
		permiso2=$( echo $linea | awk '{print substr($2,5,3) }'); 
		permiso3=$( echo $linea |awk  '{print substr($2,8,3) }'); 
	
	


		case $permiso1 in 
			"---") p1=$(echo 0);;
			"--x") p1=$(echo 1);;
			"-w-") p1=$(echo 2);;
			"-wx") p1=$(echo 3);;
			"r--") p1=$(echo 4);;
			"r-x") p1=$(echo 5);;
			"rw-") p1=$(echo 6);;
			"rwx") p1=$(echo 7);;
		esac
		

		case $permiso2 in 
			"---") p2=$(echo 0);;
			"--x") p2=$(echo 1);;
			"-w-") p2=$(echo 2);;
			"-wx") p2=$(echo 3);;
			"r--") p2=$(echo 4);;
			"r-x") p2=$(echo 5);;
			"rw-") p2=$(echo 6);;
			"rwx") p2=$(echo 7);;
		esac

		case $permiso3 in 
			"---") p3=$(echo 0);;
			"--x") p3=$(echo 1);;
			"-w-") p3=$(echo 2);;
			"-wx") p3=$(echo 3);;
			"r--") p3=$(echo 4);;
			"r-x") p3=$(echo 5);;
			"rw-") p3=$(echo 6);;
			"rwx") p3=$(echo 7);;
		esac
		
		chmod  $p1$p2$p3 $nombre
		
done


}




#------------------------------------------------------
# DISPLAY MENU
#------------------------------------------------------
imprimir_menu () {
  	 imprimir_encabezado "S U P E R - M E N U";
    echo "\t\t Opciones:";
    echo "";
    echo "\t\t\t a.  Ls personalizado";
    echo "\t\t\t b.  Contar Lineas";
    echo "\t\t\t c.  Secuencias";
    echo "\t\t\t d.  Borrar permisos";		
    echo "\t\t\t e.  Restaurar permisos";		
    echo "\t\t\t q.  Salir";
    echo "";
    echo "Escriba la opción y presione ENTER";
}
#------------------------------------------------------
# LOGICA PRINCIPAL
#------------------------------------------------------
while  true
do
    # 1. mostrar el menu
    imprimir_menu;
    # 2. leer la opcion del usuario
    read opcion;
    
    case $opcion in
        a|A) a_funcion;;
        b|B) b_funcion;;
        c|C) c_funcion;;
	d|D) d_funcion;;
	e|E) e_funcion;;
        q|Q) break;;
        *) malaEleccion;;
    esac
    esperar;
done

Create a free my code stock.com account now.

my code stok.com is a free service, which allows you to save and manage code snippes of any kind and programming language. We provide many advantages for your daily work with code-snippets, also for your teamwork. Give it a try!

Find out more and register now

You can customize the height of iFrame-Codes as needed! You can find more infos in our API Reference for iframe Embeds.