[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Mostrar listado con cabeceras y bien tabulado(bash scripting)



El mié, 24-01-2007 a las 17:07 +0100, gesala gesala escribió:
> Eup!!!!!
> Estoy intentando hacer un pequeño programa en bash que pasandole como
> argumentos una maquina remota y un directorio, compare dicho
> directorio en las 2 maquinas y saque una especie de informe.
> El programa como tal lo tengo hecho. Lo único que a la hora de mostrar
> los datos queda un poco feo. Me explico:
> El programa tiene un menu con una serie de opciones:
> 1.- Ficheros solo existentes en local
> 2.- Ficheros solo existentes en remoto
> 3.- Diferencias de permisos
> 4.- Diferencias de propietario
> 5.- Diferencias de tamaño
> 
> Tiene más opciones pero no viene al caso.
> Cuando no son muchos los ficheros diferentes no hay problema, pero si
> son muchos no queda bien.
> La cuestion es que me interesaria hacer una especie de paginacion y
> cabeceras (imaginaos que pulso la opcion 5 y existen 100 ficheros con
> tamaños diferentes) :
> {
> Fichero                Tam. Remoto               Tam. Local
> -----------------------------------------------------------------------------
> tmp                                    500                         100
> messages.log                   1678                        6789
> ....
> ....
> ....
> debian.iso                    6786888                    567778
> kk.txt                                   23                            12
> 
> Pulse una tecla para continuar
> }
> 
> 
> Al pulsar la tecla nos iria sacando las siguientes paginas hasta el final:
> 
> {
> Fichero                Tam. Remoto               Tam. Local
> -----------------------------------------------------------------------------
> passwd                              455                            78
> 
> 
> Fin de informe. Pulse una tecla.
> 
> 
> }
> 
> La verdad es que estoy mirando varios manuales de bash pero no veo
> ninguno que explique este tipo de cosas.

Para ir mostrando las lineas de página en página, necesitas tener todo
en un fichero y tail o head (uno de los dos, y un contador)

Para el formato tabulado y con cabeceras, puedes usar una cabecera

#esto lo defines donde quieras
cabecera="Fichero \t\t\t Tam. Remoto \t\t\t Tam.Local \n----------\
----------------------------------------------"

#esto cada vez que necesites imprimir la cabecera
echo -e $cabecera

Para tabular los resultados, primero habría que saber como los obtienes.
Pero vamos, sea como sea, mientras exista un espacio entre los tres
datos, awk. es igual que la cabecera, pero sustituyendo por $1 $2 $3 los
campos.

Creo que si rediriges todos los datos a un fichero temporal, lego es
cuestion de parsearlos (el ancho con echo + awk y el número de lineas
con tail o con head)

Suerte




Reply to: