Dopo quasi tre anni di sviluppo, è stata pubblicata una nuova versione del interprete dei comandi GNU Bash 5.3, utilizzato di default nella maggior parte delle distribuzioni Linux. Contestualmente è stata rilasciata la libreria readline 8.3, utilizzata in bash per la gestione della modifica della riga di comando.
Tra i principali miglioramenti si possono notare:
- Sono state implementate nuove forme di sostituzione dei comandi «${ command; }» e «${|command;}», che permettono di intercettare l'output del comando senza generare un processo figlio separato e senza utilizzare pipe anonime. I risultati dell'esecuzione del comando vengono restituiti come risultato della sostituzione o scritti nella variabile REPLY.
- È stata aggiunta una nuova variabile GLOBSORT, che definisce il modo di ordinare durante il completamento del percorso del file. Ad esempio, è possibile scegliere di ordinare per nome (GLOBSORT=name), dimensione (GLOBSORT=size) o data di modifica (GLOBSORT=mtime), e anche stabilire un ordine diretto (dal minore al maggiore) o inverso (dal maggiore al minore) di ordinamento (ad esempio, con «GLOBSORT=-size» verranno mostrati prima i file più grandi).
- Nella command interna «compgen» è stata aggiunta l'opzione «-V varname» per salvare le completazioni generate in una variabile, invece di stamparle nel flusso standard.
- Nella command interna «read» è stata aggiunta l'opzione «-E», che utilizza la libreria readline per l'immissione dei dati con regole di completamento automatico per le strutture bash.
- Nella command interna «source» è stata aggiunta l'opzione «-p PATH», che permette di sovrascrivere l'elenco di ricerca nei percorsi di file (il valore specificato viene utilizzato al posto della variabile $PATH).
- Il codice sorgente è stato convertito per utilizzare lo standard C23. È stata interrotta la possibilità di compilazione con i compilatori in modalità «K&R C» (stile corrispondente alla descrizione del linguaggio C nel libro «The C Programming Language» di Kernighan e Ritchie).
- Nella command interna «umask» è stata garantita la piena compatibilità con le specifiche POSIX.
- È stata aggiunta la command scaricabile «kv», che forma un array associativo basato su un insieme di dati nel formato «chiave valore».
- È stata aggiunta la command scaricabile «strptime», che trasforma la rappresentazione testuale di una data e ora in tempo epoch (numero di secondi dal 1 gennaio 1970).
- È stato aggiunto il comando scaricabile «fltexpr», che consente di eseguire operazioni aritmetiche in virgola mobile analogamente al comando let.
- È stata aggiunta la variabile dinamicamente impostabile BASH_MONOSECONDS, che contiene il valore attuale delle ore monotone di sistema, che aumentano continuamente, anche quando il tempo viene modificato a un valore passato.
- In modalità POSIX, il confronto delle stringhe nel comando «test», utilizzando gli operatori «», ora avviene tenendo conto della locale corrente.
- Nel comando «bind -x» è autorizzata la separazione con uno spazio tra il tasto e il comando richiamato, se la sequenza è racchiusa tra virgolette.
- Nella nuova versione di Readline è stata proposta l'opzione «search-ignore-case» per cercare nella cronologia senza tener conto del case. È stato aggiunto il comando «export-completions» per esportare le opzioni di completamento delle parole da utilizzare in altri processi. È stato aggiunto il comando «execute-named-command» per eseguire un comando il cui nome è stato ottenuto dallo standard input.
Fonte: opennet.ru
