SAM – Sistema Automàtic de Menus


Un script per consola que permet muntar menús de forma molt senzilla i flexible. Útil per a gent que fa feina principalment a una terminal de text i que necessita una forma fàcil de crear un menú d’opcions o per qui vol organitzar les seves utilitats en un menú des d’on cridar-les còmodament.

He actualitzat aquesta utilitat per fer-li una millora. Es tracta de que ara fa servir la combinació :_: per fer de separador entre el text i la comanda a executar. Així s’eviten problemes derivats per l’us d’un únic caràcter separador.
Si preferiu llegir aquest article en castellà visitau http://www.informatica.escuelaedib.com
Post revisat, canvis en color verd:

Hola salutacions cordials a tots els linuxers, vos passo un script per al shell bash per fer menús en mode text de forma molt senzilla i flexible. És el meu primer post aquí, he llegit la guia d’estil, però, ja em disculpareu si incumpleixo qualque norma habitual de BULMA.
Penso que pot ser útil per a administradors que fan feina la major part del temps des de consola, però que agrairien tenir organitzats en un menú els scripts que fan servir més habitualment.
És a dir, per construir un menú absolutament funcional com aquest:

—————————————————————
MENÚ PRINCIPAL D’ADMINISTRACIÓ
Operacions habituals
—————————————————————
1) Administrar usuaris
2) Gestió de còpies de seguretat
3) Monitorització d’espai de disc
4) Enviar missatge a tots els usuaris
0) Sortir

Faci una seleccio [0-4]:











bastaria invocar l’script que vos comparteixo de la següent manera:

SAM Menu1.sam ScriptCap.sh




Com definir un menu
Menu1.sam és un arxiu de text normal i corrent que té un format concret. D’acord a l’exemple podria ser com aquest:

# Això és un exemple de menú senzill

Administrar usuaris:_:SAM Menu1_1.sam ScriptCap1_1.sh
Gestió de còpies de seguretat:_:/usr/utilitats/ElMeuScript_de_backups.sh

Monitorització d’espai de disc:_:clear;df;read PAUSA
Enviar missatge a tots els usuaris:_:bash /usr/utilitats/Unscriptqualsevol







Com veis podeu incloure comentaris i deixar línies en blanc. Les línies que han de correspondre a una opció del vostre menú ténen el seguent format:

Texte de la opció:_:Comanda a executar



Notau que per construir un sistema de menus multinivell basta que la comanda a executar sigui una nova cridada a SAM amb un altre arxiu de menu i un altre “script de capçalera” (si en voleu, perquè és un paràmetre opcional).
SAM s’encarrega de tota la feina bruta del menú: el mostra, enumera les opcions, vos demana quina voleu executar, valida les entrades, executa la comanda que hageu associat a la opció i llavors retorna i redibuixa el menu.
Què es ScriptCap1.sh ?
És el que anomeno un “script de capçalera” És un simple shell script opcional. El podeu utilitzar per mostrar el títol del menú, encara que podeu incorporar-hi el codi que volgueu que s’executi cada vegada que es mostra el menú. A l’exemple anterior simplement tendria 4 sentències “echo” per mostrar les línies que pinten “——-” i les que diuen “MENÚ PRINCIPAL D’ADMINISTRACIÓ” i “Operacions habituals”.
Obtenir el codi de SAM (Sistema Automàtic de Menus v2.1)
Descarregau-vos l’script aquí.
Fent virgueries
L’exemple anterior mostra la forma més normal de fer servir SAM. El que passa és que podeu aprofitar el fet de què l’arxiu de menú és un fitxer de text ordinari i generar-lo dinàmicament en funció del que vos interessi. Per això basta que dins l’script de capçalera o a alguna opció de menú executeu un simple
echo “Text_de_opció:_:comanda_unix_vàlida” >> Arxiu_de_Menu
Amb aquesta tècnica podeu aconseguir aplicacions molt interessants, com per exemple aquest explorador de fitxers rudimentari
Exemple avançat, codi del script de capçalera: FCap.sh

#!/bin/bash
echo “———————————————–“
echo “- Explorador de fitxers -“
echo “- Exemple de SAM. Generacio dinamica de menus -“
echo “———————————————–“
echo “- Directori actual <“`pwd`”>”
echo “———————————————–“
echo “Anar al directori superior:_:cd ..”>/tmp/FMenu.sam
for F in `ls`
do
if [ -d $F ]
then
echo “DIR $F ->:_:cd $F” >>/tmp/FMenu.sam
else
echo “$F:_:clear;file $F;echo “Qualsevol tecla per continuar…”;read -n1 PAUSA” >>/tmp/FMenu.sam
fi
done



Com provar l’exemple avançat
Amb un editor de text creau l’arxiu FCap.sh i situau-lo a un directori on tingueu accés (suposem /home/usuariX).
Creau un arxiu de menú buid (SAM en arrencar protesta si no troba l’arxiu de menú que indicau):
touch /tmp/FMenu.sam
Si suposam que tenim SAM al mateix directori (/home/usuariX), podeu executar el sistema fent:
bash SAM /tmp/FMenu.sam /home/usuariX/FCap.sh
Trucs i recomanacions
Encara que sembli una xorrada SAM és una utilitat d’allò més còmoda i pràctica, per això és probable que si l’adoptau la faceu servir en molts de projectes sempre que faci falta fer un menú encara que sigui de dues opcions. Per això seria interessant que en decarregar-vos el SAM el situessiu a un directori del PATH i que li activessiu el permís d’execució (chmod a+x SAM). Així el podreu cridar des de qualsevol lloc i aconseguir que s’executi sense haver de preocupar-vos de referenciar la ruta on es troba l’script ni d’haver de cridar explícitament a l’intèrpret bash.
NOTA: Aquest projecte de monitorització d’apt-cacher fa servir SAM per crear els seus menus
Espero que vos agradi, si teniu dubtes demanau, vos contestaré encantat. També seran benvinguts comentaris, suggeriments per millorar-lo o formes creatives de fer-lo servir.

Este post ha sido traido de forma automatica desde https://web.archive.org/web/20140625063149/http:/bulma.net/body.phtml?nIdNoticia=2452 por un robot nigromante, si crees que puede mejorarse, por favor, contactanos.


Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.