Mostrando las entradas con la etiqueta prograbash. Mostrar todas las entradas
Mostrando las entradas con la etiqueta prograbash. Mostrar todas las entradas

jueves, 1 de noviembre de 2012

Curso scripting bash rutinas y funciones


Esta ya es la penúltima parte de nuestros tutoriales de bash :(,pero en esta ocasión aprenderemos algo muy funcional ya que su mismo nombre lo dice funciones, también aprenderemos sobre las bibliotecas de rutinas ya que guardan algunos datos que los podemos consultar cada vez que queramos pero sin volver a escribir lo que seria la biblioteca de la rutina o función.

En distintos lenguajes de programación que he aprendido me han ayudado bastante las funciones y en bash no es la excepción.

Primero que nada la sintaxis de nuestra funcion en bash es asi

function nombre_de_la_funcion ()
{
bibliotaca de comandos
}

Algo de lo que se pueden haber dado cuenta es que no es lo mismo una rutina y una funcion,ya que en las rutinas esta es la sintaxis

nombre_de_la_rutina ()
{
bibliotaca de comandos
}


Cual es la diferencia,bueno vamos a darles un repaso y ustedes mismos lo veran

Funciones

Vamos a comenzar por lo básico pero aun así a estas alturas de los tutoriales ya debes saber que es un bucle y su sintaxis,bueno si no es así date una vuelta por los tutoriales pasados


Parte 1


Parte 2


Parte 3

Parte 4  

Parte 5 

Parte 6

Parte 7 


Parte 8

Bueno para nuestro ejemplo vamos a usar el bucle while y una funcion

1.Definimos una función

#!/bin/bash 

function ejemplo ()
{
echo Datos de hoy `date`
}

2.La llamamos

ejemplo

3.Listo ahora vemos el ejemplo

#!/bin/bash 

function ejemplo ()
{
echo Datos de hoy `date`
}
ejemplo

Lo ejecutamos

¿Que imprime en la terminal?

Este comando

echo Datos de hoy `date`

¿porque?

Quen sabe,no no es cierto lo imprime porque esta adentro de nuesta funcion de ejemplo y lo llamamos con

ejemplo

Como pueden darse cuenta para llamar la funcion no necesitamos asignale un valor,por ejemplo $

$ejemplo

Pero de hecho si lo ejecutamos así

#!/bin/bash 

function ejemplo ()
{
echo Datos de hoy `date`
}
$ejemplo

No da error, pero no imprime nada

¿Por que?

Porque la función no la toma en cuenta porque no es llamada y aunque $ejemplo valga algo,el valor es nulo (0) y tampoco se imprime en la pantalla y esto hace que se ejecute con un valor de 0

Ahora veamos el bucle while

#!/bin/bash

clear

vp=0

function ejemplo ()
{
echo "Numero principal"
}

while [ $vp -le 10 ]; do
        ejemplo
        echo "$vp"
        (( vp=$vp+1 )) 
        sleep 1;
done

clear

ejemplo

echo $vp


Ejecuten,vean lo que hace

Después vean la explicación

#!/bin/bash

clear # Limpiamos la consola

vp=0 # variable principal vale 0

function ejemplo () # Definimos funcion
{
echo "Numero principal" # En la biblioteca solo se encutra esto
}

while [ $vp -le 10 ]; do # Iniciamos bucle si la variable principal vale meno de 10
        ejemplo # Llamamos la funcion ejemplo
        echo "$vp" # llamamos la variable principal
        (( vp=$vp+1 )) # hacemos operacion aritmetica en la variable principal
        sleep 1; # esperamos 1 segundo y repetimos el bucle hasta que se rompa
done

clear

ejemplo # llamamos la funcion ejemplo de nuevo

echo $vp # llamamos la variable principal de nuevo


¿Y esto para que sirve?

Bueno puede que ya te hayas dado cuenta,sirve para no definir nuevamente una serie de comandos o comando al solo llamar la función con el nombre de la misma.

Por ejemplo lo anterior pero sin funciones seria asi

#!/bin/bash

clear

vp=1

while [[ $vp = 1 ]] ; do

          echo "Numero principal"
          echo $vp
          sleep 3;
          vp=2

done

echo "Numero principal"

echo $vp

¿Lo veo mas simple?

Es porque lo es,las funciones sirven si almacenan una biblioteca muy grande de ordenes y en este caso solo era el comando echo.

Vamos a ver algo útil.

Vamos a crear una funcion de error

Esta seria mas o menos así:

function error ()
{
 echo "Error inesperado"
 sleep 1;
 echo "Saliendo..."
 sleep 2;
 exit 1;
}

Bueno los comandos de la biblioteca de la funcion de arriba no hace falta explicarlos

Ahora vamos a añadirlos a un script,pero ahora vamos a usar la estructura selectiva if

Enlace




A lo que hace el código no le pongan mucha atención solo es un ejemplo que se me ocurrió ya que se puede usar lo que sea parte del shell scripting,lo importante aquí es que en la parte

if [ $pass = $passd ] ; then

echo "Bienvenido"

else

error # Aqui se llama
fi

Se llama la funcion de error que creamos

Y también en la parte

case $selection in

1)
ls
;;
2)
pwd
;;
3)
netstat
;;
*)
error # Aqui se llama otra vez
;;
esac

