Michele Liberi software
versione 1.04, giugno 2026
|
|
Michele Liberi
mail: mliberi@gmail.com
cell: +393485211456
telegram: @MicheleLiberi
|
liberix
- Presentazione
- Librerie
- Servizi
- Comandi
- rxc, esecuzione remota di comandi
- woha, web oriented hyerarchical database
- n, punto unico di controllo per N servers
- ck, controlli sui sistemi
- comm5, sincronizzazione di files
- comm7, sincronizzazione di files e metadati
- gcron, schedulatore globale
- logaway, gestione files di log
- nbru, gestione centralizzata dei backup
- kcc, il compilatore di shell scripts
- upload, accesso a web server
- www, HTTP client
- ftime, stampa informazioni sui files
- cpfl, archiviatore di files
- metafl, archiviatore di metadati
- mvfl, rinomina una lista di files
- lnfl, collegamento di una lista di files
- rmfl, cancellazione di una lista di files
- rxcp, copia di files
- afifo, gestione asincrona code fifo
- mq, interazione con server IBM MQM locale
- mqc, interazione con server IBM MQM remoto
- lra, interazione con il servizio lrm
- cofc, interazione con il servizio cofs
- pst, gerarchia dei processi
- dut, spazio utilizzato dalle directory
- ecut, estrazione dati da un file di testo
- ecomm, confronto righe di due files
- ejoin, unisce le righe di due files
- etee, duplicazione del flusso di input
- etr, converte o cancella caratteri
- ecat, concatenazione di file
- esort, ordinamento lessicografico di un testo
- sortbyll, ordina un testo in base alla lunghezza delle righe
- opmsr, ricerca e sostituzione di stringhe
- match, ricerca di stringhe
- cargs, verifica argomenti
- cenv, print environment variables
- yargs, esecuzione multipla di un comando
- tmout, lancia un comando con un tempo limite
- unchain, cancella catena di link simbolici
- rmlines, rimuove righe da un file
- yar, archiviatore minimale alternativo
- rows, trova righe in comune
- 3comm, comparazione file di testo
- now, cronometro per shell script
- systime, seconds since epoch
- bpwd, cambio della password non interattivo
- ckuserpw, controllo o cambio password
- 1moregrp, lancia un comando previa aggiunta di un gruppo
- memberof, incrocio utenti e gruppi
- lscron, lista di tutti i job lanciati da cron
- fdump, visualizza un file in esadecimale
- pol, calcolo di espressioni
- total, somma algebrica
- pths, ricerca di files nel PATH
- mynames, lista nomi di rete
- hostip, risoluzione nome di rete
- ckhosts, verifica file hosts
- des, data encryption standard
- tea, tiny encryption algorithm
- kc, un cifratore veloce
- keygen, genera una chiave casuale
- crypt, codifica una stringa
- cryptest, verifica validità password
- xor, cifratore binario
- hff, codifica decodifica di Huffmann
- sltn, interazione con un host remoto
- NCgrep, selezione di righe basata su regole
- accessx, accessibilità di files e directories
- rtest, accessibilità per utente reale
- u2d, converte un file da UNIX a DOS
- d2u, converte un file da DOS a UNIX
- ascii, tabella di codifica ASCII
- ebcdic, tabella di codifica EBCDIC
- asc2ebc, conversione da ASCII a EBCDIC
- ebc2asc, conversione da EBCDIC a ASCII
- id3, manipolazione metadati brani MP3
- woha2bash, converte un oggetto woha in una script bash
- img2html, converte immagini in tag HTML
- cgi, interazione con webserver
- cgisu, switch user per utenti CGI
- alert, invio di avvisi su più canali
- lnsm, invio e-mail
- logwriter, scrittura controllata file di log
- lspwdage, resoconto delle età delle password
- mon, lancia ciclicamente un comando
- eddy, selezione con editor di files da rinominare o cancellare
- mutuo, tabella ammortamento a rata costante
- sms, invio messaggi SMS
- aixb, backup completo del sistema AIX
- socktee, monitoraggio traffico su socket
- rowcmp, confronto di file di testo
- comb, combinazioni di N su K elementi
- pty, esecuzione batch di un programma interattivo
- openfds, lista dei descrittori in uso
- msleep, attende N millisecondi
- myid, estensione del comando id
- c7comp, comparatore di filetree
- str, estrazione di una parte di un bytestream
- X client
- Applicazioni web
- Siti web
- Applicazioni Android
- Programmi DOS
- Programmi Windows
- Installazione
- Licenza d'uso
Il comando pol è la versione potenziata del comando expr.
L'esigenza di sviluppare pol è nata perché mi serviva un modo per generare da shell script un numero progressivo ad unicità garantita.
Per ottenere questo risultato era fondamentale che il caricamento del valore corrente da file, l'incremento, ed il salvataggio, fossero un'unica operazione atomica.
Ad esempio il comando pol :c.pol = N + N 1
- mette un lock sul file .pol in modo che un altro tentativo parallelo di accedere allo stesso file venga messo in attesa
- carica il set di variabili dal file .pol
- incrementa di una unità il valore della variabile N
- salva il set di variabili sul file
- toglie il lock
Inoltre il comando pol fornisce alle shell script la capacità di eseguire calcoli floating point in doppia precisione.
Nell'esempio che segue definisco la funzione pol_eval che calcola un'espressione (in notazione polacca diretta) ed assegna il risultato ad una variabile della shell.
Da notare il fatto che, per motivi di efficienza, la funzione pol_eval lancia il comando pol solo la prima volta, e lo lascia attivo in background.
function pol_eval # result expr
{
test "$pol_in" ||{
pol_in=/tmp/pol.$$.in
pol_out=/tmp/pol.$$.out
mkfifo $pol_in $pol_out
pol :s2 :i <$pol_in >$pol_out &
exec 7>$pol_in 6<$pol_out
rm -f $pol_in $pol_out
}
typeset rc=$1; shift
echo "$@" >&7
read $rc <&6
}
# successione di Fibonacci
x=0.00
y=1.00
while ((1))
do
pol_eval z + $x $y
echo $z
x=$y
y=$z
done
La valutazione delle espressioni avviene in notazione polacca: l'operatore viene posto prima degli operandi.
Ad esempio l'espressione 1+2 in notazione polacca diventa + 1 2.
Gli elementi di una espressione sono:
- costanti numeriche, anche in notazione scientifica
- variabili, una singola lettera da 'A' a 'Z'
- operatori binari:
- +: somma
- -: sottrazione
- *: moltiplicazione
- /: divisione
- ^: elevamento a potenza (il primo operando è l'esponente)
- =: assegnamento (il primo operando è una variabile)
- operatori unari:
- [: radice quadrata
- !: fattoriale
Esempi:
| espressione | risultato
|
|---|
| + 3 5 | 8
|
| - 7 1 | 6
|
| / 10 3 | 3.33333333333333
|
| :s2 / 10 3 | 3.33
|
| ^ 2 5 | 25
|
| [ 9 | 3
|
| ! 4 | 24
|
| = A 4 | 4
|
| * A 2 | 8
|
| = A + A 1 | 5
|
Le espressioni da valutare possono essere date su linea di comando, oppure lette da un file di input, che può essere standard input.
Tra un'espressione e l'altra pol può interpretare ed eseguire dei comandi, introdotti dal carattere ':' (due punti):
- :h calcola un'espressione senza stampare il risultato, tipicamente per assegnare un valore ad una variabile
- :p stampa un messaggio, tipicamente per descrivere il significato di un valore calcolato
- :l stampa il contenuto delle 26 variabili
- :i legge l'espressione da valutare da file
- :r carica il valore dell 26 variabili da file
- :w salva il valore delle 26 variabili su file
- :c mette un lock e carica il valore dell 26 variabili da file, in uscita dal programma le variabili verranno automaticamente salvate
- :u toglie il lock al file in modifica
- :x termina il programma
Rispetto al comando standard expr, il comando pol:
- esegue i calcoli in doppia precisione, e non con numeri interi a 32-bit
- NON esegue calcoli ed elaborazioni su stringhe, solo numerici
- gestisce 26 variabili elementari
- le variabili possono essere lette e salvate su file
- l'aggiornamento di una variabile può essere fatto in modo atomico
Per ulteriori informazioni sulla sintassi di attivazione e sulle opzioni disponibili lanciare il comando con l'opzione -h.
(c) M. Liberi, last updated: 2026-06-15