Bueno, pues aqui copio uno que no es mio, sino de un forero del cual creo que efectua grandes trabajos.
Es para grabar CD's:
#!/bin/bash
#############################################################
# #
# Por cortesia del ..sR. aDiKtO.. #
# #
#############################################################
# -- Declaracion de constantes --
TITULO="..aDiKcIoN.."
# -- Inicializacion de variables --
SALIR="no"
VOLVER="no"
SECCION=""
ALTO_DIALOG="7"
ANCHO_DIALOG="30"
ALTO_MENU="21"
ANCHO_MENU="62"
ANCHO="78"
ALTO="24"
MSG=" \n\t\t\t\033[40m\033[37m Cortesia del\033[40m\033[1;37m ..sR. aDiKtO.. \033[0m\n"
#------------------------------------------------------------------------
#-------------------------- MENU MUSICA ---------------------------------
#------------------------------------------------------------------------
function MUSICA () {
VOLVER="no";SALIR="no";SECCION="Musica"
dialog --clear --title "$TITULO" \
--menu " \n\
Elige una opción:" "14" "$ANCHO_MENU" "6" \
"Copiar CD" "Leer un cd entero y luego grabarlo" \
"Leer canciones" "Eliges las canciones k kieres grabar" \
"Grabar" "Grabar canciones k tienes en el hd" 2> /tmp/menu.tmp.$$
retval=$?
opcion=`cat /tmp/menu.tmp.$$`
rm -f /tmp/menu.tmp.$$
#----------------------------------------------------------------------------------------------------------
case $retval in
0)case $opcion in
'Copiar CD') dialog --title "$TITULO" --msgbox "\nIntroduzca el CD k kieres copiar y pulse " "$ALTO_DIALOG" "$ANCHO_DIALOG"
mkdir $HOME/.temp 2>/dev/null
cd $HOME/.temp
if cdda2wav -B -D $GRAB -s -x
then
sleep 1
dialog --msgbox "Introduzca el CD virgen y pulse " "$ALTO_DIALOG" "$ANCHO_DIALOG"
sleep 1
if cdrecord -v speed=$VEL dev=$DEV -pad -audio *.wav
then
sleep 1
else
dialog --msgbox "ERROR: No se ha podido grabar" "$ALTO_DIALOG" "$ANCHO_DIALOG"
fi
else
dialog --msgbox "ERROR: No se ha podido leer ningun CD" "$ALTO_DIALOG" "$ANCHO_DIALOG"
fi
cd
rm -rf $HOME/.temp 2>/dev/null
;;
#----------------------------------------------------------------------------------------------------------
'Leer canciones')dialog --title "$TITULO" --msgbox "\nAun no está esta función" "$ALTO_DIALOG" "$ANCHO_DIALOG"
;;
#----------------------------------------------------------------------------------------------------------
'Grabar')dialog --title "$TITULO" --msgbox "\nAun no está esta función" "$ALTO_DIALOG" "$ANCHO_DIALOG"
;;
'Volver') VOLVER="si"
;;
'Salir') VOLVER="si";SALIR="si"
;;
esac
;;
1)VOLVER="si";;
255) SALIR="si"
esac
}
#------------------------------------------------------------------------
#-------------------------- MENU DATOS ----------------------------------
#------------------------------------------------------------------------
function DATOS () {
VOLVER="no";SALIR="no";SECCION="datos"
dialog --clear --title "$TITULO" \
--menu "\nYa sabes de k va esto, eliges una opcion y pulsas "\
"10" "63" "2" \
"CDrom" "Leer el CD y luego grabarlo"\
"Disco Duro" "Grabar archivos del disco duro" 2> /tmp/menu.exp.tmp.$$
retval=$?
opcion=`cat /tmp/menu.exp.tmp.$$`
rm -f /tmp/menu.exp.tmp.$$
case $retval in
0)case $opcion in
#----------------------------------------------------------------------------------------------------------
'CDrom') dialog --title "$TITULO" --msgbox "\n Intruzca el CD k kieres grabar y pulsa " "6" "45"
if dd if=$GRAB of=/tmp/imagen.iso &>/dev/null
then
dialog --title "$TITULO" --msgbox "\n El CD ya se ha leido, introduzca ahora el CD virgen y pulse " "8" "45"
sleep 1
if cdrecord -v speed=$VEL dev=$DEV -eject /tmp/imagen.iso 2>/dev/null
then
dialog --title "$TITULO" --menu "\nImagen grabada perfetamente" "10" "63" "1" "Eliminar la imagen de tu hd (/tmp/imagen.iso)" "" >/tmp/menu.tmp.$$
retval=$?
opcion=`cat /tmp/menu.tmp.$$`
rm -f /tmp/menu.tmp.$$
case $retval in
0)case $opcion in
'Eliminar la imagen de tu hd (/tmp/imagen.iso)') rm -f /tmp/imagen.iso 2>/dev/null
dialog --title "$TITULO" --msgbox "\n Imagen eliminada" "8" "40"
;;
esac ;;
1)VOLVER="si";;
255)VOLVER="si";SALIR="si";;
esac
VOLVER="si"
else
dialog --title "$TITULO" --msgbox "\n ERROR: El CD no se ha grabado" "6" "35"
fi
else
dialog --title "$TITULO" --msgbox "\n ERROR: El CD no se ha leido" "6" "33"
fi
;;
#----------------------------------------------------------------------------------------------------------
'Disco Duro')
VOLVER="no";SALIR="no"
function seleccion ()
{
cd /
echo >/tmp/pos
url=$(echo "/")
opc = "y"
until test $opc = n 2>/dev/null
do
ls > /tmp/adikcion
echo -e "cd $url" > /tmp/adk
echo -e "dialog --title \"$TITULO\" --menu \"\\nIndica k archivo/s kieres grabar/añadir:\\n\\n\" \"20\" \"50\" \"10\" \\" >> /tmp/adk
aux=$(awk '{print "\""$1"\"" "\t\t\t" "\"" "\""}' /tmp/adikcion)
echo $aux "2> /tmp/menu.exp.tmp.\$\$" >> /tmp/adk
echo -e "retval=\$?" >> /tmp/adk
echo -e "opcion=\`cat /tmp/menu.exp.tmp.\$\$\`" >> /tmp/adk
echo -e "rm -f /tmp/menu.exp.tmp.\$\$" >> /tmp/adk
echo -e "case \$retval in" >> /tmp/adk
echo -e "0)case \$opcion in" >> /tmp/adk
awk '{printf "\047"$1"\047"")" " cd " "\""$1"\"" "\n" ";;""\n"}' /tmp/adikcion >> /tmp/adk
echo -e "esac \n ;; \n 1) echo si > /tmp/pos ;; \n 255) echo si > /tmp/pos ;; \nesac\nurl=\$(pwd)\necho \$url > /tmp/ru\necho \$opcion > /tmp/ar" >> /tmp/adk
chmod 777 /tmp/adk
/tmp/adk 2>/dev/null
url=$(more /tmp/ru)
pwd=$(pwd)
pos=$(more /tmp/pos 2>/dev/null)
if test "$pos" = "si"
then
if test $url = "/"
then
VOLVER="si"
opc=$(echo n)
break
else
cd ..
echo > /tmp/pos
url=$(pwd)
fi
else
if test $url != $pwd
then
cd $url 2>/dev/null
else
opc=$(echo n)
fi
fi
done
aux=$(more /tmp/ar)
echo $url/$aux > /tmp/ar
}
mkdir $HOME/.adk 2>/dev/null
cd $HOME/.adk
function MOVER ()
{
cd $HOME/.adk
for i in *
do
direc=$(cat /tmp/archi | grep $i 2>/dev/null)
mv $i $direc 2>/dev/null
done
rm /tmp/archi 2>/dev/null
cd
}
#Bucle para elegir todos los archivos k kieres, y moverlos a $HOME/.adk, la ubicacion donde estaban se guarda en /tmp/archi
#opc=$(echo n)
until test $opc = n 2>/dev/null
do
seleccion
cd $HOME/.adk 2>/dev/null
cat /tmp/ar >> /tmp/archi 2>/dev/null
direc=$(cat /tmp/ar 2>/dev/null)
mv $direc ./ 2>/dev/null
done
# Comprobacion del tamaño de lo k kieres grabar
du -m $HOME/.adk > /tmp/.tam
tam=$(awk '{print $1}' /tmp/.tam)
rm /tmp/.tam
if test $tam -le $TAM
then
dialog --msgbox "Introduzca un CD virgen y pulse " "7" "40"
rm /tmp/adikcion 2>/dev/null
rm /tmp/adk 2>/dev/null
rm /tmp/ru 2>/dev/null
rm /tmp/menu.exp.tmp.** 2>/dev/null
rm /tmp/ar 2>/dev/null
rm /tmp/pos 2>/dev/null
cd $HOME/.adk &>/dev/null
if mkisofs -R -T -J -o /tmp/adikto.iso *
then
if cdrecord dev=$DEV speed=$VEL -v -eject /tmp/adikto.iso
then
sleep 1
rm -rf /tmp/adikto.iso
MOVER
else
sleep 1
dialog --title "$TITULO" --msgbox "ERROR: No se ha podido grabar la imagen" "7" "40"
MOVER
break
fi
else
dialog --title "$TITULO" --msgbox "ERROR: No tienes instalado mkisofs" "7" "40"
MOVER
fi
else
dialog --title "$TITULO" --msgbox "ERROR: La imagen es demasiado grande" "7" "40"
MOVER
fi
MOVER
VOLVER="si"
rm -rf $HOME/.adk &>/dev/null
rm -f /tmp/ar &>/dev/null
rm -f /tmp/archi &>/dev/null
;;
esac ;;
1)VOLVER="si"
MOVER
;;
255)VOLVER="si";SALIR="si"
MOVER
;;
esac
}
#------------------------------------------------------------------------
#-------------------------- MENU ISO ------------------------------------
#------------------------------------------------------------------------
function ISO () {
VOLVER="no";SALIR="no"
SECCION="Iso"
function Navegar () {
cd /
url=$(echo "/")
opc = "y"
until test $opc = n 2>/dev/null
do
ls > /tmp/adikcion
echo -e "cd $url" > /tmp/adk
echo -e "dialog --title \"$TITULO\" --menu \"\\nIndike donde esta la ISO:\\n\\n\" \"20\" \"50\" \"10\" \\" >> /tmp/adk
aux=$(awk '{print "\""$1"\"" "\t\t\t" "\"" "\""}' /tmp/adikcion)
echo $aux "2> /tmp/menu.exp.tmp.\$\$" >> /tmp/adk
echo -e "retval=\$?" >> /tmp/adk
echo -e "opcion=\`cat /tmp/menu.exp.tmp.\$\$\`" >> /tmp/adk
echo -e "rm -f /tmp/menu.exp.tmp.\$\$" >> /tmp/adk
echo -e "case \$retval in" >> /tmp/adk
echo -e "0)case \$opcion in" >> /tmp/adk
awk '{printf "\047"$1"\047"")" " cd " $1 "\n" ";;""\n"}' /tmp/adikcion >> /tmp/adk
echo -e "esac \n ;; \n 1) echo si > /tmp/pos ;; \n 255) echo si > /tmp/pos ;; \nesac\nurl=\$(pwd)\necho \$url > /tmp/ru\necho \$opcion > /tmp/ar" >> /tmp/adk
chmod 777 /tmp/adk
/tmp/adk 2>/dev/null
url=$(more /tmp/ru 2>/dev/null)
pwd=$(pwd)
pos=$(more /tmp/pos 2>/dev/null)
if test "$pos" = "si"
then
cd ..
echo > /tmp/pos
url=$(pwd)
else
if test $url != $pwd
then
cd $url 2>/dev/null
else
opc=$(echo n)
fi
fi
done
}
Navegar
aux=$(more /tmp/ar 2>/dev/null)
ar=$(echo $url/$aux)
ls -l $ar > /tmp/.tam
tam=$(awk '{print $5}' /tmp/.tam)
rm /tmp/.tam
if test $TAM -le $tam
then
dialog --msgbox "Introduzca un CD virgen y pulse " "7" "40"
rm /tmp/adikcion 2>/dev/null
rm /tmp/adk 2>/dev/null
rm /tmp/ru 2>/dev/null
rm /tmp/menu.exp.tmp.** 2>/dev/null
rm /tmp/ar 2>/dev/null
rm /tmp/pos 2>/dev/null
aux=$(echo $ar | grep *.iso)
if test "$ar" = "$aux"
then
if cdrecord dev=$DEV speed=$VEL -v -eject $ar
then
sleep 1
dialog --title "$TITULO" --msgbox "La ISO se ha grabado satisfactoriamente" "7" "40"
break
else
sleep 1
dialog --title "$TITULO" --msgbox "ERROR: No se ha podido grabar la imagen" "7" "40"
break
fi
else
dialog --title "$TITULO" --msgbox "ERROR: El formato de la imagen no es ISO" "7" "40"
break
fi
else
dialog --title "$TITULO" --msgbox "ERROR: La imagen es demasiado grande" "7" "40"
fi
VOLVER="si"
}
# ------------------------------------------------------------------------
# ------------------------------ BORRAR ----------------------------------
# ------------------------------------------------------------------------
function BORRAR ()
{
#VOLVER="si";SALIR="si"
dialog --clear --title "$TITULO" --menu "\n" "7" "54" "1" "Introduce el cd k kieres borrar y pulsa " "" 2> /tmp/menu.tmp.$$
retval=$?
opcion=`cat /tmp/menu.tmp.$$`
rm -f /tmp/menu.tmp.$$
case $retval in
0)
case $opcion in
'Introduce el cd k kieres borrar y pulsa ')
if cdrecord -dev=$DEV -blank=fast -eject 2>/dev/null
then
dialog --clear --title "$TITULO" --msgbox "\nCD borrado perfectamente" "8" "40"
else
dialog --clear --title "$TITULO" --msgbox "\nERROR: no se ha podido borrar" "8" "40"
fi;;
esac
;;
1)
VOLVER="si"
;;
255)
VOLVER="si"
;;
esac
}
#--------------------------------------------------------------------------
#---------------------------- MENU INICIAL --------------------------------
# -------------------------------------------------------------------------
function Menu () {
VOLVER="no";SALIR="no"
dialog --clear --title "$TITULO" \
--menu " -- BIENVENID@ A aDiKcIoN --\n\
Usa los cursores para seleccionar una opcion y pulsa para entrar en ella. " "15" "$ANCHO_MENU" "6" \
"MUSICA" "Grabar música desde cd's o desde el disco duro." \
"DATOS" "Grabar datos desde cd's o desde el disco duro."\
"ISO" "Grabar una iso." \
"BORRAR" "Borrar un regrabable" \
" " ""\
"Salir" "Salir a la shell" 2> /tmp/menu.tmp.$$
retval=$?
opcion=`cat /tmp/menu.tmp.$$`
rm -f /tmp/menu.tmp.$$
case $retval in
0)
case $opcion in
'MUSICA')until test "$VOLVER" = "si"
do MUSICA
done ;;
'DATOS') until test "$VOLVER" = "si"
do DATOS
done ;;
'ISO') until test "$VOLVER" = "si"
do ISO
done ;;
'BORRAR') until test "$VOLVER" = "si"
do BORRAR
done ;;
'Salir') SALIR="si" ;;
esac
;;
1)
SALIR="si"
;;
255)
SALIR="si"
;;
esac
}
# ------------------------------------------------------------------------
# ------------------------ CONFIGURACION ---------------------------------
# ------------------------------------------------------------------------
function Configuracion ()
{
VOLVER="no";SALIR="no"
dialog --clear --title "$TITULO" \
--menu " -- CONFIGURACIÓN -- Selecciona tu grabadora" "15" "30" "6" "/dev/cdrom" "" "/dev/scd0" "" "/dev/scd1" "" "/dev/scd2" "" "/dev/sda1" "" "/dev/sda2" "" 2> /tmp/menu.tmp.$$
retval=$?
opcion=`cat /tmp/menu.tmp.$$`
rm -f /tmp/menu.tmp.$$
case $retval in
0)
case $opcion in
'/dev/cdrom') GRAB="/dev/cdrom" ;;
'/dev/scd0') GRAB="/dev/scd0" ;;
'/dev/scd1') GRAB="/dev/scd1" ;;
'/dev/scd2') GRAB="/dev/scd2" ;;
'/dev/sda1') GRAB="/dev/sda1" ;;
'/dev/sda2') GRAB="/dev/sda2" ;;
esac
;;
1)
SALIR="si"
;;
255)
SALIR="si"
;;
esac
if test "$SALIR" != "si"
then
dialog --clear --title "$TITULO" \
--menu " -- CONFIGURACIÓN -- Selecciona el dispositivo scsi k tengas como grabadora" "17" "30" "7" "0,0,0" "" "0,0,1" "" "0,0,2" "" "0,0,3" "" "0,0,4" "" "0,0,5" "" "0,0,6" "" "0,0,7" "" "0,1,0" "" "0,2,0" "" "0,3,0" "" "0,4,0" "" "0,5,0" "" "0,6,0" "" "0,7,0" "" "1,0,0" "" "2,0,0" "" "3,0,0" "" "4,0,0" "" "5,0,0" "" "6,0,0" "" "7,0,0" "" 2> /tmp/menu.tmp.$$
retval=$?
opcion=`cat /tmp/menu.tmp.$$`
rm -f /tmp/menu.tmp.$$
case $retval in
0)
case $opcion in
'0,0,0') DEV="0,0,0" ;;
'0,0,1') DEV="0,0,1" ;;
'0,0,2') DEV="0,0,2" ;;
'0,0,3') DEV="0,0,3" ;;
'0,0,4') DEV="0,0,4" ;;
'0,0,5') DEV="0,0,5" ;;
'0,0,6') DEV="0,0,6" ;;
'0,0,7') DEV="0,0,7" ;;
'0,1,0') DEV="0,1,0" ;;
'0,2,0') DEV="0,2,0" ;;
'0,3,0') DEV="0,3,0" ;;
'0,4,0') DEV="0,4,0" ;;
'0,5,0') DEV="0,5,0" ;;
'0,6,0') DEV="0,6,0" ;;
'0,7,0') DEV="0,7,0" ;;
'1,0,0') DEV="1,0,0" ;;
'2,0,0') DEV="2,0,0" ;;
'3,0,0') DEV="3,0,0" ;;
'4,0,0') DEV="4,0,0" ;;
'5,0,0') DEV="5,0,0" ;;
'6,0,0') DEV="6,0,0" ;;
'7,0,0') DEV="7,0,0" ;;
esac
;;
1)
SALIR="si"
;;
255)
SALIR="si"
;;
esac
if test "$SALIR" != "si"
then
dialog --clear --title "$TITULO" \
--menu " -- CONFIGURACIÓN -- Elija la velocidad de grabacion" "17" "30" "7" "2" "" "4" "" "6" "" "8" "" "10" "" "12" "" "14" "" "16" "" "18" "" "20" "" "22" "" "24" "" "28" "" "30" "" "32" "" "34" "" "36" "" "38" "" "40" "" "42" "" "44" "" "46" "" "48" "" "50" "" "52" "" "54" "" "56" "" "58" "" "60" "" 2> /tmp/menu.tmp.$$
retval=$?
opcion=`cat /tmp/menu.tmp.$$`
rm -f /tmp/menu.tmp.$$
case $retval in
0)
case $opcion in
'2') VEL="2" ;;
'4') VEL="4" ;;
'6') VEL="6" ;;
'8') VEL="8" ;;
'10') VEL="10" ;;
'12') VEL="12" ;;
'14') VEL="14" ;;
'16') VEL="16" ;;
'18') VEL="18" ;;
'20') VEL="20" ;;
'22') VEL="22" ;;
'24') VEL="24" ;;
'26') VEL="26" ;;
'28') VEL="28" ;;
'30') VEL="30" ;;
'32') VEL="32" ;;
'34') VEL="34" ;;
'36') VEL="36" ;;
'38') VEL="38" ;;
'40') VEL="40" ;;
'42') VEL="42" ;;
'44') VEL="44" ;;
'46') VEL="46" ;;
'48') VEL="48" ;;
'50') VEL="50" ;;
'52') VEL="52" ;;
'54') VEL="54" ;;
'56') VEL="56" ;;
'58') VEL="58" ;;
'60') VEL="60" ;;
esac
;;
1)
SALIR="si"
;;
255)
SALIR="si"
;;
esac
if test "$SALIR" != "si"
then
dialog --clear --title "$TITULO" \
--menu " -- CONFIGURACIÓN -- Elige el tamaño de tu CD" "17" "30" "7" "180 MB" "20 minutos" "200 MB" "23 minutos" "245 MB" "28 minutos" "650 MB" "74 minutos" "700 MB" "80 minutos" "790 MB" "90 minutos" "880 MB" "100 minutos" 2> /tmp/menu.tmp.$$
retval=$?
opcion=`cat /tmp/menu.tmp.$$`
rm -f /tmp/menu.tmp.$$
case $retval in
0)
case $opcion in
'180 MB') TAM="181" ;;
'200 MB') TAM="201" ;;
'245 MB') TAM="246" ;;
'650 MB') TAM="651" ;;
'700 MB') TAM="701" ;;
'790 MB') TAM="791" ;;
'880 MB') TAM="881" ;;
esac
;;
1)
SALIR="si"
;;
255)
SALIR="si"
;;
esac
fi
fi
fi
}
# ------------------------------------------------------------------------
# ------------------------ PROGRAMA PRINCIPAL ----------------------------
# ------------------------------------------------------------------------
Configuracion
until test "$SALIR" = "si"
do Menu
done
clear
echo -e "$MSG"