La llamamos y ejecuta lo mismo!!!

Pero sin definirla de nuevo, porque vean como seria este script sin usar funciones

#!/bin/bash

# Principal

#------------------

passd="password"

echo "Hola $LOGNAME"

echo "Escribe tu contraseña"

read pass

if [ $pass = $passd ] ; then

echo "Bienvenido"

else
echo "Error inesperado"
  sleep 1;
  echo "Saliendo..."
  sleep 2;
  exit 1;

fi

sleep 1;
clear

echo "Que decea hacer"

echo "1)Listar su contenido"

echo "2)Ver donde esta"

echo "3)Ver su estado se red"

read selection

case $selection in

1)
ls
;;
2)
pwd
;;
3)
netstat
;;
*)
echo "Error inesperado"
  sleep 1;
  echo "Saliendo..."
  sleep 2;
  exit 1;
;;
esac
#--------------
# Final

Rutinas

Bien una rutina es un poco diferente y de hecho no se si sea lo mismo y solo es que las personas lo llaman distinto,bueno veamos su sintaxis en un ejemplo y vamos a usarla diferente para ver un poco de diferencia

#!/bin/bash

fecha ()
{
echo "La fecha de hoy `date`"
}

vp=`fecha`

echo $vp

Como podemos ver en el ejemplo anterior le pasamos los comandos de una rutina a una variable, esta es una cualidad que tienes las rutinas,podemos definir su contenido y luego llamarlo definiendo su valor en una variable o tambien igual que una función

Ejemplo

#!/bin/bash

fecha ()
{
echo "La fecha de hoy `date`"
}

fecha

O como vimos antes,pasarle su valor a una variable y despues llamarla

#!/bin/bash

fecha ()
{
echo "La fecha de hoy `date`"
}

vp=`fecha`

echo $vp

Bueno, también existe un uso mas avanzado de rutinas que veremos a continuación pero primero,como definir variables en una rutina

Las variables que estén adentro de una rutina

rutina ()
{
Aqui
}

se consideran globales por lo cual serán vistas en todo el script pero tambien podemos definir variables locales con el comando typeset

Por ejemplo si no hacemos un script muy grande se puede leer de manera global como en este ejemplo:

#!/bin/bash

hola (){
 hola="Hola Mundo"
 echo $hola
}
hola="Hola"
hola
echo $hola

Pero si queremos definir una variable local,podemos hacer uso del comando typeset

Por ejemplo

#!/bin/bash

hola ()
{
typeset hola
hola="Hola Mundo"
echo $hola
}
hola

Ahora si vamos a ver el uso avanzado de esto,con el uso avanzado de variables en este caso:

$1..$3..$9 

Por ejemplo

#!/bin/bash
ejemplo ()
{
  typeset num
  (( num = $1 + $2 ))
  echo La suma es : $num
  return $num
}

ejemplo 10 10

Ejecuten y vean lo que hace

Aquí no voy a explicar porque es dificil(de explicar) solo pondré unos ejemplos para que vean como funcionan

Ejemplo 1

#!/bin/bash
ejemplo ()
{
 echo "Hola $1"
}
ejemplo $LOGNAME

Ejemplo 2

