Bash script - comparar dos ficheros .txt y agregar lo que le falte a uno de ellos...

Imagen de josecash
0 puntos

Hola,

Estoy intentando aprender bash y bueno, después de leerme un tutorial, más bien pobre sobre el tema me he lanzado a escribir uno para agregar repositorios, es decir, que busque los que ya estan, los compare con los que yo le escribo y agrege los que no esten, además que comente los descomentados...je, no sé si es demasiado para empezar pero me encanta liarme con estas cosas...

Hasta ahora he hecho esto(de momento lo hago con un fichero de mi escritorio, cambiaré las rutas cuando esté listo el script):

#!/bin/sh

sources=`cat /home/$USER/Escritorio/sources.txt`

grep -r "$sources" deb\ http://packages.medibuntu.org/\ hardy\ free\ non-free"\n"deb\ http://apt.wicd.net\ hardy\ extras"\n"deb\ http://apt.last.fm/\ debian\ stable"\n"deb\ http://download.virtualbox.org/virtualbox/debian\ intrepid\ non-free"\n"#Gráfica\ intel"\n"deb\ http://ppa.launchpad.net/siretart/ppa/ubuntu\ jaunty\ main"\n"deb-src\ http://ppa.launchpad.net/siretart/ppa/ubuntu\ jaunty\ main"\n"#Webmin"\n"deb\ http://download.webmin.com/download/repository\ sarge\ contrib"\n"#Chrome"\n"deb\ http://ppa.launchpad.net/chromium-daily/ppa/ubuntu\ jaunty\ main"\n"deb-src\ http://ppa.launchpad.net/chromium-daily/ppa/ubuntu\ jaunty\ main

echo "deb http://packages.medibuntu.org/ hardy free non-free""\n""deb http://apt.wicd.net hardy extras""\n""deb http://apt.last.fm/ debian stable""\n""deb http://download.virtualbox.org/virtualbox/debian intrepid non-free""\n""#Gráfica intel""\n""deb http://ppa.launchpad.net/siretart/ppa/ubuntu jaunty main""\n""deb-src http://ppa.launchpad.net/siretart/ppa/ubuntu jaunty main""\n""#Webmin""\n""deb http://download.webmin.com/download/repository sarge contrib""\n""#Chrome""\n""deb http://ppa.launchpad.net/chromium-daily/ppa/ubuntu jaunty main""\n""deb-src http://ppa.launchpad.net/chromium-daily/ppa/ubuntu jaunty main" >> /home/$USER/Escritorio/sources.txt

echo
echo "NUEVOS REPOSITORIOS AÑADIDOS"
echo

wget -q http://apt.last.fm/last.fm.repo.gpg http://packages.medibuntu.org/medibuntu-key.gpg http://apt.wicd.net/wicd.gpg http://download.virtualbox.org/virtualbox/debian/sun_vbox.asc http://www.webmin.com/jcameron-key.asc -O- | sudo apt-key add -

sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 4E5E17B5

sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 0xce90d8983e731f79

echo
echo "CLAVES PUBLICAS DE LOS NUEVOS REPOSITORIOS ACEPTADAS"
echo

sudo apt-get update

#Fin del script...

También me gustaría maquearlo un poco, es decir, que si lo ejecutas sin sudo te de la opción de ponerlo y que si da algún error la ejecución que avise y no ejecute lo que queda o algo de eso.

Je, sé que me queda mucho por recorrer, aquí estoy bloqueado, no sé cómo juntarlo, supongo que con un test y un if? en fin, si alguien me puede dar algún consejillo sobre esto o sobre qué sería interesante aprender o algún tutorial bueno, pues yo agradecido, y si no pues agradecido igualmente.

Un saludo.

Imagen de razaAztk
+1
0
-1

Hey bro! que bien!
La mejor forma de aprender bash (o cualquier otro lenguaje) es haciendo programas y scripts! :)
Bueno, aunque veo que estas usando el clásico shell en vez de bash, (lo digo por el #!/bin/sh en vez de #!/bin/bash).

Para lo que pides del root, una forma es con:

if [ $USER != root ]; then
  echo "Debes ser superusuario para ejecutar este script."
  echo ":P"
  exit
fi

Saludos!


void hey(int x,int y)
{
if (x && y)
 printf("http://libertadpunk.blogspot.com/");
else
 printf("http://banderaazteca.hi5.com/");
}
+1
0
-1

void hey(int x,int y)
{
if (x && y)
 printf("http://libertadhack.blogspot.com/");
else
 printf("http://libertadpunk.blogspot.com/");
}
Imagen de josecash
+1
0
-1

Cojonudo, gracias tio.

+1
0
-1