| Spaghetti tux |
|
|
|
| Scritto da array |
![]() Anche oggi il solito raptus di follia. Anzi: un doppio raptus. Ho fame di conoscenza. Fame e sempre più fame di sapere. Voglio usare il terminale come se fosse un piatto di bucatini all'amatriciana su cui mi possa fiondare a testa bassa e da cui non tornare più su. Basta sudo. Basta apt-get e relative opzioni. Il primo raptus di follia: d'ora in poi userò comandi come sugo e spaghetti. Le opzioni ve le lascio immaginare. Come faccio? Uso un alias, uno script... il resto è tutta fantasia. Il secondo raptus: vi spiego come fare (e già questo è sufficiente) e ve lo spiego a modo mio...
Cosa bisogna fare?
Per iniziare vi dirò subito che tutto quello che leggerete sotto sarà al contempo sia una quota parte dell'articolo sia lo script che dovrete copiare e incollare in un file. Chiamate pure lo script spaghetti e posizionatelo nella vostra home.
#!/bin/bash# ~~~ ~~~ ~~~ ~~~ ~~~ ~~~ ~~~ ~~~ ~~~ ~~~ ~~~ ~~~ ~~~## Codesto componimento è da adoprarsi all'uopo di# evocare la direttiva apt-get colla sintassi:## spaghetti < assaggia | sala | cala | scola |# cuoci | mangia >## in luogo della più tediosa, perciocché consueta,# ingiunzione:## apt-get < update | dist-upgrade | install |# remove | purge | autoremove >## Nota: l'altri parametri (source, clean ecc.) si# puole soggiungerli nella $pchiave, acciò da perpe-# tuar l'allegoria con essi.# Di converso, son tollerati pure se menzionati col# nome loro, parimenti al resto della sintassi cano-# nica d'apt-get (consultasi il prontuario "man apt-# get").## ~~~ ~~~ ~~~ ~~~ ~~~ ~~~ ~~~ ~~~ ~~~ ~~~ ~~~ ~~~ ~~~# Nomi de' parametri, per ischerzo e per vero,# frammezzati dal due punti.pchiave=' assaggia:update sala:upgrade cala:install scola:remove scuoci:purge mangia:autoremove'# D'ora innanzi si comporrà la stringa $strparam,# recante i parametri acconci da impartire ad apt-get.# La sintassi dell'apt-get ammette l'uso di taluni# parametri inizianti per lineetta (-h, -v, -s, -o,# -c) dianzi a quello da noi burlescamente nomato.while [ `expr match "$1" "-"` -gt 0 ]; do # Quivi s'entra qualora il primo parametro # s'apre colla lineetta summenzionata strparam="$strparam $1" # poscia lo si ricopia tal quale in fondo # alla stringa $strparam shift # cotesta direttiva scala verso mancina la # lista de' parametri; ovvero ne scarta il # primo, c'abbiamo testé processato, imper- # ciocché al ciclo susseguente il primo para- # metro sarà invero quel che pria fu il se- # condo, e via discorrendo.done# Se nell'invocazione s'è usato un nome di giuoco# presente in $pchiave, lo si è fatto nel parametro# c'ora è sito in prima positura ($1).# In tale caso occorre individuarne il rispondente ed# accodar quest'ultimo in $strparam.# Segue una variabile sentinella: allorché s'esce dalla# iterazione con $trovato posto a 0 s'intende che niuna# corresponsione col medesimo trovossi entro $pchiave.trovato=0for par in $pchiave; do # scandisco l'elenco intiero if [ `expr match "$par" "$1:"` -gt 0 ]; then # La voce corrente di $pchiave, letta # in $par, si concilia colla espressione # regolare "$1:", ove il $1 è il parametro # ilare digitato dall'utente, e ":" è il # grafema de' due punti e null'altro. strparam="$strparam `echo $par | cut -d: -f2`" # Si accoda la tal voce in $strparam, # privandola dapprima della porzione # innanzi ai due punti (inclusi cotesti). trovato=1 # Si pone a 1 la sentinella ad indicar # che s'è trovata la corresponsione. fi test $trovato -eq 1 && break # dacché la sentinella è attiva si puote cessare # la scansione (s'esce dal ciclo)done# se il parametro non avea parodia insita lo si replica# tal quale in $strparamtest $trovato -eq 0 && strparam="$strparam $1"shiftstrparam="$strparam $*"# s'accodano in $strparam gli eventuali altri parametri# dispensati dall'utente nell'evocazione dello scriptapt-get $strparam# s'invoca apt-get colla stringa de' parametri ad esso confacentiE qui lo script finisce! A questo punto occorre aprire il terminale e dare i seguenti comandi:
sudo mv spaghetti.sh /usr/bin
chmod +x /usr/bin/spaghetti
Per finire in bellezza creiamo un paio di alias che ci permettono di rendere permanente l'uso dello script, cambiando (con l'occasione) sudo in sugo; apriamo il terminale e facciamo un backup del file .bashrc:
cp .bashrc .bashrc_backup
sempre da terminale aggiungiamo al file .bashrc la riga:
echo alias sugo="sudo’">> .bashrc
Abbiamo finito. Vogliamo aggiornare la nostra distribuzione? Basta lanciare da terminale:
sugo spaghetti assaggia
sugo spaghetti sala
Adesso sì che tutto prende un altro sapore...
Spiegazione.
Cosa cacchio succede? È molto semplice. Un alias ci dà la possibilità di rinominare un comando con relative opzioni oppure uno script in qualcosa di più semplice. Ad esempio, posso decidere di rinominare il comando:
ls -al
con l'alias culo. Per farlo mi sarà sufficiente digitare nel terminale la stringa: alias culo=’ls -al’. Il problema è che questo alias durerà solo fino alla fine della sessione corrente. Per rendere definitivo l'alias occorre inserire la stringa nel file nascorsto .bashrc presente nella nostra home directory. L'alias che abbiamo citato non fa altro che rimpiazzare sudo con sugo e lo script spaghetti sostituisce l'esecuzione di apt-get e i relativi parametri con i termini da noi citati nello script. In particolare:
apt-get update ---> spaghetti assaggia
apt-get upgrade ---> spaghetti upgrade
apt-get install ---> spaghetti cala
apt-get remove ---> spaghetti scola
apt-get purge ---> spaghetti scuoci
apt-get autoremove ---> spaghetti mangia
Si possono aggiungere altre opzioni; basta leggere attentamente lo script (con l'uso di un buon vocabolario, laddove necessario.) |
| Ultimo aggiornamento Giovedì 17 Giugno 2010 09:21 |

