#!/bin/bash
hola ()
{
 echo $1
}  
hola "Hola Mundo" "ñ_ñ"
hola "Hola otra vez" ":D"
hola "Hola de nuevo" ":P"
hola "De nuevo" ":)"
hola "Ya me aburri" ":/"


Ejemplo 3

#!/bin/bash
hola ()
{
 echo $2
}  
hola "Hola Mundo" "ñ_ñ"
hola "Hola otra vez" ":D"
hola "Hola de nuevo :P"
hola "De nuevo ñ_ñ"
hola "Ya me aburri :/"

Ejemplo 3

#!/bin/bash
hola ()
{
 echo $1 $2
}  
hola "Hola Mundo" "ñ_ñ"
hola "Hola otra vez" ":D"
hola "Hola de nuevo" ":P"
hola "De nuevo" ":)"
hola "Ya me aburri" ":/"

Bueno eso es todo en este tutorial en el próximo tutorial(el ultimo) veremos GUI basica

Leer más...

tbashconverter 1.2.1 script en bash para ffmpeg

Vaya que pena,lo que pasa es que me di cuenta que en la version pasada

Enlace
No hice bien el trabajo, había unos errores de operadores unarios :\ y no me di cuenta porque nadie a comentado |:(

Bueno me di cuenta y fue simple arreglar esto,el problema fue que se me haya pasado con un algoritmo tan simple :(

No era tanto el problema,solo que al elegir el formato de salida si se presiona ok no lo guardaba,se tenia que dar doble clic sobre el argumento,o si se cancelaba en esa parte tampoco la reconocía.

Bueno ya lo solucione,el problema estaba en la condicional a la hora de elegir el formato de salida

Ahí abajo se ve la documentación de zenity

Bueno este es el código arreglado

Enlace

Bien para usarlo es igual que siempre

Copian el código

En terminal

cd ~/


touch tbashconverter.sh


gedit tbashconverter.sh

Pegan el código y cierran

Y después


chmod +x tbashconverter-1.2.sh

Y ejecutan con

./tbashconverter-1.2.sh

o

bash tbashconverter-1.2.sh

o

con nautilus

clic ejecutar en un terminal

O si prefieren como ya tiene ruta donde salvar el vídeo pueden moverlo a /usr/bin para poder usarlo donde sea con solo escribir tbashconverter en terminal

sudo mv ./tbashconverter.sh /usr/bin/tbashconverter
También lo que pasa es que las funciones de ffmpeg son muchas

Enlace

Y si todo va bien le iré añadiendo mas y mas funciones ,que claro que se pueden usar desde la terminal,pero lo intentare hacer mas simple :)

Leer más...

martes, 23 de octubre de 2012

Curso bash Uso avanzado de variables



Esta parte ya de las ultimas de estos tutoriales tipo cursos de bash,solo abra 10 partes y esta es la parte numero 8,



Parte 1

Parte 2

Parte 3

Parte 4  

Parte 5 

Parte 6
Parte 7 

en esta ocasión veremos el uso avanzado de variables,en los tutoriales pasados ya hemos visto el uso de variables pero ahora los veremos de otra forma



En los tutoriales pasados los vimos de esta manera

mi_maquina="super-tux"

echo "$mi_maquina"

Ese es el uso normal con el símbolo $

Pero también lo podemos hacer de esta manera

mi_maquina="super-tux"

echo ${mi_maquina}

Cual es la diferencia?

Pues no es mucha,de hecho es idéntica a la pasada pero nos dar pie en los siguientes símbolos que veremos

Pero por ejemplo hay una definicion identica solo que se inicia con : y en vez de consultarla es definirla

En ves de

mi_maquina="super-tux"

echo "$mi_maquina"


Es

: ${mi_maquina:="super-tux"}

echo ${mi_maquina}

Aquí si hay un poco de diferencia aunque no mucha ya que la verdadera diferencia entraria al usar


: ${mi_maquina:-"super-tux"}



1.La variable que veremos primero es la variable especial para ver la longitud de una variable

El símbolo o mejor dicho patrón o sintaxis es esta

${#variable} 

Ahora como usarla en un script

#!/bin/bash

variable="uno"

echo "La longitud de la letra uno es ${#variable}"

Como vieron si ya lo ejecutaron ejecuta la longitud de la cadena de la variable $variable,por ejemplo veamos esto

#!/bin/bash

variable="uno"

echo "La longitud de la letra $variable es ${#variable}"

Imprime lo mismo solo que primero imprime la variable como lo habiamos visto antes,esto a que se debe?

Se debe a que primero usamos la $variable como cadena que seria uno(lo imprime en pantalla) y luego la volvemos a usar consultar pero ahora con el patrón ${#variable} que mide la longitud de la cadena de nuestra variable que seria tres u1-n2-o3.

Esto se puede usar de muchas maneras

2.La segunda variable que veremos sera la que usa el valor o valores de vectores y este es el patrón

${varible[numero]} 

Pero primero que es un vector

Rápidamente un vector es el numero de una variable encerrada en []

Por ejemplo

#!/bin/bash

variable[0]="Hola"
variable[1]="Mundo"

echo ${variable[0]} ${variable[1]} 

Hay que poner en claro que los vectores los podemos iniciar en 0 y no en 1

Por ejemplo

#!/bin/bash

# Mi sistema

OS[0]=`hostname`
OS[1]=`uname`
OS[2]=$LOGNAME
OS[3]="y estas usando variables especiales!!"

echo Eres ${OS[2]} estas usando ${OS[1]} en la maquina ${OS[0]} ${OS[3]}  

Ahora,hay un valor que entra dentro de este mismo que también seria el pasado,ha esto es a lo que me refiero

Saber cuantos vectores estamos usando

Este es el símbolo

${#variable[*]} 


Por ejemplo

#!/bin/bash

# Mi sistema

variable[0]="uno"
variable[1]="dos"
variable[2]="tres"
variable[3]="cuatro"

echo ${variable[0]} ${variable[1]} ${variable[2]} ${variable[3]} estas usando ${#variable[*]} vectores

Eso es todo

Hay mas variables avanzadas pero ya entrarían en el core scripting por ser mas avanzadas y de momento solo nos estamos introduciendo al mundo de Shell scripting


Leer más...

domingo, 7 de octubre de 2012

Curso scripting bash operaciones aritmeticas

Bueno esta es la parte 7 de estos tutoriales tipo cursos de lo que es programación bash,como les dije en la entrada pasada de estos tutoriales vamos a ver operaciones aritméticas o numéricas ya que esto es de lo mas simple pero se ha ido quedando y bueno antes de hacer mas,lo vamos a hacer

Partes anteriores


Parte 1


Parte 2


Parte 3

Parte 4  

Parte 5

Parte 6
Bueno comenzemos con los ejercicios y despues los explico

Ejercicio 1

#!/bin/bash

numero1=1
numero2=2

let operacion=$numero1+$numero2

echo $operacion




Bien lo explico con #

#!/bin/bash

numero1=1 # Definimos un numero en una variable
numero2=2 # Definimos otro numero en otra variable

let operacion=$numero1+$numero2 # Definimos la operación en otra variable y las sumamos(debe llevar let las operaciones numéricas)

echo $operacion # Llamamos la variable que suma las dos primeras variables

Bueno antes de todo,pueden darle una vuelta a la entrada de comparación de valores,ya que no es lo mismo comparar cadenas a comparar números o flotantes


Enlace

Les dejo lo que necesitamos de todas formas ya que no lo incluí en la otra entrada




-                                 Menos unario
!                 Negación lógica
* / %                    Multiplicación, división y resto
+ -­                          Suma y resta
<= >= < >  Operadores relacionales
== !=                 Igualdad y desigualdad
=               Asignación a variable
&&            Y lógico
||                              O logico


Ejercicio 2

#!/bin/bash

numero1=1
numero2=2

(( operacion=$numero1*$numero2 )) # ¿!!!!?

echo $operacion

Aquí lo único que hay que resaltar es que no necesariamente se debe llevar let para las expresiones aritméticas, también las podemos definir encerrando la variable que hace la operación en (( )) como en el ejemplo anterior

Pregunta 1(no necesitan comentar)

Bien que pasaría si hacemos esto?


#!/bin/bash

numero1=1
numero2=2

operacion=$numero1+$numero2

echo $operacion

Ejercicio 3 

No necesariamente necesitamos definir muchas variables,de hecho podemos hacer operaciones con una sola

#!/bin/bash

numero1=1

(( operacion=$numero1+$numero1 ))

echo $operacion

O también definiendo un numero sin variable

#!/bin/bash

numero1=1

(( operacion=$numero1+10 ))

echo $operacion

O sin variables

#!/bin/bash

(( operacion=10+10 ))

echo $operacion

Ejercicio 4

Ahora si lo usamos con read de la entrada pasada así seria una calculadora:

#!/bin/bash

clear
echo "Calculadora de suma"

sleep 1;

echo "Escribe un numero: "

read numero1

echo "Escribe otro numero: "

read numero2

echo "sumando..."

sleep 2;

(( operacion=$numero1+$numero2 ))

echo "El resultado es $operacion"

Ejercicio 5

Ahora imagínense lo que podríamos hacer usando,los bucles usando case.esac

Por ejemplo:

Enlace

Video




Pregunta 2(no necesitan comentar)


Se puede realizar el ejemplo anterior sin usar case,esac,si es así realizalo


Bueno pues eso es todo,ya que esto funcionado con los antiguos tutoriales se pueden hacer grandes cosas,por ejemplo algo que he visto que siempre hacen es el programa que saca la media de la calificación de un montón de alumnos, también se puede hacer en bash pero ya con los tutoriales pasados deben tener idea de como se hace.Hasta luego

Leer más...

sábado, 22 de septiembre de 2012

Curso scripting bash (read case esac)


Esta es la parte 6 de los tutoriales tipo cursos para aprender como funciona el lenguaje de programacion bash y porque no,para aprender a crear scripts o programas que nos ayuden a usar o administrar el sistema

Bueno en estas son las partes anteriores:

Parte 1


Parte 2


Parte 3

Parte 4  

Parte 5

En esta ocacion veremos case y esac que seria case y su palabra alrevez esac,como ocurre con if en bash se cierra con fi,que es if volteado,bueno case y esac nos permiten tomar deciciones mezclando esto con read,read es una toma de decisiones,es interactuar desde el teclado con la terminal,esto ya lo hemos visto en python y mono C# en este sitio,y bueno vamos a empezar con los ejemplos:

El programa hola mundo,es el que se encarga de imprimir texto en la terminal o ventana en dado caso de un lenguaje,el programa hola mundo fue el primero que vimos en estos tutoriales pero lo traigo de nuevo,vitaminado con condicionales if,fi y el comando read

Código:

#!/bin/bash
echo " Escribe hola mundo"
tex="Hola Mundo"
read opcion
if [[ $opcion = $tex ]]
then
echo -e "\e[1;34m$opcion\e[0m"
else
echo "No escribiste bien"
exit 0;
fi




Lo explico

Aquí usamos una variable(tex) para definir el texto "Hola Mundo" nos da toma de decisión con el comando read y al final compara con una condicional(ya las vimos en una entrada pasada) si se cumple el texto,si se cumple ejecuta Hola Mundo en color azul y si no se cumple muestra "No escribiste bien" y se cierra el programa.


Ahora ¿el comando case para que sirve?

bueno nos ayuda ha desviar la respuesta a un comando,que puede ser del sistema o algo local

codigo:

#!/bin/bash
echo "Presiona t para mostrar texto"
echo "Presiona l para listar tu contenido"
read opcion
case $opcion in
t)
echo "Hola Mundo"
;;
l)
ls
;;
*)
echo "Opcion incorrecta saliendo..."
;;
esac

Bien,explico el código con #

#!/bin/bash
echo "Presiona t para mostrar texto" # Mostramos la opciones
echo "Presiona l para listar tu contenido" # Mostramos las opciones
read opcion # Leemos las opciones
case $opcion in # Tomamos las opciones
t) # Si elegimos t...
echo "Hola Mundo" #Muestra esto
;; # Símbolo de cierre de elección
l) # Si elegimos l...
ls # Ejecuta esto,comando del sistema que lista el contenido
;; # Simbolo de cierre de elección
*) # Si no elegimos ninguna de las anteriores...
echo "Opcion incorrecta saliendo..." # Se muestra esto y sale
;; # Simbolo de cierre de elección
esac # Cierre de case

