UFFICIALE L'OT di Linux e altri OS

Pubblicità
@rebellion Dal momento che mi hai scartato gtkdialog e zenity, dico... ncurses?
Te vorresti fare una cosa tipo quella nell' immagine sotto però usando il solo emulatore gnome-terminal, senza gui/ui/dialog?
Linux-menuconfig.png


Ci sarebbe bashsimplecurses però non so quanto e cosa riesca a fare. Un semplice ''select do done''? Lo stdout da dove dovrebbe arrivare, sicuro non si possa salvare in un file temporaneo?
La cosa che più si avvicina che ho visto usando il solo terminale (senza dialog, ncurses eccecc) sono i comandi interattivi di nano, ma penso che bash ci entri poco.
Forse è questo ciò che cerchi, magari leggendo il codice ti ispira. :P
bash-ui-config-theme.png
grazie ma voglio gnome-terminal. dopo il comando read, if reply = arrow-up then eccetera, ma arrow-up come lo identifico? (scusa se non sono stato molto chiaro, eventualmente riformulo appena mi son nutrito...)
 
grazie ma voglio gnome-terminal. dopo il comando read, if reply = arrow-up then eccetera, ma arrow-up come lo identifico? (scusa se non sono stato molto chiaro, eventualmente riformulo appena mi son nutrito...)
Se ho capito ''buono'', usa gli ottali:
Codice:
#!/bin/bash
read -s -N1 -p "premi un tasto: "
ott1="$REPLY"
read -s -N2 -t 0.001
ott2="$REPLY"
read -s -N1 -t 0.001
ott3="$REPLY"
tasto="$ott1$ott2$ott3"
case "$tasto" in
  $'\x1b\x5b\x41')
   echo Hai premuto Freccia Su
  ;;
  $'\x1b\x5b\x42')
   echo Hai premuto Freccia Giù
  ;;
  $'\x1b\x5b\x43')
   echo Hai premuto Freccia Dx
  ;;
  $'\x1b\x5b\x44')
   echo Hai premuto Freccia Sx
  ;;
  *)
   echo Hai premuto il tasto \'"$tasto"\'
  ;;
esac
exit $?
Altrimenti devi greppare
Codice:
#!/bin/bash

tastosu='\[A'
tastogiu='\[B'
tastodestra='\[C'
tastosinistra='\[D'

echo -n "Premi un tasto...  "
read -s -n3 tasto
echo -n "$tasto" | grep "$tastosu"
if [ "$?" -eq 0 ]
then
  echo "Hai premuto il tasto su."
  exit 0
fi

echo -n "$tasto" | grep "$tastogiu"
if [ "$?" -eq 0 ]
then
  echo "Hai premuto il tasto giù."
  exit 0
fi

echo -n "$tasto" | grep "$tastodestra"
if [ "$?" -eq 0 ]
then
  echo "Hai premuto il tasto destra."
  exit 0
fi

echo -n "$tasto" | grep "$tastosinistra"
if [ "$?" -eq 0 ]
then
  echo "Hai premuto il tasto sinistra."
  exit 0
fi
 
Ultima modifica:
@« MoMy » è quello che voglio, il secondo script che hai postato lo conosco, incontro problemi quando devo premere tasti diversi dagli arrows e da invio; a es. 'q' per uscire da problemi dal momento che vi sono read con opzione 'n' maggiore di 1.
il primo non lo conoscevo e me lo studio.
 
Ho problemi seri in questo forum, mi ciuccia 200MB all' acqua di rose come nulla fosse. :|
Mi è difficile seguirti se non leggo due righe di codice.
 
ah bene, cosa da poco

cerca di sistemare, aggiorna la versione e linka :)
ok la versione 3.1 è finita, alla fine non c'era nessun errore se non nell'approssimazione di alcuni mantainer di AUR: credo non aggiornino (o lo facciano quando pare a loro) il numero versione nella pagina web dalla quale prendo le info che confronto col numero versione nel file PKGBUILD installato: quindi il pacchetto risulta non aggiornato quando in realtà lo è.
 
Ho problemi seri in questo forum, mi ciuccia 200MB all' acqua di rose come nulla fosse. :|
Mi è difficile seguirti se non leggo due righe di codice.
ok il primo script è quello che cercavo, il primo problema è risolto (basta aggiungere un ciclo while-do-done nel quale annido il tuo script e che si interrompe premendo il tasto a es. 'q'); adesso associo agli arrow up e down il comando tput per posizionare il cursore nella riga sopra o sotto a seconda del tasto premuto, però mi sarebbe di grande aiuto poter leggere cosa c'è stampato sulla riga del terminale dove mi posiziono (il problema è aggirabile ma mi ci vuole un bel numero di righe di codice altrimenti).
 
@« MoMy »
Codice:
#!/bin/bash
selezione=()
packages="google-earth gnome-shell skype gimp-resintethyzer qt5-clipgrab masterpdfeditor"
clear ; echo -e "PACCHETTI DA AGGIORNARE:\n\n( ) google-earth\n( ) gnome-shell\n( ) skype\n( ) gimp-resintethyzer\n( ) qt5-clipgrab\n( ) masterpdfeditor\n\n----------------\ncurs.su/curs.giù per scorrere - invio per (de)selezionare - q per uscire\n----------------"
tput sc ; tput cuu 10 ; tput cuf 1 ; riga=1
while [ "$tasto" != "q" ] ; do
   read -s -N1
   ott1="$REPLY"
   read -s -N2 -t 0.001
   ott2="$REPLY"
   read -s -N1 -t 0.001
   ott3="$REPLY"
   tasto="$ott1$ott2$ott3"
   case "$tasto" in
      $'\x1b\x5b\x41')
         if [ "$riga" = 1 ] ; then tput cud 5 ; riga=6 ; else tput cuu 1 ; riga=$(( $riga-1 )) ; fi ;;
      $'\x1b\x5b\x42')
         if [ "$riga" = 6 ] ; then tput cuu 5 ; riga=1 ; else tput cud 1 ; riga=$(( $riga+1 )) ; fi ;;
      "
")
         if [ "${selezione[$riga]}" = "" ] ; then echo "x" ; selezione[$riga]="$riga"; else echo " " ; selezione[$riga]="" ; fi ; tput cuu 1 ; tput cuf 1 ;;
   esac
done
tput rc
echo ; echo -n "hai selezionato: "${selezione[@]} ; echo
exit 0
 
I packages sono pacchetti della lista e mediante l' echo PACCHETTI DA AGGIORNARE cioè l' output da terminale che dicevi l' altro giorno, li selezioni.
EDIT: Ok ho capito il discorso che dicevi del quit, prevedo un reset per aggiornare la schermata dopo la selezione.
Ti faccio sapere.
 
Ultima modifica:
Pubblicità
Pubblicità
Indietro
Top