Ahora,como se pueden haber dado cuenta solo se elige de a una letra l) o t) esto no es necesariamente así,ya que se puede usar texto) o listar),incluso esto puede ir mas haya usando este símbolo | que quiere decir or en español o,por ejemplo tener dos palabras o letras para ejecutar,solo un comando,por ejemplo listar|LISTAR) que seria listar o LISTAR

codigo:

#!/bin/bash
echo "Presiona t para mostrar texto"
echo "Presiona l para listar tu contenido"
read opcion
case $opcion in
t|texto|TEXTO) # Varias palabras o letras
echo "Hola Mundo"
;;
l|listar|LISTAR)
ls
;;
*)
echo "Opcion incorrecta saliendo..."
;;
esac

Aquí lo único que se tiene que explicar es que se pueden usar varias palabras o letras que si son elegidas con read,ejecutara solo un comando.

Ahora como hacer para que no se cierre hasta que escribamos Hola Mundo? bueno para eso haremos uso de un bucle while

#!/bin/bash
while [ 1 ]; do
read opcion
case $opcion in
t|T)
echo "Hola Mundo"
;;
s|S)
exit 0;
;;
help)
echo "Presiona s para salir"
echo "Presiona t para mostrar texto"
;;
*)
echo "Opcion incorrecta"
echo "Presiona help para obtener ayuda"
;;
esac
done

Vieron,se pueden hacer cosas muy buenas con bash,ahora explico el codigo con #

#!/bin/bash
while [ 1 ]; do # Iniciamos bucle con una condición logica,repetira y repetira los comandos hasta encontrarse con algún exit que lo cierre o algún argumento que rompa el bucle
read opcion
case $opcion in
t|T)
echo "Hola Mundo"
;;
s|S) # Este comando cierra el bucle y sale del programa
exit 0; Argumento
;;
help) # Añadido help para mostrar los textos
echo "Presiona s para salir"
echo "Presiona t para mostrar texto"
;;
*) # Si se presiona cualquier otra tecla que no este asignada,mostrara esto y podremos ver la guia del pequeño programa
echo "Opcion incorrecta"
echo "Presiona help para obtener ayuda"
;;
esac
done

Bien ahora si usamos el comando clear(no lo uso mucho) para limpiar la pantalla y que se vea un poco mejor usaríamos algo como lo que esta en el enlace de abajo, también usariamos sleep en el codigo y para que se vea un poco mas bonito vamos a identarlo

Enlace

Les recomiendo que identen, aunque bash no sea como python y de un error,les recomiendo que identen con tab los scripts que creen,los dos codigos de abajo no estan identados.

Bueno en el código use n=1,que quiere decir que le doy el valor de 1 a la variable n,luego cuando entra en el bucle y ve si la variable n es igual a 1,si lo ejecuta,luego cuando encuentra en un comando que n es 2 u otro valor se cierra,es parecido a exit solo que en ocaciones puede ser mas eficas si el codigo es largo ya que tambien se pudo haber escrito de esta manera

Código anterior:

#!/bin/bash

n=1
while [ $n = 1 ] 
do

clear
echo "Texto o Salir (t/s)"
read opcion

case "$opcion" in

t|T)
clear
echo "Hola Mundo"
sleep 3
n=2 # Argumento que rompe el bucle
;;
s|S)
n=2
;;
help)
                clear
echo "Presiona s para salir"
echo "Presiona t para mostrar texto"
sleep 3
;;
*)
clear
echo "Opcion incorrecta"
echo "Presiona help para obtener ayuda"
sleep 3
;;

esac
done

Otra forma de escribirlo:


#!/bin/bash

while [ 1 ]; do

  clear
echo "Texto o Salir (t/s)"
read opcion

  case "$opcion" in

  t|T)
clear
echo "Hola Mundo"
sleep 3
exit 1;
;;
s|S)
exit 2;
;;
help)
                clear
echo "Presiona s para salir"
echo "Presiona t para mostrar texto"
sleep 3
;;
*)
clear
echo "Opcion incorrecta"
echo "Presiona help para obtener ayuda"
sleep 3
;;

  esac
done

Les dejo un video de demostración del codigo anterior,ya identado y ejecutado




Bueno eso es todo,lo que hay que hablar sobre case esac y read,en la proxima entrada veremos operaciones aritmeticas que no lo hemos visto y es de lo primero que debi haber escrito XD


Leer más...

miércoles, 19 de septiembre de 2012

Script en bash para la administrasion de Debian/Ubuntu o basados en apt

De pronto se me ocurrio programar un script para administrar o facilitar el uso de apt de Debian o basados,esto seria escrito en bash para mas rápido ya que también se podría hacer en python,pero mas rápido y accesible en bash,bueno yo siempre googleo antes lo que quiero hacer,por si esta en Internet y ver si servirá de algo lo que voy a escribir porque si ya alguien lo a hecho de nada sirve hacerlo,a menos que fuera otra alternativa,bueno el hecho es que encontré un excelente script para hacer esto,en

foro.elhacker.net

Bueno el hecho es que el script que encontre es muy bueno y mejor no escribí el mio,pero bueno el script permite,buscar,instalar y otras cosas mas sobre paquetes de software basados en apt,o sea en Debian

Por la fecha del script lo escribieron en el año 2006,pero eso no importa ya que funciona perfecto

Código:


#!/bin/bash
#Fecha 11-03-2006
#Autor: si,tu
#Licencia GNU-GPL
#Tomado parte del ubuntusetup de ryan (ubuntu-geek)
echo -e "\033[1;32m----------- Opciones -----------\033[0m";
echo "1 -> Instalar paquetes";
echo "2 -> Ver paquetes instalados";
echo "3 -> Actualizar el sistema";
echo "4 -> Buscar paquete";
echo "5 -> Eliminacion automantica de paquetes viejos";
echo "6 -> Chequear Dependencias";
printf "\033[1;32m\tOpción >> \033[0m";
read PAK
case $PAK in
1)
printf "\033[1;30mNombre del Paquetes a instalar: >>\033[0m";
read PAKN
if [ "$PAKN" = "" ];then
exit 1
else
sudo apt-get install $PAKN
fi
;;
2)
printf "\033[1;30mEscriba aqui el nombre de algun paquete que desea ver si lo tiene isntalado: >> \033[0m";
read PAKN
if [ "$PAKN" = "" ];then
exit 1
else
echo -e "\033[1;30mTiene el/los siguiente/s paquete/s: >>\033[0m";
sudo dpkg -l | grep $PAKN | awk '{print $2}' | nl -s " - "
fi
;;
3)
echo -e "\033[1;30mSe va actualizar el sistema\033[0m";
sudo apt-get upgrade && sudo apt-get dist-upgrade
;;
4)
printf "\033[1;30mNombre del Paquetes a buscar: >> \033[0m";
read PAKB
if [ "$PAKB" = "" ];then
exit 1
else
echo -e "\033[1;30mID ->\tPaquete\t -  Comentario:\033[0m";
apt-cache -v search $PAKB | nl -nrz -w3 -s " -> " | more
busqueda=(`apt-cache search $PAKB | cut -f1 -d " "`)
printf "\033[1;30mID del paquete que va instalar >>\033[0m";
fi
read PAKN
$(PAKN=0)
if [ ! -z "$PAKN" ]; then
echo -e "\033[1;30mInstalando el paquete $PAKN -> \033[0m" ${busqueda[$PAKN-1]};
sudo apt-get install ${busqueda[$PAKN-1]}
fi
;;
5)
echo -e "\033[1;30mSe eliminaran paquetes viejos automaticamente\033[0m";
sudo apt-get autoclean
;;
6)
echo -e "\033[1;30mSe chequearas si hay dependencias corruptas y si las hay se arreglaran\033[0m";
sudo apt-get -f check
;;
*)
exit 1
;;
esac 

Ese es el codigo,para usarlo copienlo y pegenlo en un archivo de texto,luego denle permisos de ejecución y ejecutenlo con el interprete o desde la carpeta,ejemplo

1.Copia el código

2.En terminal

nano administracionapt.sh

3.Pega

ctrl+alt+v

Guarda

ctrl+o

Sal

ctrl+x

4.Dale permisos de ejecución

chmod +x administracionapt.sh

5.Ejecuta

./administracionapt.sh


 Eso es todo

Script visto en:

foro.elhacker.net/ejercicios/scripts_en_bash-t54510.0.html
Leer más...