.\" -*- coding: UTF-8 -*- .if \n(zZ=1 .ig zZ .\" .\" MAN PAGE COMMENTS to .\" .\" Chet Ramey .\" Case Western Reserve University .\" chet.ramey@case.edu .\" .\" Last Change: Mon Sep 19 11:13:21 EDT 2022 .\" .\" bash_builtins, strip all but Built-Ins section .if \n(zY=1 .ig zY .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH BASH 1 "19 settembre 2022" "GNU Bash 5.2" .de FN \fI\|\\$1\|\fP .. .\" .\" There's some problem with having a `@' .\" in a tagged paragraph with the BSD man macros. .\" It has to do with `@' appearing in the }1 macro. .\" This is a problem on 4.3 BSD and Ultrix, but Sun .\" appears to have fixed it. .\" If you're seeing the characters .\" `@u-3p' appearing before the lines reading .\" `possible-hostname-completions .\" and `complete-hostname' down in READLINE, .\" then uncomment this redefinition. .\" .\" .de }1 .\" .ds ]X \&\*(]B\ .\" .nr )E 0 .\" .if !"\$1"" .nr )I \$1n .\" .}f .\" .ll \n(LLu .\" .in \n()Ru+\n(INu+\n()Iu .\" .ti \n(INu .\" .ie !\n()Iu+\n()Ru-\w\*(]Xu-3p \{\*(]X .\" .br\} .\" .el \*(]X\h|\n()Iu+\n()Ru\c .\" .}f .\" .. .\" .\" File Name macro. This used to be `.PN', for Path Name, .\" but Sun doesn't seem to like that very much. .\" .SH NOME bash \- GNU Bourne\-Again SHell .SH SINTASSI \fBbash\fP [opzioni] [stringa_di_comando | file] .SH COPYRIGHT .if n Bash is Copyright (C) 1989-2022 by the Free Software Foundation, Inc. .if t Bash is Copyright \(co 1989-2022 by the Free Software Foundation, Inc. .SH DESCRIZIONE \fBBash\fP è un interprete di linguaggio di comandi \fBsh\fP\-compatibile che esegue i comandi letti dallo standard input o da un file. \fBBash\fP inoltre incorpora utili caratteristiche delle shell \fIKorn\fP e \fIC\fP (\fBksh\fP e \fBcsh\fP). .PP \fBBash\fP è progettata per essere un'implementazione conforme alla parte Shell and Utilities della IEEE POSIX specification (IEEE Standard 1003.1). \fBBash\fP può essere configurata per essere conforme allo standard POSIX in modo predefinito. .SH OPZIONI Tutte le opzioni monocarattere della shell documentate nella descrizione del comando incorporato \fBset\fP, compreso \fB\-o\fP, possono essere usate come opzioni quando la shell è invocata. In aggiunta, quando è invocata, \fBbash\fP interpreta le seguenti opzioni: .PP .PD 0 .TP 10 \fB\-c\fP Se è presente l'opzione \fB\-c\fP, i comandi sono letti dal primo argomento non di opzione \fIstringa_di_comando\fP. Se vi sono argomenti dopo la \fIstringa_di_comando\fP, essi sono assegnati ai parametri posizionali, partendo da \fB$0\fP, e i rimanenti argomenti vengono assegnati ai parametri posizionali. L'assegnamento a \fB$0\fP imposta il nome della shell, che è usato nei messaggi di avvertimento e di errore. .TP \fB\-i\fP Se è presente l'opzione \fB\-i\fP, la shell è \fIinterattiva\fP. .TP \fB\-l\fP fa sì che \fBbash\fP funzioni come se fosse stata invocata come una shell di login (si veda .SM \fBINVOCAZIONE\fP più avanti). .TP \fB\-r\fP Se l'opzione \fB\-r\fP è presente, la shell diventa \fIristretta\fP (si veda .SM \fBSHELL RISTRETTA\fP più avanti). .TP \fB\-s\fP Se è presente l'opzione \fB\-s\fP, o se non rimane alcun argomento dopo che sono state esaminate le opzioni, i comandi sono letti dallo standard input. Quest'opzione permette di impostare i parametri posizionali quando si invoca una shell interattiva o si legge l'input tramite una pipe. .TP \fB\-D\fP Una lista di tutte le stringhe fra virgolette doppie preceduta da \fB$\fP è stampata sullo standard output. Queste sono le stringhe che sono soggette a traduzione di lingua quando la localizzazione corrente non è \fBC\fP o \fBPOSIX\fP. Questo implica l'opzione \fB\-n\fP; nessun comando verrà eseguito. .TP \fB[\-+]O [\fP\fIopzione_shopt\fP\fB]\fP \fIopzione_shopt\fP è una delle opzioni di shell accettate dal comando incorporato \fBshopt\fP (si veda .SM \fBCOMANDI INCORPORATI DELLA SHELL\fP più avanti). Se \fIopzione_shopt\fP è presente, \fB\-O\fP imposta il valore di quella opzione; \fB+O\fP lo rimuove. Se \fIopzione_shopt\fP non è fornita, i nomi e i valori delle opzioni della shell accettati da \fBshopt\fP sono stampati sullo standard output. Se l'opzione di invocazione è \fB+O\fP, l'output è mostrato in un formato riutilizzabile come input. .TP \fB\-\-\fP Un \fB\-\-\fP segna la fine delle opzioni e disabilita l'ulteriore elaborazione di opzioni. Gli argomenti dopo il \fB\-\-\fP sono trattati come nomi\-file e argomenti. Un argomento \fB\-\fP è equivalente a \fB\-\-\fP. .PD .PP \fBBash\fP interpreta anche un certo numero di opzioni multicarattere. Queste opzioni devono apparire nella riga di comando prima delle opzioni a carattere singolo. .PP .PD 0 .TP \fB\-\-debugger\fP Dispone l'esecuzione del debugger profile prima dell'avvio della shell. Attiva la modalità estesa di debug (si veda la descrizione dell'opzione \fBextdebug\fP al comando incorporato \fBshopt\fP più avanti). .TP \fB\-\-dump\-po\-strings\fP Equivalente a \fB\-D\fP, ma l'output è nel formato file GNU \fIgettext\fP \fBpo\fP (portable object). .TP \fB\-\-dump\-strings\fP Equivalente a \fB\-D\fP. .TP \fB\-\-help\fP Mostra sullo standard output un messaggio sull'uso ed esce con stato di uscita 0. .TP \fB\-\-init\-file\fP \fIfile\fP .PD 0 .TP \fB\-\-rcfile\fP \fIfile\fP .PD Esegue comandi letti da \fIfile\fP invece che dal file personale di inizializzazione standard \fI~/.bashrc\fP .SM \fBINVOCAZIONE\fP più avanti). .TP \fB\-\-login\fP Equivalente a \fB\-l\fP. .TP \fB\-\-noediting\fP Non usa la libreria GNU \fBreadline\fP per leggere righe di comando quando la shell è interattiva. .TP \fB\-\-noprofile\fP Non legge né il file di inizializzazione generico di sistema .FN /etc/profile né alcuno dei file personali di inizializzazione \fI~/.bash_profile\fP, \fI~/.bash_login\fP o \fI~/.profile\fP. Per impostazione predefinita \fBbash\fP legge questi file quando è invocata come shell di login (si veda .SM \fBINVOCAZIONE\fP più avanti). .TP \fB\-\-norc\fP Non legge né esegue il file personale di inizializzazione \fI~/.bashrc\fP se la shell è interattiva. Questa opzione è attiva per impostazione predefinita se la shell è invocata come \fBsh\fP. .TP \fB\-\-posix\fP Cambia il comportamento di \fBbash\fP dove le operazioni predefinite differiscono dallo standard POSIX, in modo da corrispondere allo standard (\fImodalità posix\fP). Si veda più avanti .SM \fBVEDERE ANCHE\fP dove viene citato un documento che spiega nel dettaglio come la modalità posix influenza il comportamento di bash. .TP \fB\-\-restricted\fP La shell diventa ristretta (si veda .SM \fBSHELL RISTRETTA\fP più avanti). .TP \fB\-\-verbose\fP Equivalente a \fB\-v\fP. .TP \fB\-\-version\fP Mostra informazioni sulla versione di questa istanza di \fBbash\fP sullo standard output ed esce con stato d'uscita 0. .PD .SH ARGOMENTI Se rimangono argomenti dopo che sono state elaborate le opzioni, e né l'opzione \fB\-c\fP né l'opzione \fB\-s\fP sono state specificate, il primo argomento si assume sia il nome di un file che contiene dei comandi di shell. Se \fBbash\fP è invocata in questo modo, \fB$0\fP è impostato al nome del file, e i parametri posizionali sono impostati agli argomenti che lo seguono. \fBBash\fP legge ed esegue comandi da questo file, poi esce. Lo stato d'uscita di \fBBash\fP è lo stato d'uscita dell'ultimo comando eseguito nello script. Se non è eseguito alcun comando lo stato d'uscita è 0. Viene fatto un primo tentativo per aprire il file nella directory corrente, e se non viene trovato il file la shell lo cerca nelle directory in .SM \fBPATH\fP. .SH INVOCAZIONE Una \fIshell di login\fP è quella in cui il primo carattere dell'argomento numero zero è un \fB\-\fP, o una che venga avviata con l'opzione \fB\-\-login\fP. .PP Una shell è detta \fIinterattiva\fP se è stata avviata senza argomenti diversi dalle opzioni (a meno che non venga specificato \fB\-s\fP) e senza l'opzione \fB\-c\fP, i cui standard input e standard error sono entrambi inviati a terminali (come determinato da \fIisatty\fP(3)), o se viene avviata con l'opzione \fB\-i\fP. .SM \fBPS1\fP è impostato e \fB$\-\fP include \fBi\fP se \fBbash\fP è interattiva, permettendo a uno script di shell o a un file di inizializzazione di verificare questo stato. .PP I seguenti paragrafi descrivono come \fBbash\fP esegue i suoi file di inizializzazione. Se qualcuno dei file esiste ma non può essere letto \fBbash\fP riporta un errore. Le tilde sono espanse nei nomi\-file come descritto più avanti in \fBEspansione della tilde\fP nella sezione .SM \fBESPANSIONE\fP. .PP Quando \fBbash\fP è invocata come una shell di login interattiva o come una shell non interattiva con l'opzione \fB\-\-login\fP, prima legge ed esegue comandi dal file \fI/etc/profile\fP, se quel file esiste. Dopo aver letto quel file, cerca \fI~/.bash_profile\fP, \fI~/.bash_login\fP e \fI~/.profile\fP, in quest'ordine, e legge ed esegue comandi dal primo file che trova e che è leggibile. L'opzione \fB\-\-noprofile\fP può essere usata quando si avvia la shell per inibire questo comportamento. .PP Quando una shell di login interattiva esce, o una shell di login non interattiva esegue il comando incorporato \fBexit\fP, \fBbash\fP legge ed esegue comandi dal file \fI~/.bash_logout\fP, se esiste. .PP Quando una shell interattiva che non è una shell di login è avviata, \fBbash\fP legge ed esegue comandi da \fI~/.bashrc\fP, se quel file esiste. Ciò può essere inibito utilizzando l'opzione \fB\-\-norc\fP. L'opzione \fB\-\-rcfile\fP \fIfile\fP forza \fBbash\fP a leggere ed eseguire comandi da \fIfile\fP invece che da \fI~/.bashrc\fP. .PP Quando \fBbash\fP è avviata in modo non interattivo, per eseguire uno script di shell, per esempio, cerca la variabile di ambiente .SM \fBBASH_ENV\fP, espande il suo valore se questo esiste, e utilizza il valore espanso come il nome di un file da leggere ed eseguire. \fBBash\fP si comporta come se fossero stati eseguiti i seguenti comandi: .sp .5 .RS .if t \f(CWif [ \-n "$BASH_ENV" ]; then . "$BASH_ENV"; fi\fP .if n if [ \-n "$BASH_ENV" ]; then . "$BASH_ENV"; fi .RE .sp .5 ma il valore della variabile .SM \fBPATH\fP non è usato per cercare il nome\-file. .PP Se \fBbash\fP è invocata col nome \fBsh\fP, tenta di imitare il comportamento di inizializzazione delle vecchie versioni di \fBsh\fP il più fedelmente possibile, e allo stesso tempo si conforma allo standard POSIX. Quando invocata come una shell di login interattiva, o una shell interattiva con l'opzione \fB\-\-login\fP, per prima cosa tenta di leggere ed eseguire i comandi da \fI/etc/profile\fP e \fI~/.profile\fP, in quest'ordine. L'opzione \fB\-\-noprofile\fP può essere usata per inibire questo comportamento. Quando invocata come una shell interattiva col nome \fBsh\fP, \fBbash\fP cerca la variabile .SM \fBENV\fP, espande il suo valore se questo è definito, e usa il valore espanso come nome di un file da leggere ed eseguire. Poiché una shell invocata come \fBsh\fP non tenta di leggere ed eseguire comandi da qualsiasi altro file di inizializzazione, l'opzione \fB\-\-rcfile\fP non ha alcun effetto. Una shell non interattiva invocata col nome \fBsh\fP non tenta di leggere nessun altro file di inizializzazione. Quando invocata come \fBsh\fP, \fBbash\fP lavora in modalità \fIposix\fP dopo che i file di inizializzazione sono stati letti. .PP Quando \fBbash\fP è avviata in modalità \fIposix\fP come con l'opzione \fB\-\-posix\fP della riga di comando, essa segue lo standard POSIX per i file di inizializzazione. In questa modalità la shell interattiva espande la variabile .SM \fBENV\fP e i comandi sono letti ed eseguiti dal file il cui nome è il valore espanso. Nessun altro file di inizializzazione viene letto. .PP \fBBash\fP cerca di determinare quando la si sta eseguendo col suo standard input connesso a una connessione di rete, come quando è eseguita dal demone di shell remota, solitamente \fIrshd\fP, o dal demone di shell sicura \fIsshd\fP. Se \fBbash\fP stabilisce che è eseguita in questo modo, legge ed esegue comandi da \fI~/.bashrc\fP, se quel file esiste ed è leggibile. Non fa questo se è invocata come \fBsh\fP. L'opzione \fB\-\-norc\fP può essere usata per inibire questo comportamento, e l'opzione \fB\-\-rcfile\fP può essere usata per forzare la lettura di un altro file, ma né \fIrshd\fP né \fIsshd\fP invocano normalmente la shell con queste opzioni o permettono che siano specificate. .PP Se la shell è avviata con l'id effettivo dell'utente (gruppo) non uguale all'id reale dell'utente (gruppo), e non viene fornita l'opzione \fB\-p\fP, nessun file di inizializzazione viene letto, le funzioni di shell non vengono ereditate dall'ambiente, le variabili .SM \fBSHELLOPTS\fP, .SM \fBBASHOPTS\fP, .SM \fBCDPATH\fP e .SM \fBGLOBIGNORE\fP, se esistono nell'ambiente, vengono ignorate, e l'id effettivo dell'utente è impostato all'id reale dell'utente. Se l'opzione \fB\-p\fP è fornita all'invocazione, il comportamento all'avvio è il medesimo, ma l'id effettivo dell'utente non viene reimpostato. .SH DEFINIZIONI Le seguenti definizioni sono usate nel resto di questo documento. .PD 0 .TP \fBblank\fP Uno spazio o carattere di tabulazione (tab). .TP \fBparola\fP Una sequenza di caratteri considerata come una singola unità dalla shell. Nota anche come \fBtoken\fP. .TP \fBnome\fP Una \fIparola\fP che consiste solo di caratteri alfanumerici e trattini di sottolineatura, e comincia con un carattere alfabetico o un trattino di sottolineatura. Definita anche un \fBidentificatore\fP. .TP \fBmetacarattere\fP Un carattere che, quando non quotato, separa le parole. Uno dei seguenti: .br .RS .PP .if t \fB| & ; ( ) < > space tab newline\fP .if n \fB| & ; ( ) < > space tab newline\fP .RE .TP \fBoperatore di controllo\fP Un \fItoken\fP che realizza una funzione di controllo. È uno dei seguenti simboli: .RS .PP .if t \fB|| & && ; ;; ;& ;;& ( ) | |& \fP .if n \fB|| & && ; ;; ;& ;;& ( ) | |& \fP .RE .PD .SH "PAROLE RISERVATE" Le \fIparole riservate\fP sono parole che hanno un significato speciale per la shell. Le seguenti parole sono riconosciute come riservate quando non quotate e sono o la prima parola di un comando (si veda .SM \fBGRAMMATICA DELLA SHELL\fP più avanti), o la terza parola di un comando \fBcase\fP o \fBselect\fP (è valida solo \fBin\fP), o la terza parola di un comando \fBfor\fP (sono valide solo \fBin\fP e \fBdo\fP): .if t .RS .PP .B .if n ! case coproc do done elif else esac fi for function if in select then until while { } time [[ ]] .if t ! case coproc do done elif else esac fi for function if in select then until while { } time [[ ]] .if t .RE .SH "GRAMMATICA DELLA SHELL" Questa sezione descrive la sintassi delle varie forme dei comandi shell. .SS "Comandi semplici" Un \fIcomando semplice\fP è una sequenza opzionale di assegnamenti di variabile seguita da parole, separate da \fIblank\fP, e ridirezioni, e terminata da un \fIoperatore di controllo\fP. La prima parola specifica il comando che deve essere eseguito, ed è passata come argomento zero. Le rimanenti parole sono passate come argomenti al comando invocato. .PP Il valore di ritorno di un \fIcomando semplice\fP è il suo stato di uscita, o 128+\fIn\^\fP se il comando è fatto terminare da un segnale \fIn\fP. .SS Pipeline Una \fIpipeline\fP è una sequenza di uno o più comandi separati da uno degli operatori di controllo \fB|\fP o \fB|&\fP. Il formato per una pipeline è: .RS .PP [\fBtime\fP [\fB\-p\fP]] [ ! ] \fIcomando1\fP [ [\fB|\fP\(bv\fB|&\fP] \fIcomando2\fP ... ] .RE .PP Lo standard output di \fIcomando1\fP è connesso attraverso una pipe allo standard input di \fIcomando2\fP. Questa connessione è effettuata prima di qualsiasi ridirezione specificata da \fIcomando1\fP (si veda .SM \fBRIDIREZIONE\fP più avanti). Se viene usato \fB|&\fP, lo standard error di \fIcomando1\fP, in aggiunta al suo standard output, è connesso allo standard input di \fIcomando2\fP tramite la pipe; è una notazione breve per \fB2>&1 |\fP. Questa ridirezione implicita dello standard error allo standard output è effettuata dopo qualsiasi ridirezione specificata da \fIcomando1\fP. .PP Lo stato di ritorno di una pipeline è lo stato d'uscita dell'ultimo comando, a meno che l'opzione \fBpipefail\fP non sia abilitata. Se \fBpipefail\fP è abilitata, lo stato di ritorno della pipeline è il valore dell'ultimo comando (il più a destra) che esce con uno stato diverso da zero o zero se tutti i comandi escono con successo. Se la parola riservata \fB!\fP precede una pipeline, lo stato d'uscita di quella pipeline è la negazione logica dello stato d'uscita come sopra descritto. La shell aspetta che tutti i comandi nella pipeline terminino prima di ritornare un valore. .PP Se la parola riservata \fBtime\fP precede una pipeline, quando la pipeline termina vengono notificati i tempi impiegati dall'utente e dal sistema per la sua esecuzione. L'opzione \fB\-p\fP cambia il formato di output con quello specificato da POSIX. Quando la shell è in \fImodalità posix\fP, non riconosce \fBtime\fP come una parola riservata se il token successivo inizia con un `\-'. La variabile .SM \fBTIMEFORMAT\fP può essere impostata a una stringa di formato che specifica come le informazioni sui tempi dovranno essere mostrate; si veda la descrizione di .SM \fBTIMEFORMAT\fP sotto \fBVariabili di shell\fP più avanti. .PP Quando la shell è in \fImodalità posix\fP, \fBtime\fP può essere seguito da un newline. In questo caso la shell visualizza il tempo totale dell'utente e del sistema utilizzato dalla shell e dai suoi figli. Si può usare la variabile .SM \fBTIMEFORMAT\fP per specificare il formato dell'informazione sul tempo. .PP Ogni comando in una pipeline, nella quale vengano create pipe, è eseguito come un processo separato (cioè in una \fIsubshell\fP). Si veda .SM \fBAMBIENTE DI ESECUZIONE DEI COMANDI\fP per la descrizione di subshell e di un ambiente di subshell. Se è abilitata l'opzione \fBlastpipe\fP usando il comando incorporato \fBshopt\fP (si veda più avanti la descrizione di \fBshopt\fP), l'ultimo elemento di una pipeline può essere eseguito dal processo di shell quando il controllo dei job non è attivo. .SS Liste Una \fIlista\fP è una sequenza di una o più pipeline separate da uno degli operatori \fB;\fP, \fB&\fP, \fB&&\fP o \fB||\fP, e facoltativamente fatta terminare da uno fra \fB;\fP, \fB&\fP o \fB\fP. .PP Di questi operatori di lista, \fB&&\fP e \fB||\fP hanno uguale precedenza, seguiti da \fB;\fP e \fB&\fP, che hanno uguale precedenza. .PP Per delimitare i comandi in una \fIlista\fP si può usare una sequenza di uno o più newline al posto di un punto e virgola. .PP Se un comando è terminato dall'operatore di controllo \fB&\fP, la shell esegue il comando in \fIbackground\fP in una subshell. La shell non aspetta che il comando finisca, e lo stato di ritorno è 0. Questi sono detti comandi \fIasincroni\fP. I comandi separati da un \fB;\fP sono eseguiti sequenzialmente; la shell aspetta che ogni comando, in sequenza, termini. Lo stato di ritorno è lo stato d'uscita dell'ultimo comando eseguito. .PP Le liste AND e OR sono sequenze di una o più pipeline separate, rispettivamente, dagli operatori di controllo \fB&&\fP e \fB||\fP. Le liste AND e OR vengono eseguite con associatività a sinistra. Una lista AND ha la forma .RS .PP \fIcomando1\fP \fB&&\fP \fIcomando2\fP .RE .PP \fIcomando2\fP è eseguito se, e solo se, \fIcomando1\fP restituisce uno stato d'uscita di zero (successo). .PP Una lista OR ha la forma .RS .PP \fIcomando1\fP \fB||\fP \fIcomando2\fP .RE .PP \fIcomando2\fP è eseguito se e solo se \fIcomando1\fP ritorna uno stato d'uscita diverso da zero. Lo stato di ritorno di liste AND e OR è lo stato d'uscita dell'ultimo comando eseguito nella lista. .SS "Comandi composti" Un \fIcomando composto\fP è uno dei seguenti. Nella maggior parte dei casi una \fIlista\fP in una descrizione di comando può essere separata dal resto del comando da uno o più newline, e può essere seguita da un newline al posto di un punto e virgola. .TP (\fIlista\fP) \fIlista\fP è eseguita in un ambiente di subshell (si veda .SM \fBAMBIENTE DI ESECUZIONE DEI COMANDI\fP più avanti). Assegnamenti di variabili e comandi incorporati che influenzano l'ambiente della shell non hanno effetto dopo che il comando è completato. Lo stato di ritorno è lo stato d'uscita di \fIlista\fP. .TP { \fIlista\fP; } \fIlista\fP è semplicemente eseguita nell'ambiente di shell corrente. \fIlista\fP deve essere fatta terminare con un newline o un punto e virgola. Questo è conosciuto come \fIgroup command\fP. Lo stato di ritorno è lo stato d'uscita di \fIlista\fP. Da notare che diversamente dai metacaratteri \fB(\fP e \fB)\fP, \fB{\fP e \fB}\fP sono \fIparole riservate\fP e devono essere usati quando una parola riservata è ammissibile. Poiché esse non causano una divisione delle parole, devono essere separate da \fIlista\fP con uno spazio o un altro metacarattere di shell. .TP ((\fIespressione\fP)) L'\fIespressione\fP è valutata in accordo con le regole descritte più avanti sotto .SM \fBVALUTAZIONE ARITMETICA\fP. Se il valore dell'espressione è diverso da zero, lo stato di ritorno è 0; altrimenti lo stato di ritorno è 1. L'\fIespressione\fP sottostà alle stesse espansioni come se fosse tra virgolette doppie, ma i caratteri di virgolette doppie presenti in \fIespressione\fP non sono trattati in maniera speciale e sono rimossi. .TP \fB[[\fP \fIespressione\fP \fB]]\fP Ritorna uno stato di 0 o 1 a seconda della valutazione della espressione condizionale \fIespressione\fP. Le espressioni sono composte dalle primitive descritte più avanti sotto .SM \fBESPRESSIONI CONDIZIONALI\fP. La suddivisione in parole e l'espansione del nome di percorso non sono effettuate sulle parole fra la \fB[[\fP e \fB]]\fP; espansione della tilde, espansione di parametro e di variabile, espansione aritmetica, sostituzione di comando, sostituzione di processo, e rimozione degli apici (le espansioni che sarebbero occorse se le parole fossero state racchiuse tra doppie virgolette) vengono eseguite. Gli operatori condizionali come \fB\-f\fP devono essere senza apici per essere riconosciuti come primitive. .if t .sp 0.5 .if n .sp 1 Quando vengono usati con \fB[[\fP, gli operatori \fB<\fP e \fB>\fP ordinano lessicograficamente usando la localizzazione corrente. .if t .sp 0.5 .if n .sp 1 Quando vengono usati gli operatori \fB==\fP e \fB!=\fP, la stringa alla destra dell'operatore è considerata un modello ed è confrontata in accordo con le regole descritte più avanti sotto \fBModelli di ricerca\fP, come se fosse abilitata l'opzione di shell \fBextglob\fP. L'operatore \fB=\fP è equivalente a \fB==\fP. Se l'opzione di shell \fBnocasematch\fP è abilitata, il confronto è effettuato senza distinzione fra maiuscole e minuscole nei caratteri alfabetici. Il valore di ritorno è 0 se la stringa corrisponde (\fB==\fP) o non corrisponde (\fB!=\fP) al modello, e 1 altrimenti. Ogni parte del modello può essere quotata per forzarla a essere considerata come una stringa. .if t .sp 0.5 .if n .sp 1 Un ulteriore operatore binario, \fB=~\fP, è disponibile con la stessa precedenza di \fB==\fP e \fB!=\fP. Quando viene usato, la stringa alla destra dell'operatore è considerata un'espressione regolare estesa POSIX e confrontata come tale (usando le interfacce POSIX \fIregcomp\fP e \fIregexec\fP usualmente descritte in \fIregex\fP(3)). Il valore di ritorno è 0 se la stringa corrisponde al modello, e 1 altrimenti. Se l'espressione regolare è sintatticamente scorretta, il valore di ritorno dell'espressione condizionale è 2. Se l'opzione di shell \fBnocasematch\fP è abilitata, il confronto è effettuato senza distinguere le maiuscole dalle minuscole nei caratteri alfabetici. Se una parte qualsiasi del modello viene quotata, questa parte viene usata letteralmente. Questo vuol dire che ogni carattere nella parte quotata corrisponde a se stesso. Se il modello è memorizzato in una variabile shell, quotare l'espansione della variabile forza una corrispondenza letterale dell'intero modello. Le espressioni fra parentesi nelle espressioni regolari devono essere trattate con attenzione, poiché i normali caratteri di quotatura perdono il loro significato quando sono fra parentesi graffe. .if t .sp 0.5 .if n .sp 1 Il modello corrisponderà se corrisponde ad una parte qualsiasi della stringa. Si può ancorare il modello usando gli operatori delle espressioni regolari \fB^\fP e \fB$\fP in modo da fare una corrispondenza sull'intera stringa. La variabile vettore .SM \fBBASH_REMATCH\fP registra quali parti della stringa corrispondono al modello. L'elemento di .SM \fBBASH_REMATCH\fP con indice 0 contiene la porzione di stringa che corrisponde all'intero modello. Le sotto stringhe che corrispondono a sotto espressioni tra parentesi dell'espressione regolare sono salvate negli indici rimanenti di .SM \fBBASH_REMATCH\fP. L'elemento .SM \fBBASH_REMATCH\fP con indice \fIn\fP è la porzione di stringa che corrisponde alla \fIn\fP\-esima sotto espressione tra parentesi. Bash imposta .SM \fBBASH_REMATCH\fP nell'ambiente globale; dichiararla come variabile locale porterà a risultati imprevisti. .if t .sp 0.5 .if n .sp 1 Le espressioni possono essere combinate usando i seguenti operatori, elencati in ordine inverso di precedenza: .if t .sp 0.5 .if n .sp 1 .RS .PD 0 .TP \fB( \fP\fIespressione\fP\fB )\fP Ritorna il valore di \fIespressione\fP. Questo può essere usato per modificare la normale precedenza degli operatori. .TP \fB! \fP\fIespressione\fP Vero se \fIespressione\fP è falsa. .TP \fIespressione1\fP \fB&&\fP \fIespressione2\fP Vero se entrambe \fIespressione1\fP e \fIespressione2\fP sono vere. .TP \fIespressione1\fP \fB||\fP \fIespressione2\fP Vero se almeno una fra \fIespressione1\fP o \fIespressione2\fP è vera. .PD .LP Gli operatori \fB&&\fP e \fB||\fP non valutano \fIespressione2\fP se il valore di \fIespressione1\fP è sufficiente per determinare il valore di ritorno dell'intera espressione condizionale. .RE .TP \fBfor\fP \fInome\fP [ [ \fBin\fP [ \fIparola ...\fP ] ] ; ] \fBdo\fP \fIlista\fP ; \fBdone\fP La lista di parole che seguono \fBin\fP è espansa, generando una lista di elementi. La variabile \fInome\fP è impostata, di volta in volta, a ciascun elemento di questa lista e \fIlista\fP è eseguita ogni volta. Se la \fIparola\fP \fBin\fP è omessa, il comando \fBfor\fP esegue \fIlista\fP una volta per ogni parametro posizionale esistente (si veda .SM \fBPARAMETRI\fP più avanti). Lo stato di ritorno è lo stato d'uscita dell'ultimo comando eseguito. Se l'espansione degli elementi che seguono \fBin\fP risulta in una lista vuota, non è eseguito alcun comando, e lo stato di ritorno è 0. .TP \fBfor\fP (( \fIespr1\fP ; \fIespr2\fP ; \fIespr3\fP )) ; \fBdo\fP \fIlista\fP ; \fBdone\fP Prima viene valutata l'espressione aritmetica \fIespr1\fP in accordo con le regole descritte più avanti sotto .SM \fBVALUTAZIONE ARITMETICA\fP. Viene quindi valutata ripetutamente l'espressione aritmetica \fIespr2\fP finché non assume il valore zero. Ogni volta che \fIespr2\fP è diverso da zero, \fIlista\fP viene eseguita e l'espressione aritmetica \fIespr3\fP viene valutata. Se qualche espressione è omessa, si suppone che abbia il valore 1. Il valore di ritorno è lo stato d'uscita dell'ultimo comando in \fIlista\fP che è eseguito, o falso se una qualsiasi delle espressioni non è valida. .TP \fBselect\fP \fInome\fP [ \fBin\fP \fIparola\fP ] ; \fBdo\fP \fIlista\fP ; \fBdone\fP La lista di parole che segue \fBin\fP è espansa, generando una lista di elementi. L'insieme delle parole espanse è stampato sullo standard error, ognuna preceduta da un numero. Se \fBin\fP \fIparola\fP è omesso, sono stampati i parametri posizionali (si veda .SM \fBPARAMETRI\fP più avanti). Poi \fBselect\fP mostra il prompt .SM \fBPS3\fP e viene letta una riga dallo standard input. Se la riga consiste di un numero corrispondente a una delle parole mostrate, allora il valore di \fInome\fP è impostato a quella parola. Se la riga è vuota, le parole e il prompt sono mostrati di nuovo. Se viene immesso EOF [CTRL\-D], il comando termina e restituisce 1. Qualsiasi altro valore letto fa sì che \fInome\fP sia impostato al valore nullo. La riga letta è salvata nella variabile .SM \fBREPLY\fP. La \fIlista\fP è eseguita dopo ciascuna selezione fino a che non sia eseguito un comando \fBbreak\fP. Lo stato d'uscita di \fBselect\fP è lo stato d'uscita dell'ultimo comando eseguito in \fIlista\fP, o zero se nessun comando è stato eseguito. .TP \fBcase\fP \fIparola\fP \fBin\fP [ [(] \fImodello\fP [ \fB|\fP \fImodello\fP ] ... ) \fIlista\fP ;; ] ... \fBesac\fP Un comando \fBcase\fP prima espande \fIparola\fP, e poi prova a confrontarla, di volta in volta, con ognuno dei \fImodelli\fP, usando le regole di confronto descritte più avanti in \fBModelli di ricerca\fP. La \fIparola\fP è espansa usando espansione della tilde, espansione di parametro e di variabile, espansione aritmetica, sostituzione di comando, sostituzione di processo e rimozione della quotatura. Ogni \fImodello\fP esaminato è espanso usando espansione della tilde, espansione di parametro e di variabile, espansione aritmetica, sostituzione di comando, sostituzione di processo e rimozione della quotatura. Se l'opzione di shell \fBnocasematch\fP è abilitata, il confronto è effettuato senza distinzione fra maiuscole e minuscole nei caratteri alfabetici. Quando viene trovata una corrispondenza, viene eseguita la \fIlista\fP ad essa abbinata. Se viene usato l'operatore \fB;;\fP, dopo il primo confronto riuscito non ne viene tentato nessun altro. Usando \fB;&\fP al posto di \fB;;\fP l'esecuzione continua con la \fIlista\fP associata alla successiva serie di modelli. Se si usa \fB;;&\fP al posto di \fB;;\fP la shell analizza il successivo modello di lista nell'istruzione, se ce n'è qualcuno, ed esegue qualsiasi \fIlista\fP associata su una corrispondenza andata a buon fine, continuando l'esecuzione dell'istruzione case come se il modello di lista non avesse trovato corrispondenze. Lo stato d'uscita è zero se nessun modello corrisponde. Altrimenti, è lo stato d'uscita dell'ultimo comando eseguito in \fIlista\fP. .TP \fBif\fP \fIlista\fP; \fBthen\fP \fIlista\fP; [ \fBelif\fP \fIlista\fP; \fBthen\fP \fIlista\fP; ] ... [ \fBelse\fP \fIlista\fP; ] \fBfi\fP La \fIlista\fP dopo \fBif\fP è eseguita. Se il suo stato d'uscita è 0, è eseguita la \fIlista\fP dopo \fBthen\fP. Altrimenti, è eseguita a turno ciascuna \fIlista\fP dopo \fBelif\fP, e se il suo stato d'uscita è 0, è eseguita la corrispondente \fIlista\fP dopo \fBthen\fP e il comando termina. Altrimenti, se presente, è eseguita, la \fIlista\fP dopo \fBelse\fP. Lo stato d'uscita è lo stato d'uscita dell'ultimo comando eseguito, o zero se nessuna delle condizioni considerate è risultata essere vera. .TP \fBwhile\fP \fIlista\-1\fP; \fBdo\fP \fIlista\-2\fP; \fBdone\fP .PD 0 .TP \fBuntil\fP \fIlista\-1\fP; \fBdo\fP \fIlista\-2\fP; \fBdone\fP .PD Il comando \fBwhile\fP esegue ripetutamente la lista \fIlista\-2\fP finché l'ultimo comando nella lista \fIlista\-1\fP ritorna uno stato di uscita di zero. Il comando \fBuntil\fP è identico al comando \fBwhile\fP, con la sola differenza che il risultato del test è negato: \fIlista\-2\fP è eseguita finché l'ultimo comando in \fIlista\-1\fP ritorna uno stato d'uscita diverso da zero. Lo stato d'uscita dei comandi \fBwhile\fP e \fBuntil\fP è lo stato d'uscita dell'ultimo comando eseguito in \fIlista\-2\fP, o zero se non ne è stato eseguito alcuno. .SS Coprocessi Un \fIcoprocesso\fP è un comando di shell preceduto dalla parola riservata \fBcoproc\fP. Un coprocesso viene eseguito in modo asincrono in una subshell, come se il comando fosse stato terminato con l'operatore di controllo \fB&\fP, con una pipe a due vie stabilita fra la shell in esecuzione e il coprocesso. .PP La sintassi per un coprocesso è: .RS .PP \fBcoproc\fP [\fINOME\fP] \fIcomando\fP [\fIridirezioni\fP] .RE .PP Questo crea un coprocesso chiamato \fINOME\fP. \fIcomando\fP può essere un comando semplice o composto (vedi sopra). \fINOME\fP è un nome di variabile shell. Se \fINOME\fP non è indicato, il nome predefinito è \fBCOPROC\fP. .PP La forma raccomandata per un coprocesso è .RS .PP \fBcoproc\fP [\fINOME\fP] { \fIcomando\fP [\fIridirezioni\fP]; } .RE .PP Questa forma è consigliata perché il comando semplice risulta essere un coprocesso sempre chiamato \fBCOPROC\fP, ed è più semplice da usare e più completo che gli altri comandi composti. .PP Se \fIcomando\fP è un comando composto, \fINOME\fP è opzionale. La parola che segue \fBcoproc\fP determina se viene interpretata come nome di variabile o meno: è interpretata come \fINOME\fP se non è una parola riservata che introduce un comando composto. Se \fIcomando\fP è un comando semplice, allora \fINOME\fP non è permesso; questo per evitare confusione tra \fINOME\fP e la prima parola di un comando semplice. .PP Quando il coprocesso viene eseguito, la shell crea una variabile vettore (si veda \fBVettori\fP più avanti) chiamata \fINOME\fP nel contesto della shell in esecuzione. Lo standard output di \fIcomando\fP è connesso tramite una pipe a un descrittore di file nella shell in esecuzione, e il descrittore di file è assegnato a \fINOME\fP[0]. Lo standard input di \fIcomando\fP è connesso tramite una pipe a un descrittore di file nella shell in esecuzione, e tale descrittore è assegnato a \fINOME\fP[1]. Questa pipe è costituita prima che qualsiasi ridirezione venga specificata dal comando (si veda .SM \fBRIDIREZIONE\fP più avanti). I descrittori di file possono essere utilizzati come argomenti per i comandi di shell e ridirezioni usando comuni espansioni di parola. Oltre a quelli creati per eseguire comandi e sostituzioni di processo, i descrittori di file non sono disponibili nelle subshell. .PP L'ID del processo della shell figlia creata per eseguire il coprocesso è disponibile come valore della variabile \fINOME\fP_PID. Il comando incorporato \fBwait\fP può essere usato per attendere che il coprocesso sia terminato. .PP Poiché il coprocesso è creato come comando asincrono, il comando \fIcoproc\fP restituisce sempre successo. Lo stato di ritorno di un coprocesso è lo stato di ritorno di \fIcomando\fP. .SS "Definizioni della funzione di shell" Una funzione di shell è un oggetto che viene chiamato come un comando semplice ed esegue un comando composto con una nuova serie di parametri posizionali. Le funzioni di shell sono dichiarate in questo modo: .TP \fInomef\fP () \fIcomando\-composto\fP [\fIridirezione\fP] .PD 0 .TP \fBfunction\fP \fInomef\fP [()] \fIcomando\-composto\fP [\fIridirezione\fP] .PD Qui sopra si definisce una funzione chiamata \fInomef\fP. La parola riservata \fBfunction\fP è opzionale. Se la parola riservata \fBfunction\fP è fornita, le parentesi sono opzionali. Il \fIcorpo\fP della funzione è il comando composto \fIcomando\-composto\fP (si veda \fBComandi composti\fP sopra). Questo comando è usualmente una \fIlista\fP di comandi fra { e }, ma potrebbe essere qualsiasi comando elencato in precedenza, sotto \fBComandi composti\fP, con una eccezione: se viene usata la parola riservata \fBfunction\fP ma non vengono fornite le parentesi, sono richieste le parentesi graffe. \fIcomando\-composto\fP è eseguito ogni volta che \fInomef\fP è specificato come nome di un comando semplice. Quando si è in \fImodalità posix\fP, \fInomef\fP dev'essere un \fInome\fP di shell valido e non può essere il nome di uno dei \fIcomandi interni speciali\fP POSIX. Nella modalità predefinita, un nome di funzione può essere qualsiasi parola di shell non quotata che non contiene \fB$\fP. Ogni ridirezione (si veda .SM \fBRIDIREZIONE\fP più avanti) specificata quando una funzione è definita viene effettuata quando quella funzione viene eseguita. Lo stato d'uscita di una definizione di funzione è 0 tranne quando si verifica un errore di sintassi o una funzione in sola lettura con lo stesso nome è già esistente. Quando eseguita, lo stato d'uscita di una funzione è lo stato d'uscita dell'ultimo comando eseguito nel corpo. (Si veda .SM \fBFUNZIONI\fP più avanti). .SH COMMENTI In una shell non interattiva, o in una shell interattiva in cui l'opzione \fBinteractive_comments\fP del comando incorporato \fBshopt\fP è abilitata (si veda .SM \fBCOMANDI INCORPORATI DELLA SHELL\fP più avanti), una parola che inizia con \fB#\fP fa sì che la parola e tutti i rimanenti caratteri di quella riga siano ignorati. Una shell interattiva senza l'opzione \fBinteractive_comments\fP abilitata non permette i commenti. L'opzione \fBinteractive_comments\fP è attiva in modo predefinito nelle shell interattive. .SH QUOTATURA La \fIquotatura\fP è usata per togliere il significato speciale, per la shell, di certi caratteri o parole. La quotatura può essere usata per disabilitare il trattamento speciale per i caratteri speciali, per impedire che le parole riservate siano riconosciute come tali, e per prevenire l'espansione di parametro. .PP Ciascuno dei \fImetacaratteri\fP elencati prima sotto .SM \fBDEFINIZIONI\fP ha un significato speciale per la shell e deve essere quotato se esso deve rappresentare se stesso. .PP Quando vengono usati i servizi per l'espansione della cronologia dei comandi (si veda .SM \fBESPANSIONE DELLA CRONOLOGIA\fP più avanti), il carattere di \fIespansione della cronologia\fP, in genere \fB!\fP, dev'essere quotato per prevenire l'espansione della cronologia. .PP Vi sono tre meccanismi di quotatura: \fIcaratteri di protezione\fP (escape), apostrofi e virgolette doppie. .PP Una barra inversa (\fB\e\fP) non quotata è il \fIcarattere di protezione\fP. Esso attribuisce il valore letterale al successivo carattere, con l'eccezione di . Se vi è una coppia \fB\e\fP, e la barra inversa non è quotata, il \fB\e\fP è trattato come una continuazione di riga (cioè, è rimosso dal flusso di input e viene realmente ignorato). .PP Racchiudendo dei caratteri tra apostrofi si conserva il valore letterale di ogni carattere all'interno degli apostrofi. Un apostrofo non può essere inserito tra apostrofi, nemmeno preceduto da una barra inversa. .PP Racchiudere caratteri tra doppie virgolette conserva il valore letterale di tutti i caratteri all'interno, con le eccezioni di \fB$\fP, \fB\`\fP, \fB\e\fP e, quando l'espansione della cronologia è abilitata, \fB!\fP. Quando la shell è in \fImodalità posix\fP, \fB!\fP non ha un significato speciale quando è tra doppie virgolette, anche quando l'espansione della cronologia è abilitata. I caratteri \fB$\fP e \fB\`\fP conservano il loro significato speciale anche tra doppie virgolette. La barra inversa mantiene il suo significato speciale solo quando seguita da uno dei seguenti caratteri: \fB$\fP, \fB\`\fP, \^\fB"\fP\^, \fB\e\fP, o \fB\fP. Le doppie virgolette possono essere contenute in una stringa fra doppie virgolette facendole precedere da una barra inversa. Se abilitata, l'espansione della cronologia viene effettuata a meno che un \fB!\fP tra doppie virgolette non venga protetto da una barra inversa. La barra inversa che precede il \fB!\fP non viene rimossa. .PP I parametri speciali \fB*\fP e \fB@\fP hanno un significato speciale quando sono tra doppie virgolette (si veda .SM \fBPARAMETRI\fP più avanti). .PP Parole della forma \fB$\fP\(aq\fIstringa\fP\(aq sono trattate come varianti della quotatura con apice singolo. La parola espande in \fIstringa\fP, coi caratteri protetti da una barra inversa sostituiti come specificato dallo standard ANSI C. Le sequenze di protezione tramite la barra inversa, se presenti, sono decodificate come segue: .RS .PD 0 .TP \fB\ea\fP avviso (segnale acustico) .TP \fB\eb\fP backspace .TP \fB\ee\fP .TP \fB\eE\fP un carattere di escape .TP \fB\ef\fP salto pagina .TP \fB\en\fP codice di fine riga (newline) .TP \fB\er\fP ritorno carrello .TP \fB\et\fP tabulazione orizzontale .TP \fB\ev\fP tabulazione verticale .TP \fB\e\e\fP barra inversa .TP \fB\e\(aq\fP apostrofo .TP \fB\e"\fP virgolette .TP \fB\e?\fP punto interrogativo .TP \fB\e\fP\fInnn\fP il carattere a otto bit il cui valore è il valore ottale \fInnn\fP (da una a tre cifre ottali) .TP \fB\ex\fP\fIHH\fP il carattere a otto bit il cui valore è il valore esadecimale \fIHH\fP (una o due cifre esadecimali) .TP \fB\eu\fP\fIHHHH\fP il carattere Unicode (ISO/IEC 10646) il cui valore è il valore esadecimale \fIHHHH\fP (da una a quattro cifre esadecimali) .TP \fB\eU\fP\fIHHHHHHHH\fP il carattere Unicode (ISO/IEC 10646) il cui valore è il valore esadecimale \fIHHHHHHHH\fP (da una a otto cifre esadecimali) .TP \fB\ec\fP\fIx\fP un carattere control\-\fIx\fP .PD .RE .LP Il risultato espanso è racchiuso fra apostrofi come se il segno del dollaro non fosse presente. .PP Una stringa fra doppie virgolette preceduta dal segno del dollaro (\fB$\fP"\fIstring\fP") causa la traduzione della stringa conformemente alla localizzazione corrente. L'infrastruttura \fIgettext\fP effettua la ricerca e la traduzione usando le variabili di shell \fBLC_MESSAGES\fP, \fBTEXTDOMAINDIR\fP e \fBTEXTDOMAIN\fP. Se la localizzazione corrente è \fBC\fP o \fBPOSIX\fP, o se non ci sono traduzioni disponibili, il segno del dollaro viene ignorato. Poiché questa è una forma di quotatura con doppie virgolette, la stringa rimarrà tra doppie virgolette, che sia o meno tradotta e sostituita. Se l'opzione \fBnoexpand_translation\fP è abilitata usando il comando incorporato \fBshopt\fP, allora le stringhe tradotte saranno trattate come tra virgolette singole anziché doppie. Vedere la descrizione di \fBshopt\fP più avanti sotto .SM \fBCOMANDI INCORPORATI DELLA SHELL\fP. .SH PARAMETRI Un \fIparametro\fP è una entità che contiene valori. Può essere un \fInome\fP, un numero o uno dei caratteri speciali elencati più avanti sotto \fBParametri speciali\fP. Una \fIvariabile\fP è un parametro indicato da un \fInome\fP. Una variabile ha un \fIvalore\fP e zero o più \fIattributi\fP. Gli attributi sono assegnati utilizzando il comando incorporato \fBdeclare\fP (si veda \fBdeclare\fP più avanti in .SM \fBCOMANDI INCORPORATI DELLA SHELL\fP). .PP Un parametro è impostato se a esso è stato assegnato un valore. La stringa nulla è un valore valido. Una volta che una variabile è impostata, essa può essere rimossa solo usando il comando incorporato \fBunset\fP (si veda .SM \fBCOMANDI INCORPORATI DELLA SHELL\fP più avanti). .PP Una \fIvariabile\fP può essere assegnata da una istruzione della forma .RS .PP \fInome\fP=[\fIvalore\fP] .RE .PP Se \fIvalore\fP è omesso, alla variabile è assegnata la stringa nulla. Tutti i \fIvalori\fP sono sottoposti a espansione della tilde, espansione di parametro e variabile, sostituzione di comando, espansione aritmetica e rimozione dei caratteri di quotatura (si veda .SM \fBESPANSIONE\fP più avanti). Se la variabile ha il suo attributo \fBinteger\fP impostato, allora \fIvalore\fP è valutato come un'espressione aritmetica anche se l'espansione del $((...)) non è utilizzata (si veda \fBEspansione aritmetica\fP più avanti). La suddivisione in parole e l'espansione di percorso non sono effettuati. Le istruzioni di assegnamento possono anche apparire come argomenti per i comandi incorporati \fBalias\fP, \fBdeclare\fP, \fBtypeset\fP, \fBexport\fP, \fBreadonly\fP e \fBlocal\fP (comandi \fIdi dichiarazione\fP). Quando è in \fImodalità posix\fP, questi comandi incorporati possono apparire in un comando dopo una o più istanze del comando incorporato \fBcommand\fP e mantengono queste proprietà dell'istruzione di assegnamento. .PP Nel contesto in cui un'istruzione di assegnamento sta assegnando un valore a una variabile di shell o a un indice di vettore, l'operatore += può essere usato per accodare o aggiungere al precedente valore della variabile. Questo comprende argomenti a comandi incorporati come \fBdeclare\fP che accettano istruzioni di assegnamento (comandi \fIdi dichiarazione\fP). Quando += è applicato a una variabile per la quale l'attributo \fIinteger\fP è stato impostato, \fIvalore\fP è valutato come un'espressione aritmetica e aggiunto al valore corrente della variabile, che è a sua volta valutata. Quando += è applicato a una variabile vettore usando un assegnamento composto (si veda \fBVettori\fP più avanti), il valore della variabile non è rimosso (com'è quando si usa =), e nuovi valori sono aggiunti alla fine del vettore iniziando dal massimo indice di vettore aumentato di uno (per vettori indicizzati) o aggiunti come coppie supplementari di valore\-chiave in un vettore associativo. Quando applicato a una variabile valutata come stringa, \fIvalore\fP è espanso e accodato al valore della variabile. .PP A una variabile può essere assegnato l'attributo \fInameref\fP con l'opzione \fB\-n\fP dei comandi incorporati \fBdeclare\fP o \fBlocal\fP (si veda più avanti la descrizione di \fBdeclare\fP e \fBlocal\fP) per creare un \fInameref\fP, o un riferimento a un'altra variabile. Questo permette di manipolare le variabili indirettamente. Ogni volta che la variabile nameref è referenziata o ha avuto un assegnamento, l'operazione è eseguita effettivamente sulla variabile specificata dal valore della variabile nameref. Un nameref è usato comunemente all'interno di funzioni di shell per far riferimento a una variabile il cui nome è passato come argomento alla funzione. Per esempio, se un nome di variabile è passato alla funzione di shell come il suo primo argomento, eseguendo .sp .5 .RS .if t \f(CWdeclare -n ref=$1\fP .if n declare -n ref=$1 .RE .sp .5 all'interno della funzione crea una variabile nameref \fBref\fP il cui valore è il nome della variabile passato al primo argomento. Riferimenti e assegnamenti a \fBref\fP sono trattati come riferimenti e assegnamenti alla variabile il cui nome è stato passato come \fB$1\fP. Se la variabile di controllo in un ciclo \fBfor\fP ha l'attributo nameref, la lista di parole può essere una lista di variabili di shell, e verrà costituito un riferimento nome per ogni parola della lista, a turno, quando viene eseguito il ciclo. Alle variabili vettore non è possibile dare l'attributo \fB\-n\fP. Comunque, le variabili nameref possono far riferimento a variabili vettore e a variabili vettore indicizzate. I nameref possono essere annullati usando l'opzione \fB\-n\fP del comando incorporato \fBunset\fP. Altrimenti, se \fBunset\fP viene eseguito col nome di una variabile nameref come argomento, la variabile a cui fa riferimento la variabile nameref verrà annullata. .SS "Parametri posizionali" Un \fIparametro posizionale\fP è un parametro il cui nome è indicato da una o più cifre, diverse dalla singola cifra 0. I parametri posizionali sono assegnati dagli argomenti della shell quando questa è invocata, e possono essere riassegnati usando il comando incorporato \fBset\fP. I parametri posizionali non possono essere assegnati con istruzioni di assegnamento. I parametri posizionali sono temporaneamente sostituiti quando è eseguita una funzione di shell (si veda .SM \fBFUNZIONI\fP più avanti). .PP Quando si espande un parametro posizionale composto da più di una sola cifra, esso deve essere racchiuso tra parentesi graffe (si veda .SM \fBESPANSIONE\fP più avanti). .SS "Parametri speciali" La shell tratta molti parametri in modo speciale. Questi parametri possono solo essere referenziati; la loro modifica non è permessa. .PD 0 .TP \fB*\fP Si espande nei parametri posizionali, a partire dal primo. Quando l'espansione non è tra doppie virgolette, ogni parametro posizionale si espande in una parola separata. In contesti in cui è effettuata, queste parole sono soggette a successiva suddivisione in parole ed espansione di percorso. Quando l'espansione avviene tra doppie virgolette, si espande in una singola parola contenente il valore di ciascun parametro separato dagli altri dal primo carattere della variabile speciale .SM \fBIFS\fP. Cioè, "\fB$*\fP" è equivalente a "\fB$1\fP\fIc\fP\fB$2\fP\fIc\fP\fB...\fP", dove \fIc\fP è il primo carattere del valore della variabile .SM \fBIFS\fP. Se .SM \fBIFS\fP viene annullata, i parametri sono separati da spazi. Se .SM \fBIFS\fP è nulla, i parametri sono uniti senza alcun separatore. .TP \fB@\fP Si espande nei parametri posizionali, a partire dal primo. In contesti in cui è effettuata la suddivisone in parole, questo espande ogni parametro posizionale in una parola separata; se non è tra doppie virgolette, queste parole sono soggette a suddivisione in parole. In contesti in cui non è effettuata la suddivisione in parole. questo si espande una parola singola con ogni parametro posizionale separato da spazio. Quando l'espansione avviene tra doppie virgolette, ogni parametro si espande in una parola separata. Cioè, "\fB$@\fP" è equivalente a "\fB$1\fP" "\fB$2\fP" ... Se l'espansione fra doppie virgolette avviene all'interno di una parola, l'espansione del primo parametro è unita con la parte iniziale della parola originale, e l'espansione dell'ultimo parametro è unita con la parte finale della parola originale. Quando non vi è alcun parametro posizionale, "\fB$@\fP" e \fB$@\fP si espandono come stringa nulla (cioè, sono rimossi). .TP \fB#\fP Si espande nel numero di parametri posizionali espresso come numero decimale. .TP \fB?\fP Si espande nello stato di uscita della pipeline eseguita più recentemente senza rilasciare il controllo del terminale. .TP \fB\-\fP Si espande nei flag di opzione correnti come specificato in base all'invocazione, dal comando incorporato \fBset\fP, o in quelli impostati dalla shell stessa (come l'opzione \fB\-i\fP). .TP \fB$\fP Si espande nell'ID di processo della shell. In una subshell, si espande nell'ID di processo della shell corrente, non in quello della subshell. .TP \fB!\fP Si espande nell'ID di processo del job più recentemente messo in background, se eseguito come comando asincrono o usando il comando incorporato \fBbg\fP (si veda .SM \fBJOB CONTROL\fP più avanti). .TP \fB0\fP Si espande nel nome della shell o script di shell. Questo è impostato alla inizializzazione della shell. Se \fBbash\fP è chiamata con un file di comandi, \fB$0\fP è impostato al nome di quel file. Se \fBbash\fP è avviata con l'opzione \fB\-c\fP, allora \fB$0\fP è impostato al primo argomento dopo la stringa che deve essere eseguita, se presente. Altrimenti, è impostato al nome\-file usato per chiamare \fBbash\fP, come dato dall'argomento zero. .PD .SS "Variabili di shell" Le seguenti variabili sono impostate dalla shell: .PP .PD 0 .TP \fB_\fP All'avvio della shell, impostato al nome di percorso usato per invocare la shell o lo script di shell che è eseguito come passato nell'ambiente o nella lista di argomenti. Successivamente, si espande nell'ultimo argomento del precedente comando semplice eseguito in primo piano, dopo l'espansione. È anche impostato al nome completo usato per invocare ogni comando eseguito e messo nell'ambiente esportato verso quel comando. Mentre si controlla la posta, questo parametro contiene il nome del file del messaggio attualmente in esame. .TP \fBBASH\fP Si espande al nome\-file completo usato per chiamare questa istanza di \fBbash\fP. .TP \fBBASHOPTS\fP Una lista di opzioni di shell abilitate separate da un due punti. Ogni parola della lista è un argomento valido per l'opzione \fB\-s\fP del comando incorporato \fBshopt\fP (si veda .SM \fBCOMANDI INCORPORATI DELLA SHELL\fP più avanti). Le opzioni che appaiono in .SM \fBBASHOPTS\fP sono quelle contrassegnate come \fIon\fP da \fBshopt\fP. Se questa variabile è nell'ambiente quando \fBbash\fP viene avviato, ogni opzione di shell nella lista sarà abilitata prima della lettura di qualsiasi file di avvio. Questa variabile è di sola lettura. .TP \fBBASHPID\fP Espande all'ID del processo dell'attuale \fBbash\fP. In determinate circostanze, ciò differisce da \fB$$\fP, come nel caso di subshell che non richiedono che \fBbash\fP sia reinizializzato. Assegnamenti a .SM \fBBASHPID\fP non hanno alcun effetto. Se \fBBASHPID\fP viene annullata, perde le sue proprietà speciali, anche se è poi reimpostata. .TP \fBBASH_ALIASES\fP Una variabile vettore associativo i cui elementi corrispondono alla lista interna di alias come conservati dal comando incorporato \fBalias\fP. Gli elementi aggiunti a questo vettore appaiono nella lista degli alias; comunque, togliendo elementi al vettore attualmente gli alias non vengono rimossi dalla lista. Se \fBBASH_ALIASES\fP viene annullata, perde le sue proprietà speciali, anche se è poi reimpostata. .TP \fBBASH_ARGC\fP Una variabile vettore i cui valori sono il numero di parametri in ogni frame del corrente stack delle chiamate di esecuzione di \fBbash\fP. Il numero di parametri della subroutine corrente (funzione di shell o script eseguito con \&\fB.\fP o \fBsource\fP) è in cima allo stack. Quando viene eseguita una subroutine, il numero di parametri passati è messo in cima a .SM \fBBASH_ARGC\fP. La shell imposta .SM \fBBASH_ARGC\fP solo quando è in modalità estesa di debugging (si veda la descrizione dell'opzione \fBextdebug\fP per il comando incorporato \fBshopt\fP più avanti). Impostare \fBextdebug\fP dopo che la shell ha iniziato a eseguire uno script, o referenziare questa variabile quando \fBextdebug\fP non è impostato, può dar luogo a valori incongruenti. .TP \fBBASH_ARGV\fP Una variabile vettore contenente tutti i parametri nel corrente stack delle chiamate di esecuzione di \fBbash\fP. Il parametro finale dell'ultima chiamata di subroutine è in cima allo stack; il primo parametro della chiamata iniziale è in fondo. Quando una subroutine viene eseguita, i parametri forniti sono messi in cima a .SM \fBBASH_ARGV\fP. La shell imposta .SM \fBBASH_ARGV\fP solo quando è in modalità estesa di debugging (si veda la descrizione dell'opzione \fBextdebug\fP al comando incorporato \fBshopt\fP più avanti). Impostare \fBextdebug\fP dopo che la shell ha iniziato a eseguire uno script, o referenziare questa variabile quando \fBextdebug\fP non è impostato, può dar luogo a valori incongruenti. .TP \fBBASH_ARGV0\fP Quando referenziata, questa variabile espande nel nome della shell o script di shell (identico a \fB$0\fP; si veda sopra la descrizione del parametro speciale 0). L'assegnamento a \fBBASH_ARGV0\fP fa sì che il valore assegnato sia assegnato anche a \fB$0\fP. Se \fBBASH_ARGV0\fP viene annullata, perde le sue proprietà speciali, anche se è poi reimpostata. .TP \fBBASH_CMDS\fP Una variabile vettore associativo i cui elementi corrispondono alla tabella hash interna di comandi come memorizzati dal comando incorporato \fBhash\fP. Gli elementi aggiunti a questo vettore appaiono nella tabella hash; comunque, togliendo elementi al vettore i nomi dei comandi non saranno rimossi dalla tabella hash. Se \fBBASH_CMDS\fP viene annullata, perde le sue proprietà speciali, anche se è successivamente reimpostata. .TP \fBBASH_COMMAND\fP Il comando attualmente in esecuzione o in procinto di essere eseguito, a meno che la shell non stia eseguendo un comando come risultato di un'intercettazione di segnale (trap), nel qual caso è il comando in esecuzione al momento dell'intercettazione. Se \fBBASH_COMMAND\fP viene annullata, perde le sue proprietà speciali, anche se è poi reimpostata. .TP \fBBASH_EXECUTION_STRING\fP L'argomento dell'opzione \fB\-c\fP all'invocazione del comando. .TP \fBBASH_LINENO\fP Una variabile vettore i cui elementi sono i numeri di riga nei file di origine dove ogni elemento corrispondente di .SM \fBFUNCNAME\fP è stato chiamato. \fB${BASH_LINENO[\fP\fI$i\fP\fB]}\fP è il numero di riga nel file di origine (\fB${BASH_SOURCE[\fP\fI$i+1\fP\fB]}\fP) dove \fB${FUNCNAME[\fP\fI$i\fP\fB]}\fP è stato chiamato (o \fB${BASH_LINENO[\fP\fI$i\-1\fP\fB]}\fP se referenziato all'interno di un'altra funzione di shell). Usare .SM \fBLINENO\fP per ottenere il numero di riga corrente. .TP \fBBASH_LOADABLES_PATH\fP Un elenco di directory, separate da due punti, nelle quali la shell cerca i comandi incorporati caricabili dinamicamente specificati dal comando \fBenable\fP. .TP \fBBASH_REMATCH\fP Una variabile vettore i cui elementi sono assegnati dall'operatore binario \fB=~\fP del comando condizionale \fB[[\fP. L'elemento con indice 0 è la porzione della stringa che corrisponde all'intera espressione regolare. L'elemento con indice \fIn\fP è la porzione della stringa che corrisponde alla \fIn\fP\-sima sottoespressione fra parentesi. .TP \fBBASH_SOURCE\fP Una variabile vettore i cui elementi sono i nomi\-file dove sono definiti i nomi delle corrispondenti funzioni di shell nella variabile .SM \fBFUNCNAME\fP. La funzione di shell \fB${FUNCNAME[\fP\fI$i\fP\fB]}\fP è definita nel file \fB${BASH_SOURCE[\fP\fI$i\fP\fB]}\fP ed è chiamata da \fB${BASH_SOURCE[\fP\fI$i+1\fP\fB]}\fP. .TP \fBBASH_SUBSHELL\fP Incrementato di uno all'interno di ciascuna subshell o ambiente di subshell quando la shell inizia a essere eseguita in quell'ambiente. Il valore iniziale è 0. Se \fBBASH_SUBSHELL\fP viene annullata, perde le sue proprietà speciali, anche se è poi reimpostata. .TP \fBBASH_VERSINFO\fP Una variabile vettore in sola lettura i cui elementi danno informazioni sulla versione di quest'istanza di \fBbash\fP. I valori assegnati ai membri del vettore sono come segue: .sp .5 .RS .TP 24 \fBBASH_VERSINFO[\fP0\fB]\fP Il numero di versione principale (la \fIrelease\fP). .TP \fBBASH_VERSINFO[\fP1\fB]\fP Il numero di versione secondario (la \fIversione\fP). .TP \fBBASH_VERSINFO[\fP2\fB]\fP Il livello di aggiornamento tramite patch. .TP \fBBASH_VERSINFO[\fP3\fB]\fP Il numero di compilazione. .TP \fBBASH_VERSINFO[\fP4\fB]\fP Lo stato della release (ad es., \fIbeta1\fP). .TP \fBBASH_VERSINFO[\fP5\fB]\fP Il valore di .SM \fBMACHTYPE\fP. .RE .TP \fBBASH_VERSION\fP Si espande in una stringa che descrive la versione di questa istanza di \fBbash\fP. .TP \fBCOMP_CWORD\fP Un indice in \fB${COMP_WORDS}\fP della parola contenente la posizione corrente del cursore. Questa variabile è disponibile solo nelle funzioni di shell invocate dalle risorse di completamento programmabile (si veda \fBCompletamento programmabile\fP più avanti). .TP \fBCOMP_KEY\fP Il tasto (o il tasto finale di una sequenza) usato per invocare la funzione di completamento corrente. .TP \fBCOMP_LINE\fP La riga di comando corrente. Questa variabile è disponibile solo nelle funzioni di shell e nei comandi esterni invocati dai servizi di completamento programmabile (si veda \fBCompletamento programmabile\fP più avanti). .TP \fBCOMP_POINT\fP L'indice della posizione corrente del cursore relativa all'inizio del comando corrente. Se la posizione corrente del cursore è alla fine del comando corrente, il valore di questa variabile è uguale a \fB${#COMP_LINE}\fP. Questa variabile è disponibile solo nelle funzioni di shell e comandi esterni invocati dai servizi di completamento programmabile (si veda \fBCompletamento programmabile\fP più avanti). .TP \fBCOMP_TYPE\fP Impostata a un valore intero corrispondente al tipo di completamento tentato che ha causato la chiamata di una funzione di completamento: \fITAB\fP, per il completamento normale, \fI?\fP, per l'elenco dei completamenti dopo tabulazioni successive, \fI!\fP, per l'elenco delle alternative di completamento di una parte di parola, \fI@\fP, per elencare i completamenti se la parola non ha subito modifiche, o \fI%\fP, per il menù del completamento. Questa variabile è disponibile solo nelle funzioni di shell e nei comandi esterni invocati dai servizi di completamento programmabile (si veda \fBCompletamento programmabile\fP più avanti). .TP \fBCOMP_WORDBREAKS\fP L'insieme dei caratteri che la libreria \fBreadline\fP tratta come separatori di parola nell'effettuare il completamento di parola. Se .SM \fBCOMP_WORDBREAKS\fP viene annullata, perde le sue proprietà speciali, anche se è poi reimpostata. .TP \fBCOMP_WORDS\fP Una variabile vettore (si veda \fBVettori\fP più avanti) che è composta dalle singole parole nella riga di comando corrente. La riga è divisa in parole come \fBreadline\fP la dividerebbe usando .SM \fBCOMP_WORDBREAKS\fP come descritto precedentemente. Questa variabile è disponibile solo nelle funzioni di shell e comandi esterni invocati dai servizi di completamento programmabile (si veda \fBCompletamento programmabile\fP più avanti). .TP \fBCOPROC\fP Una variabile vettore (si veda \fBVettori\fP più avanti) creata per contenere i descrittori di file di uscita e di entrata di un coprocesso senza nome (si veda \fBCoprocessi\fP più avanti). .TP \fBDIRSTACK\fP Una variabile vettore (si veda \fBVettori\fP più avanti) che contiene il contenuto corrente dello stack delle directory. Le directory appaiono nello stack nell'ordine in cui sono mostrate dal comando incorporato \fBdirs\fP. L'assegnamento agli elementi di questa variabile vettore può essere usato per modificare le directory già nello stack, ma i comandi incorporati \fBpushd\fP e \fBpopd\fP devono essere usati per aggiungere e rimuovere directory. L'assegnamento a questa variabile non cambia la directory corrente. Se .SM \fBDIRSTACK\fP viene annullata, perde le sue proprietà speciali, anche se è poi reimpostata. .TP \fBEPOCHREALTIME\fP Ogni volta che questo parametro è referenziato, espande al numero di secondi a partire dall'epoca Unix (si veda \fItime\fP(3)) come valore in virgola mobile con grado di precisione di microsecondi. Gli assegnamenti a .SM \fBEPOCHREALTIME\fP vengono ignorati. Se .SM \fBEPOCHREALTIME\fP viene annullata, perde le sue proprietà speciali, anche se è poi reimpostata. .TP \fBEPOCHSECONDS\fP Ogni volta che questo parametro è referenziato, espande a un numero di secondi trascorsi dall'epoca Unix (si veda \fItime\fP(3)). Assegnamenti a .SM \fBEPOCHSECONDS\fP vengono ignorati. Se .SM \fBEPOCHSECONDS\fP è annullata, perde le sue proprietà speciali, anche se è poi reimpostata. .TP \fBEUID\fP Espande all'ID\-utente effettivo dell'utente corrente, inizializzata all'avvio della shell. Questa variabile è in sola lettura. .TP \fBFUNCNAME\fP Una variabile vettore contenente i nomi di tutte le funzioni di shell attualmente nello stack delle chiamate di esecuzione. L'elemento con indice 0 è il nome della funzione di shell attualmente in esecuzione. L'elemento più in basso di tutti (quello con l'indice più alto) è .if t \f(CW"main"\fP. .if n "main". Questa variabile esiste solo quando è in esecuzione una funzione di shell. Assegnamenti a .SM \fBFUNCNAME\fP non hanno alcun effetto. Se .SM \fBFUNCNAME\fP viene annullata, perde le sue proprietà speciali, anche se è poi reimpostata. .if t .sp 0.5 .if n .sp 1 Questa variabile può essere usata con \fBBASH_LINENO\fP e \fBBASH_SOURCE\fP. Ogni elemento di \fBFUNCNAME\fP ha elementi corrispondenti in \fBBASH_LINENO\fP e \fBBASH_SOURCE\fP per descrivere lo stack delle chiamate. Per esempio, \fB${FUNCNAME[\fP\fI$i\fP\fB]}\fP è stato chiamato dal file \fB${BASH_SOURCE[\fP\fI$i+1\fP\fB]}\fP al numero di riga \fB${BASH_LINENO[\fP\fI$i\fP\fB]}\fP. Il comando incorporato \fBcaller\fP visualizza lo stack corrente delle chiamate usando questa informazione. .TP \fBGROUPS\fP Una variabile vettore contenente l'elenco dei gruppi dei quali è membro l'utente corrente. Assegnamenti a .SM \fBGROUPS\fP non hanno alcun effetto. Se .SM \fBGROUPS\fP viene annullata, perde le sue proprietà speciali, anche se è poi reimpostata. .TP \fBHISTCMD\fP Il numero di cronologia, o indice nella lista della cronologia, del comando corrente. Gi assegnamenti a .SM \fBHISTCMD\fP vengono ignorati. Se .SM \fBHISTCMD\fP viene annullata, perde le sue proprietà speciali, anche se è poi reimpostata. .TP \fBHOSTNAME\fP Automaticamente impostata al nome dell'host corrente. .TP \fBHOSTTYPE\fP Automaticamente impostata a una stringa che univocamente descrive il tipo di macchina su cui \fBbash\fP è in esecuzione. Il valore predefinito è dipendente dal sistema. .TP \fBLINENO\fP Ogni volta che questo parametro è referenziato, la shell gli assegna un numero decimale che rappresenta il numero di sequenza della riga corrente (partendo da 1) all'interno di uno script o funzione. Quando non in uno script o funzione, non è garantito che il valore restituito sia significativo. Se .SM \fBLINENO\fP viene annullata, perde le sue proprietà speciali, anche se è poi reimpostata. .TP \fBMACHTYPE\fP Automaticamente impostata a una stringa che descrive completamente il tipo di sistema sul quale \fBbash\fP è in esecuzione, nel formato standard GNU \fIcpu\-company\-system\fP. Il valore predefinito è dipendente dal sistema. .TP \fBMAPFILE\fP Una variabile vettore (si veda \fBVettori\fP più avanti) creata per contenere il testo letto dal comando incorporato \fBmapfile\fP quando non viene fornito un nome di variabile. .TP \fBOLDPWD\fP La precedente directory di lavoro come impostata dal comando \fBcd\fP. .TP \fBOPTARG\fP Il valore dell'ultimo argomento opzione elaborato dal comando incorporato \fBgetopts\fP (si veda .SM \fBNCORPORATI DELLA SHELL\fP più avanti). .TP \fBOPTIND\fP L'indice del prossimo argomento che dev'essere elaborato dal comando incorporato \fBgetopts\fP (si veda .SM \fBCOMANDI INCORPORATI DELLA SHELL\fP più avanti). .TP \fBOSTYPE\fP Automaticamente impostata a una stringa che descrive il sistema operativo su cui \fBbash\fP è in esecuzione. Il valore predefinito è dipendente dal sistema. .TP \fBPIPESTATUS\fP Una variabile vettore (si veda \fBVettori\fP più avanti) contenente un elenco di valori di stato d'uscita dai processi nelle pipeline eseguite più recentemente in primo piano [cioè senza rilasciare il controllo del terminale] (può contenere anche un solo comando). .TP \fBPPID\fP L'ID di processo del genitore della shell. Questa variabile è in sola lettura. .TP \fBPWD\fP La directory di lavoro corrente come impostata dal comando \fBcd\fP. .TP \fBRANDOM\fP Ogni volta che questo parametro è referenziato, si espande a un numero intero casuale fra 0 e 32767. Assegnando un valore a .SM \fBRANDOM\fP viene inizializzata (seed) la sequenza di numeri casuali. Se .SM \fBRANDOM\fP viene annullata, perde le sue proprietà speciali, anche se è poi reimpostata. .TP \fBREADLINE_ARGUMENT\fP Qualsiasi argomento numerico che è stato dato al comando readline definito usando .if t \f(CWbind -x\fP .if n "bind -x" (si veda .SM \fBCOMANDI INCORPORATI DELLA SHELL\fP più avanti) quando è stato richiamato. .TP \fBREADLINE_LINE\fP Il contenuto del buffer di riga \fBreadline\fP per l'uso con .if t \f(CWbind -x\fP .if n "bind -x" (si veda .SM \fBCOMANDI INCORPORATI DELLA SHELL\fP più avanti). .TP \fBREADLINE_MARK\fP La posizione della marcatura (punto di inserzione) nel buffer di riga \fBreadline\fP per l'uso con .if t \f(CWbind -x\fP .if n "bind -x" (si veda .SM \fBCOMANDI INCORPORATI DELLA SHELL\fP più avanti). I caratteri tra il punto d'inserzione e la marcatura vengono spesso chiamati cumulativamente \fIregione\fP. .TP \fBREADLINE_POINT\fP La posizione del punto di inserzione nel buffer di riga \fBreadline\fP per l'uso con .if t \f(CWbind -x\fP .if n "bind -x" (si veda .SM \fBCOMANDI INCORPORATI DELLA SHELL\fP più avanti). .TP \fBREPLY\fP Impostata alla riga di input letta dal comando incorporato \fBread\fP quando nessun argomento è specificato. .TP \fBSECONDS\fP Ogni volta che questo parametro è referenziato, viene restituito il numero di secondi trascorsi dall'avvio della shell. Se un valore è assegnato a .SM \fBSECONDS\fP, il valore restituito in base ai riferimenti successivi è il numero di secondi trascorsi dall'assegnamento più il valore assegnato. Il numero di secondi all'invocazione della shell e il tempo corrente sono sempre determinati da una richiesta all'orologio di sistema. Se .SM \fBSECONDS\fP viene annullata, perde le sue proprietà speciali, anche se è poi reimpostata. .TP \fBSHELLOPTS\fP Una lista, separata da due punti, di opzioni di shell abilitate. Ogni parola nella lista è un argomento valido per l'opzione \fB\-o\fP al comando incorporato \fBset\fP (si veda .SM \fBCOMANDI INCORPORATI DELLA SHELL\fP più avanti). Le opzioni che appaiono in .SM \fBSHELLOPTS\fP sono quelle indicate come \fIon\fP da \fBset \-o\fP. Se questa variabile è nell'ambiente quando \fBbash\fP viene avviata, ogni opzione di shell nella lista viene abilitata prima di leggere un qualsiasi file di avvio. Questa variabile è in sola lettura. .TP \fBSHLVL\fP È incrementata di uno ogni volta che una istanza di \fBbash\fP viene avviata. .TP \fBSRANDOM\fP Questa variabile viene espansa con un numero pseudo casuale di 32 bit ogni volta che viene referenziata. Su sistemi che supportano \f(CW/dev/urandom\fP o \fIarc4random\fP il generatore di numeri casuali non è lineare, quindi ogni numero restituito non ha relazione con i precedenti. Il generatore di numeri casuali non accetta un seme, quindi assegnamenti a questa variabile non hanno effetto. Se .SM \fBSRANDOM\fP viene annullata, perde le sue proprietà speciali anche se viene successivamente reimpostata. .TP \fBUID\fP Si espande all'ID\-utente dell'utente corrente, inizializzato all'avvio della shell. Questa variabile è in sola lettura. .PD .PP Le seguenti variabili sono usate dalla shell. In alcuni casi, \fBbash\fP assegna un valore predefinito a una variabile; questi casi sono elencati più avanti. .PP .PD 0 .TP \fBBASH_COMPAT\fP Il valore è usato per impostare il livello di compatibilità della shell. Si veda .SM \fBMODALITÀ COMPATIBILE DELLA SHELL\fP per una descrizione dei diversi livelli di compatibilità e dei loro effetti. Il valore può essere un numero decimale (p.es., 4.2) o intero (p.es., 42) corrispondente al livello di compatibilità desiderato. Se \fBBASH_COMPAT\fP non è impostato o è impostato alla stringa vuota, il livello di compatibilità è impostato a quello predefinito per la versione corrente. Se \fBBASH_COMPAT\fP è impostato a un valore che non è uno dei livelli di compatibilità validi, la shell stampa un messaggio di errore e imposta il livello di compatibilità a quello predefinito per la versione corrente. I valori validi corrispondono ai livelli di compatibilità descritti più avanti in .SM \fBMODALITÀ COMPATIBILE DELLA SHELL\fP. Per esempio, 4.2 e 42 sono valori validi che corrispondono all'opzione \fBshopt\fP \fBcompat42\fP e impostano il livello di compatibilità a 42. La versione corrente è anch'esso un valore valido. .TP \fBBASH_ENV\fP Se questo parametro è impostato quando \fBbash\fP sta eseguendo uno script di shell, il suo valore è interpretato come un nome\-file contenente comandi per inizializzare la shell, come in \fI~/.bashrc\fP. Il valore di .SM \fBBASH_ENV\fP è soggetto a espansione di parametro, sostituzione di comando ed espansione aritmetica prima di essere interpretato come un nome\-file. .SM \fBPATH\fP non è usato per cercare il nome\-file risultante. .TP \fBBASH_XTRACEFD\fP Se impostata a un valore intero corrispondente a un descrittore di file valido, \fBbash\fP scriverà l'output della traccia generata quando .if t \f(CWset -x\fP .if n \fIset -x\fP è abilitato a quel descrittore di file. Il descrittore di file viene chiuso quando .SM \fBBASH_XTRACEFD\fP non è impostata o le viene assegnato un nuovo valore. Annullando .SM \fBBASH_XTRACEFD\fP o assegnandole una stringa vuota l'output della traccia verrà inviato allo standard error. Da notare che impostando .SM \fBBASH_XTRACEFD\fP a 2 (il descrittore di file dello standard error) e, successivamente, azzerandola il risultato sarà la chiusura dello standard error. .TP \fBCDPATH\fP Il percorso di ricerca per il comando \fBcd\fP. Questo è un elenco di directory, separate da due punti, nelle quali la shell cerca le directory di destinazione specificate dal comando \fBcd\fP. Un valore di esempio è .if t \f(CW".:~:/usr"\fP. .if n ".:~:/usr". .TP \fBCHILD_MAX\fP Imposta il numero di valori dello stato di uscita delle shell figlie da tenere in memoria. Bash non permette che questo valore scenda al di sotto di un minimo imposto da POSIX, e c'è un valore massimo (attualmente 8192) che non può essere superato. Il valore minimo è dipendente dal sistema. .TP \fBCOLUMNS\fP Usata dal comando composto \fBselect\fP per determinare il numero di colonne del terminale nella stampa delle liste di selezione. Automaticamente impostata se l'opzione \fBcheckwinsize\fP è abilitata o è in una shell interattiva al ricevimento di un segnale .SM \fBSIGWINCH\fP. .TP \fBCOMPREPLY\fP Una variabile vettore dalla quale \fBbash\fP legge i possibili completamenti generati da una funzione di shell invocata dal servizio di completamento programmabile (si veda \fBCompletamento programmabile\fP più avanti). Ogni elemento di vettore contiene un completamento possibile. .TP \fBEMACS\fP Se \fBbash\fP trova questa variabile d'ambiente alla partenza della shell col valore .if t \f(CWt\fP, .if n "t", presume che la shell sia in esecuzione in un buffer di shell Emacs e disabilita la modifica della riga. .TP \fBENV\fP È espansa ed eseguita similarmente a .SM \fBBASH_ENV\fP (si veda \fBINVOCAZIONE\fP sopra) quando una shell interattiva viene invocata in \fImodalità posix\fP. .TP \fBEXECIGNORE\fP Una lista separata da virgole di modelli di shell (si veda \fBModelli di ricerca\fP) che definisce l'elenco dei nomi di file da ignorare durante la ricerca dei comandi che usa \fBPATH\fP. I file per i quali il percorso completo corrisponde ad uno di questi modelli non sono considerati file eseguibili per lo scopo di completare il comando o per l'esecuzione di comandi tramite ricerca in \fBPATH\fP. Questo non cambia il comportamento dei comandi \fB[\fP, \fBtest\fP, e \fB[[\fP. I percorsi completi nella tabella hash dei comandi non sono soggetti a \fBEXECIGNORE\fP. Usare questa variabile per ignorare file di librerie condivise che hanno il bit eseguibile attivo, ma non sono file eseguibili. La corrispondenza al modello fa uso dell'opzione di shell \fBextglob\fP. .TP \fBFCEDIT\fP L'editor predefinito per il comando incorporato \fBfc\fP. .TP \fBFIGNORE\fP Una lista di suffissi, separati da due punti, da ignorare quando si effettua il completamento del nome\-file (si veda .SM \fBREADLINE\fP più avanti). Un nome\-file il cui suffisso corrisponde a una delle voci in .SM \fBFIGNORE\fP è escluso dalla lista dei nomi\-file individuati. Un valore di esempio è .if t \f(CW".o:~"\fP. .if n ".o:~". .TP \fBFUNCNEST\fP Se impostato a un valore numerico maggiore di 0, definisce un livello massimo di nidificazione per una funzione. Invocazioni di funzione eccedenti questo livello provocheranno l'interruzione del comando corrente. .TP \fBGLOBIGNORE\fP Una lista di modelli, separati da due punti, che definiscono l'insieme dei nomi di file che l'espansione del nome di percorso deve ignorare. Se un nome di file individuato da un modello di espansione del percorso corrisponde anche a uno dei modelli in .SM \fBGLOBIGNORE\fP viene rimosso dalla lista dei nomi da individuare. .TP \fBHISTCONTROL\fP Una lista di valori, separati da due punti, che controllano come i comandi vengono salvati nell'elenco della cronologia. Se la lista di valori include \fIignorespace\fP, le righe che iniziano con un carattere di \fBspazio\fP non vengono salvate nell'elenco della cronologia. Un valore di \fIignoredups\fP fa sì che non venga salvata ogni riga uguale all'elemento precedente della cronologia. Un valore di \fIignoreboth\fP è la combinazione di \fIignorespace\fP e \fIignoredups\fP. Un valore di \fIerasedups\fP fa sì che tutte le righe uguali alla riga corrente vengano rimosse dall'elenco della cronologia prima che la riga venga salvata. Qualsiasi valore che non è nella lista di cui sopra è ignorato. Se .SM \fBHISTCONTROL\fP non è impostato o non include un valore valido, tutte le righe lette dall'analizzatore sintattico della shell sono salvate nell'elenco della cronologia, a meno che non sia stato specificato .SM \fBHISTIGNORE\fP. La seconda riga e le successive di un comando composto multiriga non vengono controllate, e sono aggiunte alla cronologia indipendentemente dal valore di .SM \fBHISTCONTROL\fP. .TP \fBHISTFILE\fP Il nome del file nel quale è salvata la cronologia dei comandi (si veda .SM \fBCRONOLOGIA\fP più avanti). Il valore predefinito è \fI~/.bash_history\fP. Se è annullato la cronologia dei comandi non è salvata al termine di una shell. .TP \fBHISTFILESIZE\fP Il numero massimo di righe contenute nel file della cronologia. Quando a questa variabile è assegnato un valore, il file della cronologia è accorciato, se necessario, per contenere non più di quel numero di righe rimuovendo le voci più vecchie. Il file della cronologia è inoltre troncato a questa dimensione dopo la scrittura al termine di una shell. Se il valore è 0, il file della cronologia è troncato alla dimensione zero. Valori non numerici e valori numerici minori di zero inibiscono il troncamento. La shell imposta il valore predefinito al valore di HISTSIZE dopo la lettura di un file di avvio. .TP \fBHISTIGNORE\fP Una lista di modelli separati da due punti usata per decidere quali righe di comando devono essere salvate nell'elenco della cronologia. Ogni modello comincia all'inizio della riga e deve corrispondere alla riga completa (nessun `\fB*\fP' implicito è aggiunto). Ogni modello è confrontato con la riga dopo che i controlli specificati da .SM \fBHISTCONTROL\fP sono stati applicati. In aggiunta ai normali modelli di shell che confrontano caratteri, `\fB&\fP' designa la linea precedente della cronologia. `\fB&\fP' può essere protetto usando una barra inversa; la barra inversa è rimossa prima di eseguire un confronto. La seconda riga e le successive di un comando composto multiriga non vengono controllate, e sono aggiunte alla cronologia indipendentemente dal valore di .SM \fBHISTIGNORE\fP. Il modello di ricerca rispetta l'impostazione dell'opzione di shell \fBextglob\fP . .TP \fBHISTSIZE\fP Il numero di comandi da tenere in memoria nella cronologia dei comandi (si veda .SM \fBHISTORY\fP più avanti). Se il valore è 0, i comandi non vengono salvati nell'elenco della cronologia. Con valori numerici minori di zero ogni comando viene salvato nell'elenco della cronologia (non ci sono limiti). La shell imposta il valore predefinito a 500 dopo aver letto i file d'inizializzazione. .TP \fBHISTTIMEFORMAT\fP Se questa variabile è impostata e non nulla, il suo valore è usato come stringa di formato per \fIstrftime\fP(3) per stampare la marcatura oraria associata a ogni voce della cronologia mostrata dal comando incorporato \fBhistory\fP. Se questa variabile è impostata, data e ora verranno scritte nel file della cronologia in modo da essere disponibili anche in successive sessioni della shell. Per distinguere la marcatura oraria dalle altre righe della cronologia viene usato il carattere di commento. .TP \fBHOME\fP La home directory dell'utente corrente; l'argomento predefinito per il comando incorporato \fBcd\fP. Il valore di questa variabile è anche usata quando si effettua l'espansione della tilde. .TP \fBHOSTFILE\fP Contiene il nome di un file nello stesso formato di .FN /etc/hosts che dovrà essere letto quando la shell ha bisogno di completare un nome di host. La lista dei possibili completamenti di nome di host può essere cambiata mentre la shell è in esecuzione; alla prossima occasione in cui si tenta il completamento del nome di host dopo che è cambiato il valore, \fBbash\fP aggiunge il contenuto del nuovo file alla lista esistente. Se .SM \fBHOSTFILE\fP è impostato ma non ha alcun valore, o non contiene il nome di un file leggibile, \fBbash\fP tenta di leggere .FN /etc/hosts per ottenere la lista dei possibili completamenti del nome di host. Quando .SM \fBHOSTFILE\fP viene annullata, la lista dei nomi di host viene pure annullata. .TP \fBIFS\fP L'\fIInternal Field Separator\fP (separatore di campo interno) è usato per la suddivisione in parole dopo l'espansione e per dividere le righe in parole quando si esegue il comando incorporato \fBread\fP. Il valore predefinito è \*(lq\*(rq. .TP \fBIGNOREEOF\fP Controlla l'azione della shell al ricevimento di un carattere .SM \fBEOF\fP come unico contenuto di una riga di input. Se impostato, il valore è il numero di caratteri .SM \fBEOF\fP consecutivi da battere come primo carattere su una riga di input prima che \fBbash\fP esca. Se la variabile esiste ma non ha un valore numerico, o non ha alcun valore, il valore predefinito è 10. Se non esiste, .SM \fBEOF\fP indica la fine dell'input per la shell. .TP \fBINPUTRC\fP Il nome\-file per il file di avvio di \fBreadline\fP che prevale sul valore predefinito che è .FN ~/.inputrc (si veda .SM \fBREADLINE\fP più avanti). .TP \fBINSIDE_EMACS\fP Se questa variabile appare nell'ambiente quando la shell viene avviata, \fBbash\fP assume che sia in esecuzione dentro un buffer shell Emacs e potrebbe disabilitare l'editor della riga, a seconda dal valore di \fBTERM\fP. .TP \fBLANG\fP Usata per determinare la categoria di localizzazione per qualsiasi categoria non specificatamente indicata da una delle variabili che iniziano con \fBLC_\fP. .TP \fBLC_ALL\fP Questa variabile prevale sul valore di .SM \fBLANG\fP e su qualsiasi altra variabile \fBLC_\fP che specifichi una categoria di localizzazione. .TP \fBLC_COLLATE\fP Questa variabile determina l'ordine di collazione usato quando vengono ordinati i risultati dell'espansione di nome di percorso, e determina il comportamento di espressioni di intervallo, classi di equivalenza e sequenze di ordinamento all'interno dell'espansione di nome di percorso e della corrispondenza tra stringhe. .TP \fBLC_CTYPE\fP Questa variabile determina l'interpretazione di caratteri e il comportamento di classi di caratteri all'interno dell'espansione di nome di percorso e della corrispondenza tra stringhe. .TP \fBLC_MESSAGES\fP Questa variabile determina la localizzazione usata per tradurre stringhe tra doppie virgolette precedute da un \fB$\fP. .TP \fBLC_NUMERIC\fP Questa variabile determina la categoria di localizzazione usata per la formattazione dei numeri. .TP \fBLC_TIME\fP Questa variabile determina la categoria di localizzazione usata per la formattazione di data e ora. .TP \fBLINES\fP Usato dal comando composto \fBselect\fP per determinare il numero di linee del terminale nella stampa delle liste di selezione. Automaticamente impostata se l'opzione \fBcheckwinsize\fP è abilitata o in una shell interattiva al ricevimento di un segnale .SM \fBSIGWINCH\fP. .TP \fBMAIL\fP Se questo parametro è impostato a un nome di file o di directory e la variabile .SM \fBMAILPATH\fP non è impostata, \fBbash\fP informa l'utente dell'arrivo di posta nel file specificato o nella directory del formato Maildir. .TP \fBMAILCHECK\fP Specifica la frequenza (in secondi) con cui \fBbash\fP controlla la posta. Il valore predefinito è 60 secondi. Quando è il momento di controllare la posta, la shell lo fa prima di mostrare il prompt primario. Se questa variabile non è impostata o è impostata a un valore che non sia un numero maggiore o uguale a zero, la shell disabilita il controllo della posta. .TP \fBMAILPATH\fP Una lista di nomi\-file separati da due punti, da usare per il controllo della posta. Il messaggio che deve essere stampato all'arrivo dei messaggi in un particolare file può essere specificato separando il nome\-file dal messaggio con un `?'. Quando viene usato nel testo del messaggio \fB$_\fP è espanso al nome del file di posta corrente. Per esempio: .RS .PP \fBMAILPATH\fP=\(aq/var/mail/bfox?"You have mail":~/shell\-mail?"$_ has mail!"\(aq .PP \fBBash\fP può essere configurato per fornire un valore predefinito per questa variabile (non c'è nessun valore predefinito), ma il posizionamento dei file di posta degli utenti utilizzato è dipendente dal sistema (per esempio, /var/mail/\fB$USER\fP). .RE .TP \fBOPTERR\fP Se impostato al valore 1, \fBbash\fP mostra i messaggi di errore generati dal comando incorporato \fBgetopts\fP (si veda .SM \fBCOMANDI INCORPORATI DELLA SHELL\fP più avanti). .SM \fBOPTERR\fP è inizializzato ad 1 ogni volta che viene invocata la shell o viene eseguito uno script di shell. .TP \fBPATH\fP Il percorso di ricerca dei comandi. È un elenco di directory separate da due punti, nelle quali la shell cerca i comandi (si veda .SM \fBESECUZIONE DEI COMANDI\fP più avanti). Un nome di directory di lunghezza zero (nulla) nel valore di .SM \fBPATH\fP indica la directory corrente. Un nome di directory nullo può apparire come una serie di due punti adiacenti, o come due punti all'inizio o alla fine. Il percorso predefinito è dipendente dal sistema ed è impostato dall'amministratore che installa \fBbash\fP. Un valore frequente è .na .if t \f(CW/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin\fP. .if n ``/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin''. .ad .TP \fBPOSIXLY_CORRECT\fP Se questa variabile è presente nell'ambiente quando viene avviata \fBbash\fP, la shell entra in \fImodalità posix\fP prima di leggere i file di avvio, come se l'opzione di invocazione \fB\-\-posix\fP fosse stata specificata. Se è impostata mentre la shell è in esecuzione, \fBbash\fP abilita la \fImodalità posix\fP, come se il comando .if t \f(CWset -o posix\fP .if n \fIset -o posix\fP fosse stato eseguito. Quando la shell entra in \fImodalità posix\fP, imposta questa variabile se non fosse già impostata. .TP \fBPROMPT_COMMAND\fP Se questa variabile è impostata ed è un vettore, il valore di ogni elemento impostato viene eseguito come comando prima di stampare un prompt principale. Se è impostata, ma non è un vettore, il suo valore è usato come comando da eseguire. .TP \fBPROMPT_DIRTRIM\fP Se impostata a un numero maggiore di zero, il valore è usato come il numero di componenti della directory finale da conservare quando si espandono i caratteri protetti della stringa di prompt \fB\ew\fP e \fB\eW\fP (si veda .SM \fBPROMPTING\fP più avanti). I caratteri rimossi sono sostituiti da puntini di sospensiones. .TP \fBPS0\fP Il valore di questo parametro è espanso (si veda .SM \fBSTRINGHE DI PROMPT\fP più avanti) e visualizzato dalle shell interattive dopo aver letto un comando e prima che il comando venga eseguito. .TP \fBPS1\fP Il valore di questo parametro è espanso (si veda .SM \fBSTRINGHE DI PROMPT\fP più avanti) e usato come stringa del prompt primario. Il valore predefinito è \*(lq\fB\es\-\ev\e$\fP\*(rq. .TP \fBPS2\fP Il valore di questo parametro è espanso allo stesso modo di .SM \fBPS1\fP ed è usato come stringa di prompt secondario. Il valore predefinito è \*(lq\fB> \fP\*(rq. .TP \fBPS3\fP Il valore di questo parametro è usato come prompt per il comando \fIselect\fP (si veda .SM \fBGRAMMATICA DELLA SHELL\fP sopra). .TP \fBPS4\fP Il valore di questo parametro è espanso allo stesso modo di .SM \fBPS1\fP ed il valore è stampato prima di ogni comando che \fBbash\fP mostra durante un trace di esecuzione. Il primo carattere del valore espanso di .SM \fBPS4\fP è replicato tante volte, quanto necessario, per indicare livelli multipli di indirezione. Il valore predefinito è \*(lq\fB+\fP\*(rq. .TP \fBSHELL\fP Questa variabile si espande al percorso completo della shell. Se non è impostata quando la shell viene avviata, \fBbash\fP le assegna il percorso completo della shell di login dell'utente corrente. .TP \fBTIMEFORMAT\fP Il valore di questo parametro è usato come stringa di formato per specificare come dovrà essere mostrata l'informazione su data e ora per pipeline aventi come prefisso la parola riservata \fBtime\fP. Il carattere \fB%\fP introduce una sequenza di formattazione che è espansa a un valore di data e ora o ad altre informazioni. Le sequenze di formattazione e il loro significato sono i seguenti; le parentesi quadre denotano parti opzionali. .sp .5 .RS .PD 0 .TP 10 \fB%%\fP Una \fB%\fP letterale. .TP \fB%[\fP\fIp\fP\fB][l]R\fP Il tempo trascorso in secondi. .TP \fB%[\fP\fIp\fP\fB][l]U\fP Il numero di secondi di utilizzo della CPU in modalità utente. .TP \fB%[\fP\fIp\fP\fB][l]S\fP Il numero di secondi di utilizzo della CPU in modalità sistema. .TP \fB%P\fP La percentuale di utilizzo della CPU, calcolata come (%U + %S) / %R. .PD .RE .IP La parte opzionale \fIp\fP è una cifra che specifica la \fIprecisione\fP, il numero di cifre frazionali dopo il separatore decimale. Un valore pari a 0 fa sì che nessun separatore decimale o frazione venga inserito nell'output. Possono essere specificate al massimo tre posizioni dopo il separatore decimale; valori di \fIp\fP maggiori di 3 sono cambiati in 3. Se \fIp\fP non è specificato è utilizzato il valore 3. .IP La parte opzionale \fBl\fP specifica un formato più lungo, inclusi i minuti, nella forma \fIMM\fPm\fISS\fP.\fIFF\fPs. Il valore di \fIp\fP determina se la frazione è inclusa o meno. .IP Se questa variabile non è impostata, \fBbash\fP agisce come se avesse il valore \fB$\(aq\enreal\et%3lR\enuser\et%3lU\ensys\et%3lS\(aq\fP. Se il valore è nullo, non viene mostrata alcuna informazione di tempo. Una newline finale è aggiunta quando la stringa di formato è visualizzata. .PD 0 .TP \fBTMOUT\fP Se impostata a un valore maggiore di zero, .SM \fBTMOUT\fP è trattata come il tempo limite (timeout) predefinito per il comando incorporato \fBread\fP. Il comando \fBselect\fP viene terminato se non riceve input dopo .SM \fBTMOUT\fP secondi quando l'input proviene da un terminale. In una shell interattiva il valore è interpretato come il numero di secondi di attesa per l'input dopo l'emissione del prompt primario. \fBBash\fP termina dopo aver aspettato per quel numero di secondi se non arriva una riga completa di input. .TP \fBTMPDIR\fP Se impostata, \fBbash\fP usa il suo valore come nome della directory nella quale \fBbash\fP crea file temporanei a uso della shell. .TP \fBauto_resume\fP Questa variabile controlla il modo con cui la shell interagisce con l'utente e con il job\-control. Se questa variabile è impostata, dei comandi semplici composti da una sola parola senza ridirezioni sono considerati come candidati per la ripresa di un job in esecuzione che sia stato sospeso. Non è possibile alcuna ambiguità; se vi è più di un job che comincia con la stringa digitata, è scelto il job su cui si è effettuato l'accesso più recentemente. Il \fInome\fP di un job sospeso, in questo contesto, è la riga di comando usata per avviarlo. Se impostata al valore \fIexact\fP, la stringa fornita deve essere esattamente uguale al nome di un job fermo; se impostata a \fIsubstring\fP, la stringa fornita deve combaciare con una sottostringa del nome di un job sospeso. Il valore \fIsubstring\fP fornisce funzionalità analoghe all'identificatore del job \fB%?\fP (si veda .SM \fBJOB CONTROL\fP più avanti). Se impostata a qualsiasi altro valore, la stringa fornita deve essere un prefisso del nome di un job sospeso; questo consente funzionalità analoghe all'identificatore di job \fB%\fP\fIstring\fP. .TP \fBhistchars\fP Sono i due o tre caratteri che controllano l'espansione della cronologia e la suddivisione in token (si veda .SM \fBESPANSIONE DELLA CRONOLOGIA\fP più avanti). Il primo carattere è il carattere di \fIespansione della cronologia\fP, il carattere che segnala l'inizio di una espansione della cronologia, normalmente `\fB!\fP'. Il secondo carattere è il carattere di \fIsostituzione rapida\fP, che è usato come scorciatoia per rieseguire il comando precedentemente inserito, sostituendo una stringa con un'altra nel comando. Il valore predefinito è `\fB^\fP'. Il terzo carattere, opzionale, è il carattere che indica che il resto della riga è un commento, quando è trovato come primo carattere di una parola, normalmente `\fB#\fP'. Il carattere di commento della cronologia fa sì che la sostituzione della cronologia venga saltata per le rimanenti parole sulla riga. Esso non fa necessariamente sì che l'analizzatore della shell tratti il resto della riga come un commento. .PD .SS Vettori \fBBash\fP fornisce variabili vettore monodimensionali indicizzate e associative. Ogni variabile può essere usata come un vettore indicizzato; il comando incorporato \fBdeclare\fP dichiara esplicitamente un vettore. Non c'è un limite massimo per la dimensione di un vettore, né alcuna richiesta che gli elementi siano indicizzati o assegnati in modo contiguo. I vettori indicizzati sono referenziati usando numeri interi (incluse le espressioni aritmetiche) e cominciano con l'indice zero. I vettori associativi sono referenziati utilizzando stringhe arbitrarie. Salvo che sia diversamente indicato, gli indici dei vettori indicizzati devono essere interi non negativi. .PP Un vettore indicizzato è creato automaticamente se l'assegnamento ad una qualsiasi variabile usa la sintassi \fInome\fP[\fIdeponente\fP]=\fIvalore\fP. Il \fIdeponente\fP (indice del vettore) è trattato come un'espressione aritmetica che deve risultare un numero. Per dichiarare esplicitamente un vettore indicizzato, usare \fBdeclare \-a \fP\fInome\fP (si veda .SM \fBCOMANDI INCORPORATI DELLA SHELL\fP più avanti). È anche accettato \fBdeclare \-a \fP\fInome\fP\fB[\fP\fIdeponente\fP\fB]\fP; il \fIdeponente\fP viene ignorato. .PP Vettori associativi sono creati usando \fBdeclare \-A \fP\fInome\fP. .PP Per una variabile vettore possono essere specificati degli attributi utilizzando i comandi incorporati \fBdeclare\fP e \fBreadonly\fP. Ogni attributo si applica a tutti gli elementi di un vettore. .PP Agli elementi del vettore vengono assegnati valori usando assegnamenti composti della forma \fInome\fP=\fB(\fPvalore\fI1\fP ... valore\fIn\fP\fB)\fP, dove ogni \fIvalore\fP può essere della forma [\fIdeponente\fP]=\fIstringa\fP. Le assegnazioni di vettori indicizzati non richiedono nient'altro che \fIstringa\fP. Ogni valore nella lista è espanso usando tutte le espansioni della shell descritte più avanti in .SM \fBESPANSIONE\fP. Quando si fanno assegnamenti a vettori indicizzati, se vengono fornite le parentesi opzionali e il deponente, l'elemento viene assegnato a quell'indice; altrimenti l'indice dell'elemento assegnato è l'ultimo indice già utilizzato aumentato di uno. L'indicizzazione parte da zero. .PP Quando si assegna ad un vettore associativo, le parole di un assegnamento composto possono essere comandi d'assegnamento, per i quali l'indice è obbligatorio, o una lista di parole che è interpretata come una sequenza alternata di chiavi e valori: \fInome\fP=\fB( \fP\fIchiave1 valore1 chiave2 valore2\fP ...\fB)\fP. Queste sono trattate come \fInome\fP=\fB(\fP [\fIchiave1\fP]=\fIvalore1\fP [\fIchiave2\fP]=\fIvalore2\fP ...\fB)\fP. La prima parola della lista determina come le successive verranno interpretate; tutti gli assegnamenti in una lista devono essere dello stesso tipo. Quando si usano coppie chiave/valore le chiavi non possono essere assenti o vuote; un valore finale mancante o vuoto è interpretato come stringa vuota. .PP Questa sintassi è accettata anche dal comando incorporato \fBdeclare\fP. Elementi singoli di un vettore possono essere assegnati con la sintassi \fInome\fP[\fIdeponente\fP]=\fIvalore\fP introdotta più sopra. Quando si fanno assegnamenti a un vettore indicizzato, se \fInome\fP è indicizzato da un numero negativo, quel numero è interpretato come relativo all' indice massimo di \fInome\fP aumentato di uno, perciò indici negativi si conteggiano dalla fine del vettore all'indietro, e un indice \-1 corrisponde all'ultimo elemento. .PP L'operatore += farà aggiungere ad una variabile vettore quando utilizzato con la sintassi di un assegnamento composto; vedere .SM \fBPARAMETRI\fP più su. .PP Qualsiasi elemento di un vettore può essere referenziato con ${\fInome\fP[\fIdeponente\fP]}. Le parentesi sono richieste per evitare conflitti con l'espansione di percorso. Se \fIdeponente\fP è \fB@\fP o \fB*\fP, la parola espande a tutti gli elementi di \fInome\fP. Questi deponenti differiscono solo quando la parola appare inclusa fra doppie virgolette. Se la parola è quotata con doppie virgolette, ${\fInome\fP[*]} espande a una singola parola col valore di ogni elemento del vettore separato dal primo carattere della variabile speciale .SM \fBIFS\fP, e ${\fInome\fP[@]} espande ogni elemento di \fInome\fP come una parola separata. Quando non ci sono elementi nel vettore, ${\fInome\fP[@]} è espanso alla stringa nulla. Se l'espansione quotata con doppie virgolette si trova dentro una parola, l'espansione del primo parametro è legato con la parte iniziale della parola originale, e l'espansione dell'ultimo parametro è legato con l'ultima parte della parola originale. Questo è analogo all'espansione dei parametri speciali \fB*\fP e \fB@\fP (si veda \fBParametri speciali\fP sopra). ${#\fInome\fP[\fIdeponente\fP]} espande alla lunghezza di ${\fInome\fP[\fIdeponente\fP]}. Se \fIdeponente\fP è \fB*\fP o \fB@\fP, l'espansione è il numero di elementi del vettore. Se il \fIdeponente\fP usato per referenziare un elemento di un vettore indicizzato risulta, dopo l'espansione, un numero minore di zero, è interpretato come relativo all'indice massimo del vettore aumentato di uno, perciò indici negativi si conteggiano dalla fine del vettore all'indietro, e un indice \-1 corrisponde all'ultimo elemento. .PP Referenziare una variabile vettore senza specificare un deponente equivale a referenziare il vettore con un deponente pari a zero. Ogni riferimento a una variabile usando un deponente valido è consentito, e \fBbash\fP creerà un vettore se necessario. .PP Una variabile vettore è considerata impostata se ad un deponente è stato assegnato un valore. La stringa nulla è un valore valido. .PP È possibile ottenere sia le chiavi (indici) che i valori di un vettore. ${\fB!\fP\fInome\fP[\fI@\fP]} e ${\fB!\fP\fInome\fP[\fI*\fP]} espandono agli indici assegnati nella variabile vettore \fInome\fP. Quando è fra doppie virgolette il trattamento è simile all'espansione dei parametri speciali \fI@\fP e \fI*\fP posti tra doppie virgolette. .PP Il comando incorporato \fBunset\fP è usato per annullare i vettori. \fBunset\fP \fInome\fP[\fIdeponente\fP] annulla l'elemento di vettore all'indice \fIdeponente\fP, sia per i vettori indicizzati sia per quelli associativi. Deponenti negativi di vettori indicizzati vengono interpretati come descritto in precedenza. Annullare l'ultimo elemento di un vettore non annulla la variabile. \fBunset\fP \fInome\fP, dove \fInome\fP è un vettore, rimuove l'intero vettore. \fBunset\fP \fInome\fP[\fIdeponente\fP] dove deponente è \fB*\fP o \fB@\fP, si comporta diversamente a seconda che \fInome\fP sia un vettore indicizzato o associativo. Se \fInome\fP è un vettore associativo questo rimuove l'elemento con deponente \fB*\fP o \fB@\fP. Se \fInome\fP è un vettore indicizzato, rimuove tutti gli elementi, ma non il vettore stesso. .PP Quando si usa un nome di variabile con un deponente come argomento di un comando, come ad esempio \fBunset\fP, senza utilizzare la sintassi per l'espansione della parola descritta sopra, l'argomento è soggetto all'espansione del percorso. Se l'espansione del percorso non è desiderabile, l'argomento va quotato. .PP Ciascuno dei comandi incorporati \fBdeclare\fP, \fBlocal\fP e \fBreadonly\fP accetta un'opzione \fB\-a\fP per specificare un vettore indicizzato e un'opzione \fB\-A\fP per specificare un vettore associativo. Se vengono fornite entrambe le opzioni, \fB\-A\fP ha la precedenza. Il comando incorporato \fBread\fP accetta un'opzione \fB\-a\fP per assegnare a un vettore una lista di parole lette dallo standard input. I comandi incorporati \fBset\fP e \fBdeclare\fP mostrano i valori di vettore in modo da essere riutilizzabili come assegnamenti. .SH ESPANSIONE L'espansione è eseguita sulla riga di comando dopo che essa è stata divisa in parole. Vi sono sette tipi di espansione effettuati: \fIespansione delle parentesi graffe\fP, \fIespansione della tilde\fP, \fIespansione di parametro e variabile\fP, \fIsostituzione di comando\fP, \fIespansione aritmetica\fP, \fIsuddivisione in parole\fP e \fIespansione di percorso\fP. .PP L'ordine di espansione è: espansione delle parentesi graffe, espansione della tilde, espansione di parametro e di variabile, espansione aritmetica, e sostituzione di comando (fatta da sinistra a destra); suddivisione in parole; ed espansione di percorso. .PP Sui sistemi che la supportano, è disponibile un'espansione aggiuntiva: la \fIsostituzione di processo\fP. Questa è effettuata contemporaneamente come espansione della tilde, di parametro, di variabile e aritmetica, e come sostituzione di comando. .PP Una volta effettuale queste espansioni, i caratteri di quotatura presenti nella parola originale vengono rimossi, a meno che siano essi stessi quotati (\fIrimozione dei segni di quotatura\fP) .PP Solo l'espansione delle parentesi graffe, la suddivisione in parole e l'espansione di percorso possono cambiare il numero di parole dell'espansione; le altre espansioni espandono una singola parola in una singola parola. La sola eccezione a questo sono le espansioni di \*(lq\fB$@\fP\*(rq e "\fB${\fP\fInome\fP\fB[@]}\fP", e in molti casi \fB$*\fP and \fB${\fP\fIname\fP\fB[*]}\fP come spiegato sopra (si vedi .SM \fBPARAMETRI\fP). .SS "Espansione delle parentesi graffe" \fIEspansione delle parentesi graffe\fP è un meccanismo con il quale possono essere generate stringhe arbitrarie. Questo meccanismo è simile all'\fIespansione di percorso\fP, ma non è necessario che i file il cui nome è generato esistano. I modelli cui si applica l'espansione delle parentesi graffe hanno la forma di un \fIpreambolo\fP opzionale, seguito da una serie di stringhe separate da virgola o una espressione di sequenza racchiusa fra parentesi graffe, seguite da un'\fIappendice\fP opzionale. Il preambolo è preposto a ogni stringa contenuta dentro le parentesi graffe e l'appendice è poi appesa a ogni stringa risultante, espandendo da sinistra a destra. .PP Le espansioni delle parentesi graffe possono essere nidificate. Il risultato di ogni stringa espansa non viene ordinato; è conservato l'ordine da sinistra a destra. Per esempio, a\fB{\fPd,c,b\fB}\fPe si espande in `ade ace abe'. .PP Un'espressione di sequenza prende la forma \fB{\fP\fIx\fP\fB..\fP\fIy\fP\fB[..\fP\fIincr\fP\fB]}\fP, dove \fIx\fP e \fIy\fP sono o numeri interi o caratteri singoli e \fIincr\fP, un incremento opzionale, è un numero intero. Se si specificano numeri interi, l'espressione espande a ogni numero fra \fIx\fP e \fIy\fP, inclusi. Ai numeri interi specificati può essere aggiunto uno \fI0\fP iniziale per costringere ogni termine ad avere la stessa ampiezza. Quando \fIx\fP o \fIy\fP iniziano con uno zero, la shell tenta di forzare tutti i termini generati a contenere lo stesso numero di cifre, aggiungendo degli zeri ove necessario. Se si specificano caratteri, l'espressione espande a ogni carattere lessicograficamente compreso fra \fIx\fP e \fIy\fP inclusi, usando il locale C predefinito. Da notare che entrambi \fIx\fP e \fIy\fP devono essere dello stesso tipo. Quando fornito, l'incremento è usato come differenza tra ogni termine. L'incremento predefinito è 1 o \-1 a seconda del caso. .PP L'espansione delle parentesi graffe è effettuata prima di qualsiasi altra espansione, e qualunque carattere speciale per uso delle altre espansioni viene lasciato com'era nel risultato. Essa è strettamente testuale. \fBBash\fP non applica alcuna interpretazione sintattica al contesto dell'espansione o al testo tra parentesi graffe. .PP Un'espansione delle parentesi graffe correttamente formata deve contenere una parentesi graffa di apertura e una di chiusura non quotate, e almeno una virgola non quotata. Qualunque espansione delle parentesi graffe erroneamente formata è lasciata inalterata. Una \fB{\fP o \fB,\fP può essere quotata con una barra inversa per evitare che venga considerata parte di un'espressione fra parentesi graffe. Per evitare conflitti con l'espansione di parametro, la stringa \fB${\fP non dà luogo all'espansione delle parentesi graffe, e inibisce l'espansione delle parentesi graffe fino alla \fB}\fP di chiusura. .PP Questo costrutto è tipicamente usato come abbreviazione quando il prefisso comune delle stringhe da generare è più lungo che negli esempi sopra: .RS .PP mkdir /usr/local/src/bash/{old,new,dist,bugs} .RE o .RS chown root /usr/{ucb/{ex,edit},lib/{ex?.?*,how_ex}} .RE .PP L'espansione delle parentesi graffe introduce una lieve incompatibilità con le versioni tradizionali di \fBsh\fP. \fBsh\fP non tratta le parentesi graffe aperte e chiuse, specialmente quando esse appaiono come parte di una parola, e le conserva in uscita. \fBBash\fP rimuove le parentesi graffe dalle parole come conseguenza dell'espansione delle parentesi graffe. Per esempio, una parola data a \fBsh\fP come \fIfile{1,2}\fP appare identica nell'output. La stessa parola è data in output come \fIfile1 file2\fP dopo l'espansione operata da \fBbash\fP. Se si desidera una stretta compatibilità con \fBsh\fP si avvia \fBbash\fP con l'opzione \fB+B\fP o si disabilita l'espansione delle parentesi graffe con l'opzione \fB+B\fP al comando \fBset\fP (si veda .SM \fBCOMANDI INCORPORATI DELLA SHELL\fP più avanti). .SS "Espansione della tilde" Se una parola comincia con un carattere tilde (`\fB~\fP') non quotato, tutti i caratteri che precedono la prima barra [/] non quotata (o tutti i caratteri, se non vi è alcuna barra) sono considerati un \fIprefisso tilde\fP. Se nessuno dei caratteri nel prefisso tilde è quotato, i caratteri nel prefisso tilde che segue la tilde sono trattati come un possibile \fInome di login\fP. Se questo nome di login è la stringa nulla, la tilde è sostituita con il valore del parametro .SM \fBHOME\fP. Se .SM \fBHOME\fP viene annullato, è invece sostituita la home directory dell'utente che sta eseguendo la shell. Altrimenti, il prefisso tilde è sostituito con la home directory associata al nome di login specificato. .PP Se il prefisso tilde è un `~+' il valore della variabile di shell .SM \fBPWD\fP sostituisce il prefisso tilde. Se il prefisso tilde è un `~\-', il valore della variabile di shell .SM \fBOLDPWD\fP, se impostato, viene sostituito. Se il carattere che segue la tilde nel prefisso tilde è un numero \fIN\fP, con un prefisso opzionale `+' o `\-', il prefisso tilde è sostituito dal corrispondente elemento dallo stack di directory, come dovrebbe essere mostrato dal comando incorporato \fBdirs\fP invocato col prefisso tilde come argomento. Se il carattere che segue la tilde nel prefisso tilde è un numero non preceduto da un segno `+' o `\-', viene assunto `+'. .PP Se il nome di login non è valido o l'espansione della tilde non ha successo, la parola rimane invariata. .PP Ogni assegnamento di variabile è controllato per prefissi tilde non quotati che seguono immediatamente un \fB:\fP o il primo \fB=\fP. In questi casi viene effettuata l'espansione della tilde. Di conseguenza, si possono usare nomi di file con delle tilde negli assegnamenti a .SM \fBPATH\fP, .SM \fBMAILPATH\fP e .SM \fBCDPATH\fP, e la shell assegna il valore espanso. .PP Bash fa anche l'espansione della tilde per le parole che soddisfano le condizioni degli assegnamenti di variabile (come descritto prima su .SM \fBPARAMETRI\fP) quando questi appaiono come argomenti a comandi semplici. Bash non lo fa, eccetto nei comandi \fIdichiarazione\fP elencati sopra, quando in \fImodalità posix\fP. .SS "Espansione di parametro" Il carattere `\fB$\fP' introduce l'espansione di parametro, la sostituzione di comando, o l'espansione aritmetica. Il nome o simbolo del parametro che dev'essere espanso può essere racchiuso tra parentesi graffe, che sono opzionali ma servono a proteggere la variabile che deve essere espansa dai caratteri immediatamente seguenti, che potrebbero essere interpretati come parte del nome della variabile stessa. .PP Quando vengono usate le parentesi graffe, la parentesi graffa finale corrispondente è la prima `\fB}\fP' non protetta da una barra inversa o da stringhe con quotatura, e non parte di un'espansione aritmetica inclusa, di una sostituzione di comando o di un'espansione di parametro. .PP .PD 0 .TP ${\fIparametro\fP} Il valore di \fIparametro\fP è sostituito. Le parentesi graffe sono richieste quando \fIparametro\fP è un parametro posizionale con più di una cifra, o quando \fIparametro\fP è seguito da un carattere che non deve essere interpretato come parte del suo nome. Il \fIparametro\fP è un parametro di shell come descritto sopra (\fBPARAMETRI\fP) o un riferimento a un vettore (\fBVettori\fP). .PD .PP Se il primo carattere di \fIparametro\fP è un punto esclamativo (\fB!\fP), e \fIparametro\fP non è un \fInameref\fP, introduce un livello di indirezione. \fBBash\fP usa il valore formato espandendo il resto di \fIparametro\fP come il nuovo \fIparametro\fP; questo è poi espanso e quel valore è usato nel resto dell'espansione, piuttosto che l'espansione del \fIparametro\fP originario. Questa è conosciuta come \fIespansione indiretta\fP. Il valore è soggetto all'espansione della tilde, espansione di parametro, sostituzione di comando, ed espansione aritmetica. Se \fIparametro\fP è un nameref, questo espande al nome del parametro referenziato da \fIparametro\fP invece di effettuare l'espansione indiretta completa. Le eccezioni a ciò sono le espansioni di ${\fB!\fP\fIprefisso\fP\fB*\fP} e ${\fB!\fP\fInome\fP[\fI@\fP]} descritte più avanti. Il punto esclamativo deve seguire immediatamente la parentesi graffa iniziale per introdurre l'indirezione. .PP In ognuno dei casi sotto riportati, \fIparola\fP è soggetta a espansione della tilde, espansione di parametro, sostituzione di comando ed espansione aritmetica. .PP Quando non sta effettuando l'espansione della sottostringa, usando le forme documentate più avanti (p.es., \fB:\-\fP), \fBBash\fP controlla se un parametro non è impostato o è nullo. L'omissione dei due punti provoca il solo controllo di un parametro non impostato. .PP .PD 0 .TP ${\fIparametro\fP\fB:\-\fP\fIparola\fP} \fBUsa i valori predefiniti\fP. Se \fIparametro\fP non è impostato o è nullo, è sostituita l'espansione di \fIparola\fP. Altrimenti, il valore di \fIparametro\fP è sostituito. .TP ${\fIparametro\fP\fB:=\fP\fIparola\fP} \fBAssegna i valori predefiniti\fP. Se \fIparametro\fP non è impostato o è nullo, l'espansione di \fIparola\fP è assegnata a \fIparametro\fP. Il valore di \fIparametro\fP è quindi sostituito. I parametri posizionali e i parametri speciali non possono essere assegnati in questo modo. .TP ${\fIparametro\fP\fB:?\fP\fIparola\fP} \fBDà una segnalazione di errore se è nullo o è stato annullato\fP. Se \fIparametro\fP è nullo o è stato annullato, l'espansione di \fIparola\fP (o un messaggio di segnalazione, se \fIparola\fP non è presente) viene scritta sullo standard error e la shell, se non è interattiva, termina. Altrimenti, è sostituito il valore di \fIparametro\fP. .TP ${\fIparametro\fP\fB:+\fP\fIparola\fP} Se \fIparametro\fP è nullo o è stato annullato, non è sostituito niente, altrimenti è sostituita l'espansione di \fIparola\fP. .TP ${\fIparametro\fP\fB:\fP\fIscostamento\fP} .PD 0 .TP ${\fIparametro\fP\fB:\fP\fIscostamento\fP\fB:\fP\fIlunghezza\fP} .PD \fBEspansione di sottostringa\fP. Espande i caratteri del valore di \fIparametro\fP fino a \fIlunghezza\fP partendo dal carattere specificato da \fIscostamento\fP. Se \fIparametro\fP è \fB@\fP o \fB*\fP, un vettore indicizzato con deponente \fB@\fP o \fB*\fP, o un nome di un vettore associativo, il risultato differisce come descritto più avanti. Se \fIlunghezza\fP viene omesso, espande alla sottostringa del valore di \fIparametro\fP partendo dal carattere specificato da \fIscostamento\fP fino alla fine del valore. \fIlunghezza\fP e \fIscostamento\fP sono espressioni aritmetiche (si veda .SM \fBVALUTAZIONE ARITMETICA\fP più avanti). .sp 1 Se \fIscostamento\fP è un numero minore di zero, il valore viene usato come scostamento nei caratteri dalla fine del valore di \fIparametro\fP. Se \fIlunghezza\fP è un numero minore di zero, viene interpretato come uno scostamento in caratteri dalla finedel valore di \fIparametro\fP piuttosto che come un numero di caratteri, e l'espansione è rappresentata dai caratteri fra lo \fIscostamento\fP e quel risultato. Si noti che uno scostamento negativo dev'essere separato dai due punti da almeno uno spazio per evitare che venga confuso con l'espansione di \fB:\-\fP. .sp 1 Se \fIparametro\fP è \fB@\fP o \fB*\fP, il risultato è un numero di parametri posizionali pari a \fIlunghezza\fP a partire da \fIscostamento\fP. Uno \fIscostamento\fP negativo è interpretato come relativo al parametro posizionale più grande aumentato di uno, cosicché uno scostamento di \-1 corrisponde all'ultimo parametro posizionale. È un errore di espansione se \fIlunghezza\fP risulta un numero minore di zero. .sp 1 Se \fIparametro\fP è un nome di vettore indicizzato con deponente @ o *, il risultato è un numero di elementi del vettore pari a \fIlunghezza\fP a partire da ${\fIparametro\fP[\fIscostamento\fP]}. Uno \fIscostamento\fP negativo è inteso come relativo al massimo indice del vettore specificato aumentato di uno. È un errore di espansione se \fIlunghezza\fP è un numero minore di zero. .sp 1 L'espansione di sottostringa applicata a un vettore associativo produce risultati indefiniti. .sp 1 L'indicizzazione della sottostringa è a base zero a meno che non vengano usati i parametri posizionali, nel qual caso l'indicizzazione parte da 1 come impostazione predefinita. Se \fIscostamento\fP è 0, e vengono usati i parametri posizionali, alla lista è aggiunto il prefisso \fB$0\fP. .TP ${\fB!\fP\fIprefisso\fP\fB*\fP} .PD 0 .TP ${\fB!\fP\fIprefisso\fP\fB@\fP} .PD \fBNomi corrispondenti al prefisso\fP. Espande ai nomi delle variabili i cui nomi iniziano con \fIprefisso\fP, separati dal primo carattere della variabile speciale .SM \fBIFS\fP. Quando viene usato \fI@\fP e l'espansione appare tra doppie virgolette, ogni nome di variabile si espande in una parola separata. .TP ${\fB!\fP\fInome\fP[\fI@\fP]} .PD 0 .TP ${\fB!\fP\fInome\fP[\fI*\fP]} .PD \fBLista delle chiavi di vettore\fP. Se \fInome\fP è una variabile vettore, espande alla lista degli indici di vettore (chiavi) assegnati in \fInome\fP. Se \fInome\fP non è un vettore, espande a 0 se \fInome\fP è impostato ed è nullo in caso contrario. Quando \fI@\fP è usato e l'espansione appare fra doppie virgolette, ogni chiave espande a una parola separata. .TP ${\fB#\fP\fIparametro\fP} \fBlunghezza parametro\fP} È sostituita la lunghezza in caratteri del valore di \fIparametro\fP. Se \fIparametro\fP è \fB*\fP o \fB@\fP, il valore sostituito è il numero di parametri posizionali. Se \fIparametro\fP è un nome di vettore contrassegnato da \fB*\fP o \fB@\fP il valore sostituito è il numero di elementi nel vettore. Se \fIparametro\fP è un nome di vettore indicizzato con deponente negativo, quel numero è interpretato come relativo al massimo indice di \fIparametro\fP aumentato di uno, perciò indici negativi si conteggiano dalla fine del vettore all'indietro, e un indice \-1 corrisponde all'ultimo elemento. .TP ${\fIparametro\fP\fB#\fP\fIparola\fP} .PD 0 .TP ${\fIparametro\fP\fB##\fP\fIparola\fP} .PD \fBRimozione del suffisso corrispondente al modello\fP. La \fIparola\fP è espansa per produrre un modello proprio come nell'espansione di percorso, e confrontata col valore espanso di \fIparametro\fP usando le regole descritte più avanti in \fBModelli di ricerca\fP. Se il modello corrisponde a una parte finale del valore espanso di \fIparametro\fP, il risultato dell'espansione è il valore espanso di \fIparametro\fP con il più corto dei modelli corrispondenti cancellato (nel caso di \*(lq\fB#\fP\*(rq ) o il più lungo dei modelli corrispondenti cancellato (nel caso di \*(lq\fB##\fP\*(rq). Se \fIparametro\fP è \fB@\fP o \fB*\fP, l'operazione di rimozione del modello è applicata a ognuno dei parametri posizionali, e l'espansione è la lista risultante. Se \fIparametro\fP è una variabile vettore con deponente \fB@\fP o \fB*\fP, l'operazione di rimozione del modello è applicata a ognuno degli elementi del vettore, e l'espansione è la lista risultante. .TP ${\fIparametro\fP\fB%\fP\fIparola\fP} .PD 0 .TP ${\fIparametro\fP\fB%%\fP\fIparola\fP} .PD \fBRimozione del suffisso corrispondente al modello\fP. La \fIparola\fP è espansa per produrre un modello proprio come nell'espansione di percorso, e confrontata col valore espanso di \fIparametro\fP usando le regole descritte più avanti in \fBModelli di ricerca\fP. Se il modello corrisponde a una parte finale del valore espanso di \fIparametro\fP, il risultato dell'espansione è il valore espanso di \fIparametro\fP con il più corto dei modelli corrispondenti cancellato (nel caso di \*(lq\fB%\fP\*(rq ) o il più lungo dei modelli corrispondenti cancellato (nel caso di \*(lq\fB%%\fP\*(rq). Se \fIparametro\fP è \fB@\fP o \fB*\fP, l'operazione di rimozione del modello è applicata a ognuno dei parametri posizionali, e l'espansione è la lista risultante. Se \fIparametro\fP è una variabile vettore con deponente \fB@\fP o \fB*\fP, l'operazione di rimozione del modello è applicata a ognuno degli elementi del vettore, e l'espansione è la lista risultante. .TP ${\fIparameter\fP\fB/\fP\fImodello\fP\fB/\fP\fIstringa\fP} .PD 0 .TP ${\fIparametro\fP\fB//\fP\fImodello\fP\fB/\fP\fIstringa\fP} .TP ${\fIparametro\fP\fB/#\fP\fImodello\fP\fB/\fP\fIstringa\fP} .TP ${\fIparametro\fP\fB/%\fP\fImodello\fP\fB/\fP\fIstringa\fP} .PD \fBSostituzione di modello\fP. Il \fImodello\fP è espanso per produrre un modello proprio come nell'espansione di percorso. \fIParametro\fP è espanso e il suo valore più lungo che corrisponde a \fImodello\fP è sostituito con \fIstringa\fP. \fIstringa\fP viene sottoposta all'espansione della tilde, espansione di parametro e di variabile, espansione aritmetica, sostituzione di comando e processo e rimozione di quotatura. Il confronto è effettuato usando le regole descritte più avanti in \fBModelli di ricerca\fP. Nella prima forma sopraelencata viene sostituita solo la prima occorrenza. Se ci sono due slash che separano \fIparametro\fP da \fImodello\fP (la seconda forma), tutte le corrispondenze di \fImodello\fP vengono sostituite con \fIstringa\fP. Se \fImodello\fP è preceduto da \fB#\fP (la terza forma) la corrispondenza deve avvenire all'inizio del valore espanso di \fIparametro\fP. Se \fImodello\fP è preceduto da \fB%\fP (la quarta forma) la corrispondenza deve avvenire alla fine del valore espanso di \fIparametro\fP. Se l'espansione di \fIstringa\fP è nulla, le corrispondenza di \fImodello\fP vengono cancellate. Se \fIstringa\fP è nulla allora le corrispondenze di \fImodello\fP vengono cancellate e la \fB/\fP che segue \fImodello\fP può essere omessa. .sp 1 Se l'opzione di shell \fBpatsub_replacement\fP è abilitata usando \fBshopt\fP, ogni istanza di \fB&\fP senza quotatura in \fIstringa\fP viene sostituita dalla porzione corrispondente di \fImodello\fP. .sp 1 Una qualsiasi parte di \fIstringa\fP senza quotatura inibisce la sostituzione nell'espansione della parte con quotatura, comprese le stringhe di sostituzione memorizzate in variabili shell. La barra inversa farà perdere il valore speciale a \fB&\fP in \fIstringa\fP; la barra inversa è rimossa in modo da permettere un carattere letterale \fB&\fP nella stringa di sostituzione. La barra inversa viene usata anche per togliere il significato a se stesso; \fB\e\e\fP risulta una semplice barra inversa nella stringa di sostituzione. Gli utenti devo fare attenzione se la stringa è tra doppi apici per evitare interazioni non richieste tra la barra inversa e le doppie virgolette, poiché la barra inversa ha un significato particolare all'interno delle doppie virgolette. La sostituzione di modelli effettua un controllo su \fB&\fP non tra virgolette dopo aver espanso \fIstringa\fP; i programmatore shell dovrebbero virgolettare ogni occorrenza di \fB&\fP che vogliono sia presa letteralmente nella parte di sostituzione, e dovrebbero assicurarsi che ogni istanza di \fB&\fP che vogliono sia sostituita non sia virgolettata. .sp 1 Se l'opzione di shell \fBnocasematch\fP è abilitata, la corrispondenza è effettuata senza distinguere maiuscole da minuscole nei caratteri alfabetici. Se \fIparametro\fP è \fB@\fP o \fB*\fP, l'operazione è applicata a ognuno dei parametri posizionali, e l'espansione è la lista risultante. Se \fIparametro\fP è una variabile vettore con deponente \fB@\fP o \fB*\fP, l'operazione è applicata a ognuno degli elementi del vettore, e l'espansione è la lista risultante. .TP ${\fIparametro\fP\fB^\fP\fImodello\fP} .PD 0 .TP ${\fIparametro\fP\fB^^\fP\fImodello\fP} .TP ${\fIparametro\fP\fB,\fP\fImodello\fP} .TP ${\fIparametro\fP\fB,,\fP\fImodello\fP} .PD \fBModifica minuscolo/maiuscolo\fP. Questa espansione modifica in \fIparametro\fP i caratteri alfabetici da minuscolo a maiuscolo e viceversa. Il \fImodello\fP viene espanso per produrre un modello, proprio come nell'espansione del nome di percorso. Ciascun carattere nel valore espanso di \fIparametro\fP viene confrontato con \fImodello\fP e, se corrisponde al modello, le minuscole/maiuscole vengono convertite. Il modello potrebbe non cercare corrispondenze con più di un carattere. L'operatore \fB^\fP converte le lettere minuscole che corrispondono a \fImodello\fP in lettere maiuscole; l'operatore \fB,\fP converte le lettere maiuscole trovate in lettere minuscole. Le espansioni \fB^^\fP e \fB,,\fP convertono ogni carattere trovato nel valore espanso; le espansioni \fB^\fP e \fB,\fP trovano e convertono solo il primo carattere nel valore espanso. Se \fImodello\fP è omesso, è trattato come un \fB?\fP, che individua tutti i caratteri. Se \fIparametro\fP è \fB@\fP o \fB*\fP, l'operazione di conversione minuscole/maiuscole è applicata a tutti i parametri posizionali successivi, e l'espansione è la lista risultante. Se \fIparametro\fP è una variabile vettore indicizzata con \fB@\fP o \fB*\fP, l'operazione di conversione minuscole/maiuscole è applicata a tutti i successivi elementi del vettore, e l'espansione è la lista risultante. .TP ${\fIparametro\fP\fB@\fP\fIoperatore\fP} \fBTrasformazione di parametro\fP. L'espansione è o una trasformazione del valore di \fIparametro\fP o un'informazione su \fIparametro\fP stesso, a seconda del valore di \fIoperatore\fP. Ogni \fIoperatore\fP è una sola lettera: .sp 1 .RS .PD 0 .TP \fBU\fP L'espansione è una stringa che è il valore di \fIparametro\fP coi caratteri alfabetici minuscoli convertiti in maiuscolo. .TP \fBu\fP L'espansione è una stringa che è il valore di \fBparametro\fP con il primo carattere convertito in maiuscolo, se è alfabetico. .TP \fBL\fP L'espansione è una stringa che è il valore di \fBparametro\fP coi caratteri alfabetici maiuscoli convertiti in minuscolo. .TP \fBQ\fP L'espansione è una stringa che è il valore di \fBparametro\fP quotato in un formato riutilizzabile come input. .TP \fBE\fP L'espansione è una stringa che è il valore di \fIparametro\fP con sequenza di protezione con barra inversa espansa come se fosse il meccanismo di quotatura \fB$\(aq...\(aq\fP. .TP \fBP\fP L'espansione è una stringa che è il risultato dell'espansione del valore di \fIparametro\fP come se fosse una stringa di prompt (si veda più avanti \fBSTRINGHE D PROMPT\fP). .TP \fBA\fP L'espansione è una stringa nella forma di istruzione di assegnamento o di comando \fBdeclare\fP che, se valutato, ricreerà \fIparametro\fP coi suoi attributi e col suo valore. .TP \fBK\fP Produce una versione eventualmente virgolettata del valore di \fIparametro\fP, ma stampa o valori di un vettore associativo come sequenza di coppie chiave/valore virgolettate (vedere \fBVettori\fP più su). .TP \fBa\fP L'espansione è una stringa consistente di valori di flag che rappresentano attributi di \fIparametro\fP. .TP \fBk\fP Come la trasformazione K, ma espande chiavi e valori di vettori indicizzati e associativi come parole distinte dopo la separazione delle parole. .PD .PP Se \fIparametro\fP è \fB@\fP o \fB*\fP, l'operazione è applicata a ognuno dei parametri posizionali, e l'espansione è la lista risultante. Se \fIparametro\fP è una variabile vettore con deponente \fB@\fP o \fB*\fP, l'operazione è applicata a ognuno degli elementi del vettore, e l'espansione è la lista risultante. .sp 1 Il risultato dell'espansione è soggetto alla suddivisione in parole e all'espansione di percorso come descritto più avanti.. .RE .SS "Sostituzione di comando" La \fIsostituzione di comando\fP permette che l'output di un comando rimpiazzi il nome del comando. Vi sono due forme: .RS .PP \fB$(\fP\fIcomando\fP\|\fB)\fP .RE o .RS \fB\`\fP\fIcomando\fP\fB\`\fP .RE .PP \fBBash\fP effettua l'espansione eseguendo il \fIcomando\fP in un ambiente di subshell e rimpiazzando la sostituzione di comando con lo standard output del comando, con ogni newline finale cancellato. I newline intermedi non vengono cancellati, ma possono essere rimossi durante la suddivisione in parole. La sostituzione di comando \fB$(cat \fP\fIfile\fP\fB)\fP può essere sostituita dall'equivalente ma più veloce \fB$(< \fP\fIfile\fP\fB)\fP. .PP Quando è usata la forma di sostituzione in vecchio stile con gli apici rovesciati, la barra inversa conserva il suo significato letterale tranne quando è seguita da \fB$\fP, \fB\`\fP, o \fB\e\fP. Il primo apice rovesciato non preceduto da una barra inversa fa terminare la sostituzione di comando. Quando si usa la forma $(\^\fIcomando\fP\|), tutti i caratteri tra le parentesi formano il comando; nessuno è considerato speciale. .PP La sostituzione di comando può essere nidificata. Per nidificare quando si usa la forma con gli apici rovesciati, bisogna far precedere gli apici rovesciati più interni con una barra inversa di protezione. .PP Se la sostituzione appare tra virgolette, la suddivisione in parole e l'espansione di percorso non sono effettuate sui risultati. .SS "Espansione aritmetica" L'espansione aritmetica permette la valutazione di una espressione aritmetica e la sostituzione del risultato. Il formato per l'espansione aritmetica è: .RS .PP \fB$((\fP\fIespressione\fP\fB))\fP .RE .PP L'\fIespressione\fP è trattata come se fosse tra virgolette, ma le virgolette in \fIespressione\fP non sono trattate in modo speciale e sono rimosse. Tutti i token dell'espressione sono assoggettati a espansione di parametro e di variabile, sostituzione di comando e rimozione dei caratteri di quotatura. Il risultato è trattato come espressione aritmetica da valutare. Le espansioni aritmetiche possono essere nidificate. .PP Il calcolo è effettuato in accordo con le regole elencate più avanti sotto .SM \fBVALUTAZIONE ARITMETICA\fP. Se \fIespressione\fP non è valida, \fBbash\fP stampa un messaggio che indica l'errore e non viene effettuata alcuna sostituzione. .SS "Sostituzione di processo" La \fIsostituzione di processo\fP consente di far riferimento a un input o a un output di processo usando un nome\-file. Essa prende la forma di \fB<(\fP\fIlista\^\fP\fB)\fP o \fB>(\fP\fIlista\^\fP\fB)\fP. La \fIlista\fP di processi è eseguita in modalità asincrona, e il suo input o output appare come un nome\-file. Il nome di questo file è passato come argomento al comando corrente come risultato dell'espansione. Se è usata la forma \fB>(\fP\fIlista\^\fP\fB)\fP, la scrittura sul file fornisce input per la \fIlista\fP. Se è usata la forma \fB<(\fP\fIlista\^\fP\fB)\fP, il file passato come argomento dovrebbe essere letto per ottenere l'output di \fIlista\fP. La sostituzione di processo è supportata su sistemi che supportano le named pipe (\fIFIFO\fP) o il metodo \fB/dev/fd\fP per denominare i file aperti. .PP Su sistemi che la supportano, la sostituzione di processo è effettuata allo stesso momento dell'espansione di parametro e di variabile, della sostituzione di comando e dell'espansione aritmetica. .SS "Suddivisione in parole" La shell scandisce il risultato dell'espansione di parametro, sostituzione di comando ed espansione aritmetica che non si trovano tra virgolette, per eseguire la \fIsuddivisione in parole\fP. .PP La shell tratta ogni carattere di .SM \fBIFS\fP come un delimitatore, e suddivide in parole i risultati delle altre espansioni usando uno di questi caratteri come delimitatori di campo. Se il valore di .SM \fBIFS\fP non è impostato o il suo valore è esattamente \fB\fP, il valore predefinito, sequenze di \fB\fP, \fB\fP e \fB\fP all'inizio e alla fine dei risultati delle precedenti espansioni vengono ignorate, e qualsiasi sequenza di caratteri .SM \fBIFS\fP, che non siano all'inizio o alla fine, servono per delimitare le parole. Se .SM \fBIFS\fP ha un valore diverso da quello predefinito, allora sequenze di caratteri di spaziatura \fBspace\fP e \fBtab\fP e \fBnewline\fP sono ignorate all'inizio e alla fine della parola, se il carattere di spaziatura è presente nel valore di .SM \fBIFS\fP (un carattere di spaziatura .SM \fBIFS\fP). Qualunque carattere in .SM \fBIFS\fP che non è un carattere di spaziatura .SM \fBIFS\fP, insieme con qualsiasi carattere di spaziatura .SM \fBIFS\fP adiacente, delimita un campo. Una sequenza di caratteri di spaziatura .SM \fBIFS\fP è anche trattata come un delimitatore. Se il valore di .SM \fBIFS\fP è nullo, non avviene alcuna suddivisione in parole. .PP Argomenti esplicitamente nulli (\^\fB"\^"\fP o \^\fB\(aq\^\(aq\fP\^) sono conservati e passati ai comandi come stringa vuota. Argomenti non quotati implicitamente nulli, risultanti dall'espansione di parametri con valore nullo, sono rimossi. Se un parametro con valore nullo è espanso fra virgolette, è considerato un argomento nullo ed è conservato e passato a un comando come stringa vuota. Quando un argomento nullo quotato appare come parte di una parola la cui espansione è non\-nulla, l'argomento nullo viene rimosso. Cioè, la parola \f(CW\-d\(aq\^\(aq\fP diventa \f(CW\-d\fP dopo la suddivisione della parola e la rimozione dell'argomento nullo. .PP È da notare che se non avviene alcuna espansione non viene effettuata alcuna suddivisione. .SS "Espansione di percorso" Dopo la suddivisione in parole, a meno che non sia stata impostata l'opzione \fB\-f\fP, \fBbash\fP scandisce ogni parola alla ricerca di caratteri \fB*\fP, \fB?\fP e \fB[\fP. Se uno di questi caratteri è presente e non è virgolettato, allora la parola è considerata come un \fImodello\fP, e sostituita con una lista, in ordine alfabetico, di nomi\-file che corrispondono al modello (si vda .SM \fBModelli di ricerca\fP più oltre). Se nessun nome\-file corrispondente viene trovato, e l'opzione di shell \fBnullglob\fP non è abilitata, la parola è lasciata inalterata. Se l'opzione \fBnullglob\fP è impostata e nessuna corrispondenza è trovata, la parola è rimossa. Se l'opzione di shell \fBfailglob\fP è impostata e non viene trovata alcuna corrispondenza, viene stampato un messaggio di errore e il comando non viene eseguito. Se l'opzione di shell \fBnocaseglob\fP è abilitata, il confronto è effettuato senza distinzione fra maiuscole e minuscole nei caratteri alfabetici. Quando un modello è usato per l'espansione di percorso, il carattere \fB\*(lq.\*(rq\fP all'inizio di un nome o immediatamente dopo una barra [/] deve essere confrontato esplicitamente, a meno che l'opzione di shell \fBdotglob\fP non sia impostata. Per poter fare corrispondere i nomi\-file \fB\*(rq.\*(rq\fP e \fB\*(lq..\*(rq\fP, il modello deve iniziare con \*(lq.\*(rq (per esempio, \*(lq.?\*(rq) anche se \fBdotglob\fP è attiva. Se l'opzione di shell \fBglobskipdots\fP è abilitata, i nomi\-file \fB\*(lq.\*(rq\fP e \fB\*(lq..\*(rq\fP non corrispondono mai, neppure il modello inizia con \fB\*(lq.\*(rq\fP. Quando non si cerca una corrispondenza con un nome\-file, il carattere \fB\*(lq.\*(rq\fP non è trattato in maniera speciale. Quando si confronta un percorso, il carattere barra [/] deve sempre essere confrontato esplicitamente con una barra nel modello, ma in altri contesti di corrispondenza può corrispondere a un carattere speciale di modello come descritto in .SM \fBModelli di ricerca\fP. Vedere la descrizione di \fBshopt\fP più avanti sotto .SM \fBCOMANDI INCORPORATI DELLA SHELL\fP per una descrizione delle opzioni di shell the \fBnocaseglob\fP, \fBnullglob\fP, \fBglobskipdots\fP, \fBfailglob\fP e \fBdotglob\fP. .PP La variabile di shell .SM \fBGLOBIGNORE\fP può essere usata per restringere la serie di nomi di file che corrispondono a un \fImodello\fP. Se .SM \fBGLOBIGNORE\fP è impostato, ogni nome di file da confrontare che corrisponde anche a uno dei modelli in .SM \fBGLOBIGNORE\fP è rimosso dalla lista dei nomi che corrispondono al modello. Se è impostata l'opzione \fBnocaseglob\fP , il confronto coi modelli in .SM \fBGLOBIGNORE\fP è effettuata senza distinzione tra minuscole e maiuscole. I nomi\-file \fB\*(lq.\*(rq\fP e \fB\*(lq..\*(rq\fP sono sempre ignorati quando .SM \fBGLOBIGNORE\fP è impostato e non nullo. Comunque, impostare .SM \fBGLOBIGNORE\fP a un valore non nullo ha l'effetto di abilitare l'opzione di shell \fBdotglob\fP, così da cercare una corrispondenza con tutti gli altri nomi\-file che iniziano con un \fB\*(lq.\*(rq\fP. Per ottenere il comportamento (usato in precedenti versioni) di ignorare i nomi\-file che iniziano con \fB\*(lq.\*(rq\fP, si deve fare un modello \fB\*(lq.*\*(rq\fP in .SM \fBGLOBIGNORE\fP. L'opzione \fBdotglob\fP è disabilitata quando .SM \fBGLOBIGNORE\fP viene annullato. Il modello di ricerca rispetta l'impostazione dell'opzione di shell \fBextglob\fP. .PP \fBModelli di ricerca / espressioni regolari\fP .PP Ogni carattere che appare in un modello (espressione regolare), tranne quelli speciali descritti qui sotto, corrisponde a se stesso. Il carattere NULL non può far parte di un'espressione regolare. Una barra inversa segnala come speciale il carattere che segue; la barra inversa è ignorata durante il confronto. I caratteri speciali del modello devono essere racchiusi tra apici se si vuole che siano considerati così come sono scritti. .PP I caratteri speciali nelle espressioni regolari hanno i seguenti significati: .PP .PD 0 .RS .TP \fB*\fP Corrisponde a qualsiasi stringa, inclusa la stringa nulla. Quando è abilitata l'opzione di shell \fBglobstar\fP, e in un contesto di espansione del nome di percorso viene usato \fB*\fP, due \fB*\fP adiacenti usati come unico criterio di ricerca troveranno tutti i file e zero o più directory e sottodirectory. Se seguito da un \fB/\fP, due \fB*\fP adiacenti troveranno solo directory e sottodirectory. .TP \fB?\fP Corrisponde a qualsiasi carattere singolo. .TP \fB[...]\fP Corrisponde a uno qualsiasi dei caratteri racchiusi fra parentesi quadre. Una coppia di caratteri separati da un segno meno denota un'\fIespressione di intervallo\fP, che individua ogni carattere che si trova tra quei due caratteri, essi stessi inclusi, usando la sequenza di ordinamento della localizzazione corrente. Se il primo carattere che segue il \fB[\fP è un \fB!\fP o un \fB^\fP allora qualsiasi carattere non specificato è ritenuto corrispondente. L'ordine di ordinamento dei caratteri nell'espressione di intervallo è determinato dalla localizzazione corrente e dai valori delle variabili di shell .SM \fBLC_COLLATE\fP o .SM \fBLC_ALL\fP , se impostate. Per ottenere l'interpretazione tradizionale delle espressioni d'intervallo, dove \fB[a\-d]\fP è equivalente a \fB[abcd]\fP, impostare il valore della variabile di shell \fBLC_ALL\fP a \fBC\fP, o abilitare l'opzione di shell \fBglobasciiranges\fP. Un \fB\-\fP può essere specificato includendolo come primo o ultimo carattere nella lista. Una \fB]\fP può essere specificata includendola come primo carattere nell'insieme. .br .if t .sp 0.5 .if n .sp 1 All'interno di \fB[\fP e \fB]\fP, possono essere specificate \fIclassi di caratteri\fP usando la sintassi \fB[:\fP\fIclasse\fP\fB:]\fP, dove \fIclasse\fP è una delle seguenti classi definite nello standard POSIX: .PP .RS .B .if n alnum alpha ascii blank cntrl digit graph lower print punct space upper word xdigit .if t alnum alpha ascii blank cntrl digit graph lower print punct space upper word xdigit .br Una classe di caratteri trova una corrispondenza con qualsiasi carattere appartenente a quella classe. La classe di caratteri \fBword\fP individua lettere, cifre e il carattere _. .br .if t .sp 0.5 .if n .sp 1 All'interno di \fB[\fP e \fB]\fP può essere specificata una \fIclasse di equivalenza\fP con la sintassi \fB[=\fP\fIc\fP\fB=]\fP, che individua tutti i caratteri con lo stesso grado di ordinamento (come definito dalla localizzazione corrente) del carattere \fIc\fP. .br .if t .sp 0.5 .if n .sp 1 All'interno di \fB[\fP e \fB]\fP la sintassi \fB[.\fP\fIsymbol\fP\fB.]\fP individua il simbolo di ordinamento \fIsymbol\fP. .RE .RE .PD .PP Se l'opzione di shell \fBextglob\fP è abilitata col comando incorporato \fBshopt\fP, vengono riconosciuti diversi operatori estesi per la descrizione di modelli. Nella descrizione seguente, un \fIelenco\-modelli\fP è una lista di uno o più modelli separati da una \fB|\fP. Possono essere formati modelli composti usando uno o più dei seguenti sotto\-modelli: .sp 1 .PD 0 .RS .TP \fB?(\fP\^\fIelenco\-modelli\^\fP\fB)\fP Individua zero o una occorrenza dei modelli specificati .TP \fB*(\fP\^\fIelenco\-modelli\^\fP\fB)\fP Individua zero o più occorrenze dei modelli specificati .TP \fB+(\fP\^\fIelenco\-modelli\^\fP\fB)\fP Individua una o più occorrenze dei modelli specificati .TP \fB@(\fP\^\fIelenco\-modelli\^\fP\fB)\fP Individua uno dei modelli specificati .TP \fB!(\fP\^\fIelenco\-modelli\^\fP\fB)\fP Individua qualsiasi cosa eccetto uno dei modelli specificati .RE .PD .PP L'opzione \fBextglob\fP cambia il comportamento del parser poiché le parentesi vengono trattate normalmente come operatori con significato sintattico. Per accertarsi che i modelli per le corrispondenze estese siano correttamente definiti, assicurarsi che \fBextglob\fP sia abilitata prima di effettuare il parse del costrutto che contiene i modelli, ivi incluse le funzioni shell e le sostituzioni di comando. .PP Durante la corrispondenza con nomi\-file, l'opzione di shell \fBdotglob\fP determina l'insieme dei nomi\-file che sono controllati: quando \fBdotglob\fP è abilitata, l'insieme dei nomi\-file include quelli che iniziano con \*(lq.\*(rq, ma\*(lq.\*(rq e \*(lq..\*(rq devono essere selezionati tramite un modello o sottomodello che inizi per punto; quando è disabilitata .PP La corrispondenza con modelli estesi complessi su stringhe lunghe è lenta, specialmente quando il modello contiene alternative e le stringhe contengono più corrispondenze. Usare corrispondenze separate su stringhe più corte, o usare vettori di stringhe anziché una unica stringa lunga, può essere più veloce. .SS "Rimozione dei caratteri di quotatura" Dopo le precedenti espansioni, tutte le occorrenze non virgolettate dei caratteri \fB\e\fP, \fB\(aq\fP e \^\fB"\fP\^ non originate da una delle espansioni di cui sopra sono rimosse. .SH RIDIREZIONE Prima che un comando sia eseguito, i suoi input e output possono essere \fIridiretti\fP usando una speciale notazione interpretata dalla shell. La ridirezione permette ai puntatori (handle) ai file del comando di essere duplicati, aperti, chiusi, fatti per riferire file differenti, e può cambiare i file da cui il comando legge o su cui scrive. La ridirezione può anche essere usata per modificare i puntatori ai file nell'ambiente di esecuzione della shell corrente. I seguenti operatori di ridirezione possono precedere o apparire in qualsiasi posizione all'interno di un \fIcomando semplice\fP o possono venire dopo un \fIcomando\fP. Le ridirezioni sono elaborate nell'ordine in cui compaiono, da sinistra a destra. .PP Ogni ridirezione che può essere preceduta da un numero di descrittore di file può invece essere preceduta da una parola della forma {\fInomevar\fP}. In questo caso, per ogni operatore di ridirezione ad eccezione di >&\- e <&\-, la shell allocherà un descrittore di file maggiore o uguale a 10 e lo assegnerà a \fInomevar\fP. Se >&\- o <&\- è preceduto da {\fInomevar\fP}, il valore di \fInomevar\fP definisce il descrittore di file da chiudere. Se viene fornito {\fInomevar\fP}, la ridirezione persiste oltre l'ambito del comando, consentendo al programmatore di shell di gestire da sé il descrittore di file. L'opzione di shell \fBvarredir_close\fP gestisce questo comportamento. .PP Nelle seguenti descrizioni, se il numero di descrittore di file è omesso, e il primo carattere dell'operatore di ridirezione è \fB<\fP, la ridirezione si riferisce allo standard input (descrittore di file 0). Se il primo carattere dell'operatore di ridirezione è \fB>\fP, la ridirezione si riferisce allo standard output (descrittore di file 1). .PP La parola che segue l'operatore di ridirezione nelle seguenti descrizioni, se non diversamente specificato, è sottoposta a espansione delle parentesi graffe, espansione della tilde, espansione di parametro e di variabile, sostituzione di comando, espansione aritmetica, rimozione dei caratteri di quotatura, espansione dei percorsi e suddivisione in parole. Se si espande a più di una parola \fBbash\fP dà una segnalazione di errore. .PP È da notare che l'ordine delle ridirezioni è significativo. Per esempio, il comando .RS .PP ls \fB>\fP dirlist 2\fB>&\fP1 .RE .PP dirige sia lo standard output che lo standard error sul file \fIdirlist\fP, mentre il comando .RS .PP ls 2\fB>&\fP1 \fB>\fP dirlist .RE .PP dirige solo lo standard output sul file \fIdirlist\fP, poiché lo standard error è stato duplicato dallo standard output prima che lo standard output fosse ridiretto su \fIdirlist\fP. .PP \fBBash\fP manipola parecchi nomi\-file specialmente quando sono usati in ridirezioni, come descritto nella tavola seguente. Se il sistema operativo nel quale \fBBash\fP è in esecuzione fornisce questi file speciali, bash userà quelli; altrimenti li emulerà internamente col comportamento descritto più avanti. .RS .PP .PD 0 .TP \fB/dev/fd/\fP\fIfd\fP Se \fIfd\fP è un intero valido, il descrittore di file \fIfd\fP è duplicato. .TP \fB/dev/stdin\fP Il descrittore di file 0 è duplicato. .TP \fB/dev/stdout\fP Il descrittore di file 1 è duplicato. .TP \fB/dev/stderr\fP Il descrittore di file 2 è duplicato. .TP \fB/dev/tcp/\fP\fIhost\fP\fB/\fP\fIporta\fP Se \fIhost\fP è un nome di host valido o un indirizzo Internet, e \fIporta\fP è un numero intero di porta o il nome di un servizio, \fBbash\fP tenta di aprire il socket TCP corrispondente. .TP \fB/dev/udp/\fP\fIhost\fP\fB/\fP\fIporta\fP Se \fIhost\fP è un nome di host valido o un indirizzo Internet, e \fIporta\fP è un numero intero di porta o il nome di un servizio, \fBbash\fP tenta di aprire il socket UDP corrispondente. .PD .RE .PP L'insuccesso nell'aprire o creare un file determina l'insuccesso della ridirezione. .PP Ridirezioni con descrittori di file maggiori di 9 dovrebbero essere usate con attenzione, poiché possono entrare in conflitto coi descrittori di file usati internamente dalla shell. .SS "Ridirezione dell'input" La ridirezione dell'input fa sì che il file il cui nome risulta dall'espansione di \fIparola\fP venga aperto in lettura sul descrittore di file \fIn\fP, o come standard input (descrittore di file 0) se \fIn\fP non è specificato. .PP Il formato generico per ridirigere l'input è: .RS .PP [\fIn\fP]\fB<\fP\fIparola\fP .RE .SS "Ridirezione dell'output" La ridirezione dell'output fa sì che il file il cui nome risulta dall'espansione di \fIparola\fP venga aperto in scrittura sul descrittore di file \fIn\fP, o come standard output (descrittore di file 1) se \fIn\fP non è specificato. Se il file non esiste viene creato; se esiste viene sovrascritto, come se fosse di dimensione zero. .PP Il formato generico per ridirigere l'output è: .RS .PP [\fIn\fP]\fB>\fP\fIparola\fP .RE .PP Se l'operatore di ridirezione è \fB>\fP, e l'opzione \fBnoclobber\fP del comando incorporato \fBset\fP è stata abilitata, la ridirezione non ha successo se il file il cui nome risulta dall'espansione di \fIparola\fP esiste ed è un file regolare. Se l'operatore di ridirezione è \fB>|\fP, o l'operatore di ridirezione è \fB>\fP e l'opzione \fBnoclobber\fP del comando incorporato \fBset\fP non è abilitata, la ridirezione è tentata anche se il file denominato da \fIparola\fP esiste. .SS "Accodare l'output ridiretto" La ridirezione dell'output in questo modalità fa sì che il file il cui nome risulta dall'espansione di \fIparola\fP venga aperto per accodare sul descrittore di file \fIn\fP, o sullo standard output (descrittore di file 1) se \fIn\fP non è specificato. Se il file non esiste viene creato. .PP Il formato generico per accodare l'output è: .RS .PP [\fIn\fP]\fB>>\fP\fIparola\fP .RE .SS "Ridirezione di standard output e standard error" Con questo costrutto, sia l'uscita dello standard output (descrittore di file 1) che quella dello standard error (descrittore di file 2) sono ridirette sul file il cui nome risulta dall'espansione di \fIparola\fP. .PP Vi sono due formati per ridirigere lo standard output e lo standard error: .RS .PP \fB&>\fP\fIparola\fP .RE e .RS \fB>&\fP\fIparola\fP .RE .PP Delle due forme, la prima è quella preferita. Questo è semanticamente equivalente a .RS .PP \fB>\fP\fIparola\fP 2\fB>&\fP1 .RE .PP Usando la seconda forma, \fIparola\fP potrebbe non espandersi a un numero o a \fB\-\fP. Se capita, si applicano altri operatori di ridirezione (vedi \fBDuplicazione dei descrittori di file\fP più avanti) per ragioni di compatibilità. .SS "Accodare Standard Output e Standard Error" Con questo costrutto, sia l'uscita dello standard output (descrittore di file 1) che quella dello standard error (descrittore di file 2) viene accodata al file il cui nome è l'espansione di \fIparola\fP. .PP Il formato per accodare lo standard output e lo standard error è: .RS .PP \fB&>>\fP\fIparola\fP .RE .PP Questo è semanticamente equivalente a .RS .PP \fB>>\fP\fIparola\fP 2\fB>&\fP1 .RE .PP (si veda \fBDuplicazione dei descrittori di file\fP più avanti). .SS "Here Document" Questo tipo di ridirezione istruisce la shell a leggere l'input dall'input corrente, finché non venga incontrata una riga contenente solo \fIdelimitatore\fP (senza alcun carattere blank dopo la parola stessa). Tutte le righe lette fino a quel punto sono quindi usate come standard input (o descrittore di file \fIn\fP se è specificato \fIn\fP) per un comando. .PP Il formato degli here\-document è il seguente: .RS .PP .nf [\fIn\fP]\fB<<\fP[\fB\-\fP]\fIword\fP \fIhere\-document\fP \fIdelimitatore\fP .fi .RE .PP Nessuna espansione di parametro e di variabile, sostituzione di comando, espansione aritmetica o espansione di percorso è effettuata su \fIparola\fP. Se una qualsiasi parte di \fIparola\fP è quotata, il \fIdelimitatore\fP è il risultato della rimozione dei caratteri di quotatura da \fIparola\fP, e le righe nel here\-document non vengono espanse. Se \fIparola\fP non è quotata, tutte le righe del here\-document sono soggette a espansione di parametro, sostituzione di comando ed espansione aritmetica, la sequenza \fB\e\fP è ignorata, e \fB\e\fP deve essere usata per quotare i caratteri \fB\e\fP, \fB$\fP e \fB\`\fP. .PP e l'operatore di ridirezione è \fB<<\-\fP, tutti i caratteri di tabulazione a inizio riga sono eliminati dalle righe in input e dalla riga che contiene \fIdelimitatore\fP. Questo permette che un here\-document dentro uno script di shell possa essere indentato in maniera naturale. .SS "Here String" Una variante degli here document, il formato è: .RS .PP .nf [\fIn\fP]\fB<<<\fP\fIparola\fP .fi .RE .PP La \fIparola\fP è sottoposta a espansione della tilde, espansione di parametro e di variabile, sostituzione di comando, espansione aritmetica e rimozione dei caratteri di quotatura. L'espansione di percorso e la suddivisione in parole non vengono effettuate. Il risultato è dato come una stringa singola, con un newline finale, al comando sul suo standard input (o sul descrittore di file \fIn\fP se viene specificato \fIn\fP. .SS "Duplicazione dei descrittori di file" L'operatore di ridirezione .RS .PP [\fIn\fP]\fB<&\fP\fIparola\fP .RE .PP è usato per duplicare descrittori di file di input. Se \fIparola\fP si espande in una o più cifre, il descrittore di file indicato da \fIn\fP è fatto diventare una copia di quel descrittore di file. Se le cifre in \fIparola\fP non specificano un descrittore di file aperto per l'input, si verifica un errore di ridirezione. Se \fIparola\fP risulta essere, dopo l'espansione, \fB\-\fP, il descrittore di file \fIn\fP viene chiuso. Se \fIn\fP non è specificato, è usato lo standard input (descrittore di file 0). .PP L'operatore .RS .PP [\fIn\fP]\fB>&\fP\fIparola\fP .RE .PP è usato in modo analogo per duplicare i descrittori di file di output. Se \fIn\fP non è specificato, è usato lo standard output (descrittore di file 1). Se le cifre in \fIparola\fP non specificano un descrittore di file aperto in output, si verifica un errore di ridirezione. Se \fIparola\fP risulta essere, dopo l'espansione, \fB\-\fP, il descrittore di file file \fIn\fP viene chiuso.Come caso speciale, se \fIn\fP è omesso, e \fIparola\fP non si espande in una o più cifre o in \fB\-\fP, lo standard output e lo standard error sono ridiretti come descritto in precedenza. .SS "Muovere i descrittori di file" L'operatore di ridirezione .RS .PP [\fIn\fP]\fB<&\fP\fIcifra\fP\fB\-\fP .RE .PP muove il descrittore di file \fIcifra\fP al descrittore di file \fIn\fP, o allo standard input (descrittore di file 0) se \fIn\fP non è specificato. \fIcifra\fP è chiuso dopo essere stato duplicato in \fIn\fP. .PP Analogamente l'operatore di ridirezione .RS .PP [\fIn\fP]\fB>&\fP\fIcifra\fP\fB\-\fP .RE .PP muove il descrittore di file \fIcifra\fP al descrittore di file \fIn\fP, o allo standard output (descrittore di file 1) se \fIn\fP non è specificato. .SS "Apertura di descrittori di file per lettura e scrittura" L'operatore di ridirezione .RS .PP [\fIn\fP]\fB<>\fP\fIparola\fP .RE .PP fa sì che il file il cui nome è l'espansione di \fIparola\fP venga aperto sia in lettura che in scrittura sul descrittore di file \fIn\fP, o sul descrittore di file 0 se \fIn\fP non è specificato. Se il file non esiste, viene creato. .SH ALIAS Gli \fIalias\fP consentono di sostituire una stringa con una parola se usata come prima parola di un comando semplice. La shell mantiene una lista di alias che possono essere impostati e rimossi con i comandi incorporati \fBalias\fP e \fBunalias\fP (si veda .SM \fBCOMANDI INCORPORATI DELLA SHELL\fP più avanti). La prima parola di ogni comando, se non virgolettata, viene controllata per vedere se a essa è associato un alias. Se è questo il caso, la parola è sostituita dal valore dell'alias. I caratteri \fB/\fP, \fB$\fP, \fB\`\fP e \fB=\fP, e ognuno dei \fImetacaratteri\fP della shell o i caratteri di quotatura elencati sopra non possono apparire in un nome di alias. Il testo da sostituire può contenere qualunque input valido per la shell, inclusi i metacaratteri della shell. La prima parola del testo così sostituito è controllata per vedere se contiene alias, ma una parola che coincide con l'alias che si sta espandendo non viene espansa una seconda volta. Questo significa che si può far interpretare \fBls\fP come \fBls \-F\fP, per esempio, e \fBbash\fP non tenta di espandere ulteriormente il testo così sostituito Se l'ultimo carattere del valore di un alias è un \fIblank\fP, allora la successiva parola di comando che segue l'alias è pure controllata per l'espansione di alias. .PP Gli alias sono creati ed elencati con il comando \fBalias\fP e rimossi con il comando \fBunalias\fP. .PP Non vi è alcun meccanismo per usare argomenti nel testo da sostituire. Se servono degli argomenti, si dovrà usare una funzione di shell (si veda .SM \fBFUNZIONI\fP più avanti). .PP Gli alias non sono espansi quando la shell non è interattiva, a meno che l'opzione di shell \fBexpand_aliases\fP non sia impostata mediante \fBshopt\fP (si veda la descrizione di \fBshopt\fP sotto .SM \fBCOMANDI INCORPORATI DELLA SHELL\fP più avanti). .PP Le regole che riguardano la definizione e l'uso degli alias possono facilmente generare confusione. \fBBash\fP legge sempre almeno una riga completa di input, e tutte le righe che costituiscono un comando composto, prima di eseguire qualsiasi comando di quella riga o il comanod composto. Gli alias sono espansi quando un comando è letto, non quando è eseguito. Perciò, una definizione di alias che appaia sulla stessa riga che contiene già un altro comando non ha effetto fino a che non è stata letta la successiva riga di input. I comandi che seguono la definizione di un alias su una data riga non sono influenzati da un nuovo alias. Questo comportamento è un problema anche quando sono eseguite delle funzioni. Gli alias sono espansi quando viene letta una definizione di funzione, non quando la funzione è eseguita, poiché una definizione di funzione è essa stessa un comando. Come conseguenza, gli alias definiti in una funzione sono disponibili solo dopo che quella funzione è eseguita. Per maggior sicurezza, conviene porre sempre le definizioni di alias su una riga separata e non usare \fBalias\fP in comandi composti. .PP Quasi a tutti gli effetti, le finalità per cui sono usati gli alias possono essere raggiunte usando invece funzioni di shell. .SH FUNZIONI Una funzione di shell, definita come descritto prima in .SM \fBGRAMMATICA DELLA SHELL\fP, immagazzina una serie di comandi per una futura esecuzione. Quando il nome di una funzione di shell è usato come un nome di comando semplice, la lista di comandi associati con quel nome di funzione viene eseguita. Le funzioni sono eseguite nel contesto della shell corrente; nessun nuovo processo è creato per interpretarle (a differenza di quanto avviene eseguendo uno script di shell). Quando una funzione è eseguita, gli argomenti passati alla funzione costituiscono i parametri posizionali della funzione stessa. Il parametro speciale \fB#\fP viene aggiornato per riflettere il cambiamento. Il parametro speciale \fB0\fP rimane inalterato. Il primo elemento della variabile .SM \fBFUNCNAME\fP è impostato al nome della funzione durante l'esecuzione della funzione. .PP Tutti gli altri aspetti dell'ambiente di esecuzione della shell sono identici tra una funzione e il suo chiamante con queste eccezioni: la gestione dei segnali .SM \fBDEBUG\fP e \fBRETURN\fP (si veda la descrizione del comando incorporato \fBtrap\fP sotto .SM \fBCOMANDI INCORPORATI DELLA SHELL\fP più avanti), i quali non sono ereditati a meno che alla funzione sia stato dato l'attributo \fBtrace\fP (si veda la descrizione del comando incorporato .SM \fBdeclare\fP più avanti) o l'opzione di shell \fB\-o functrace\fP sia stata abilitata per mezzo del comando incorporato \fBset\fP (nel qual caso tutte le funzioni ereditano la gestione dei segnali \fBDEBUG\fP e \fBRETURN\fP) e la gestione del segnale .SM \fBERR\fP non viene ereditata a meno che l'opzione di shell \fB\-o errtrace\fP sia stata abilitata. .PP Variabili locali alla funzione possono essere dichiarate con il comando incorporato \fBlocal\fP (\fIvariabili locali\fP). Di solito, le variabili e i loro valori sono condivise tra la funzione e il suo chiamante. Se una variabile è dichiarata \fBlocal\fP, l'ambito visibile della variabile è ristretto a quella funzione e ai suoi figli (comprese le funzioni che chiama). .PP Nella descrizione che segue, il \fIambito corrente\fP è la funzione attualmente eseguita. Gli ambiti precedenti sono quelli del chiamante della funzione e così via fino all'ambito «globale» dove la shell non sta eseguendo nessuna funzione. Di conseguenza, una variabile locale nell'ambito corrente è una variabile dichiarata usando i comandi incorporati \fBlocal\fP o \fBdeclare\fP nella funzione attualmente in esecuzione. .PP Le variabili locali oscurano le variabili con lo stesso nome dichiarate negli ambiti precedenti. Per esempio, una variabile locale dichiarata in una funzione nasconde una variabile globale con lo stesso nome; i riferimenti e gli assegnamenti fanno riferimento alla variabile locale, lasciando la variabile globale non modificata. Quando la funzione restituisce un risultato, la variabile globale è nuovamente visibile. .PP La shell usa l'\fIambiente dinamico\fP per controllare la visibilità delle variabili nelle funzioni. Nell'ambiente dinamico le variabili visibili e i loro valori sono il risultato di sequenze di invocazioni di funzioni che hanno causato l'esecuzione della funzione attuale. Il valore della variabile che una funzione vede dipende dal suo valore nel chiamante, se presente, che sia o meno l'ambiente globale o quello di un'altra funzione. Questo è anche il valore che una dichiarazione di variabile locale oscura, e il valore che viene ripristinato quando la funzione ritorna. .PP Per esempio, se una variabile locale \fIvar\fP è dichiarata come locale in una funzione \fIfunc1\fP, e \fIfunc1\fP chiama un'altra funzione \fIfunc2\fP, i riferimenti a \fIvar\fP fatti dall'interno di \fIfunc2\fP si risolveranno nella variabile locale definita in \fIfunc1\fP, oscurando qualsiasi variabile globale denominata \fIvar\fP. .PP Il comando incorporato \fBunset\fP agisce secondo lo stesso ambiente dinamico: se una variabile è locale all'ambiente corrente, \fBunset\fP l'annullerà; altrimenti di riferirà alla variabile in uno degli ambienti chiamanti come descritto sopra. Se una variabile nell'ambiente corrente è annullata, rimarrà così (cioè annullata) finché non viene ripristinata nello stesso ambiente o fino al ritorno della funzione. Una volta che la funzione ritorna, qualsiasi eventuale istanza di variabile dell'ambiente precedente tornerà ad essere visibile. Se l'annullamento agisce su una variabile di un ambiente precedente, verrà nuovamente resa visibile una qualsiasi variabile che era stata oscurata (si veda oltre come l'opzione di shell \fBlocalvar_unset\fP influenza questo comportamento). .PP La variabile \fBFUNCNEST\fP, se impostata a un valore numerico maggiore di 0, definisce un livello massimo di nidificazione. Le invocazioni di funzione eccedenti tale limite provocano l'interruzione dell'intero comando. .PP Se il comando incorporato \fBreturn\fP è eseguito in una funzione, la funzione termina e l'esecuzione riprende con il comando che viene subito dopo la chiamata di funzione. Qualsiasi comando associato con la gestione del segnale \fBRETURN\fP viene eseguito prima di riprendere l'esecuzione. Quando una funzione termina i valori dei parametri posizionali e il parametro speciale \fB#\fP sono ripristinati ai valori che avevano prima dell'esecuzione della funzione. .PP I nomi delle funzioni e le definizioni possono essere elencati con l'opzione \fB\-f\fP dei comandi incorporati \fBdeclare\fP o \fBtypeset\fP. L'opzione \fB\-F\fP di \fBdeclare\fP o \fBtypeset\fP elenca solo i nomi di funzione (e opzionalmente il file d'origine e il numero di riga, se l'opzione di shell \fBextdebug\fP è abilitata). Le funzioni possono essere esportate, in modo che le shell figlie (quelle create eseguendo ulteriori invocazioni di shell) le trovino automaticamente già definite con l'opzione \fB\-f\fP del comando incorporato \fBexport\fP. Una definizione di funzione può essere cancellata usando l'opzione \fB\-f\fP del comando incorporato \fBunset\fP. .PP Le funzioni possono essere ricorsive. La variabile \fBFUNCNEST\fP può essere usata per limitare la profondità dello stack della chiamata di funzione e restringere il numero di invocazioni della funzione. Come impostazione predefinita, nessun limite è posto sul numero di chiamate ricorsive. .SH "VALUTAZIONE ARITMETICA" La shell permette di calcolare espressioni aritmetiche, sotto certe circostanze (si veda i comandi incorporati \fBlet\fP e \fBdeclare\fP, il comando composto \fB((\fP e \fBEspansione aritmetica\fP). Il calcolo viene fatta usando interi a larghezza fissa, senza controllo di supero della capacità, sebbene la divisione per 0 sia intercettata e segnalata come errore. Gli operatori e la loro precedenza, associatività e valori, sono gli stessi del linguaggio C. La seguente lista di operatori è raggruppata per operatori di uguale livello di precedenza. I livelli sono elencati in ordine di precedenza decrescente. .PP .PD 0 .TP \fIid\fP\fB++ \fP\fIid\fP\fB\-\-\fP post\-incremento e post\-decremento di una variabile .TP \fB\- +\fP meno e più unari .TP \fB++\fP\fIid\fP\fB \-\-\fP\fIid\fP pre\-incremento e pre\-decremento di una variabile .TP \fB! ~\fP negazione logica e "bit a bit" .TP \fB**\fP elevamento a potenza .TP \fB* / %\fP moltiplicazione, divisione, modulo .TP \fB+ \-\fP addizione, sottrazione .TP \fB<< >>\fP scorrimento "bit a bit" a sinistra e a destra .TP \fB<= >= < >\fP confronto .TP \fB== !=\fP uguaglianza e differenza .TP \fB&\fP AND "bit a bit" .TP \fB^\fP OR esclusivo "bit a bit" .TP \fB|\fP OR "bit a bit" .TP \fB&&\fP AND logico .TP \fB||\fP OR logico .TP \fIespr\fP\fB?\fP\fIespr\fP\fB:\fP\fIespr\fP operatore condizionale .TP \fB= *= /= %= += \-= <<= >>= &= ^= |=\fP assegnamento .TP \fIespr1\fP\fB , \fP\fIespr2\fP virgola .PD .PP Le variabili di shell possono essere usate come operandi; l'espansione di parametro è effettuata prima della valutazione dell'espressione. All'interno di un'espressione, le variabili di shell possono essere referenziate anche per nome senza bisogno di usare la sintassi di espansione di parametro. Una variabile di shell nulla o rimossa ha valore 0 se referenziata per nome senza l'uso della sintassi di espansione di parametro. Il valore di una variabile è valutato come un'espressione aritmetica quando è referenziata, o quando a una variabile a cui è stato dato l'attributo \fIinteger\fP con \fBdeclare \-i\fP è stato assegnato un valore. Un valore nullo viene considerato come 0. Non c'è bisogno di dichiarare come \fIintera\fP una variabile di shell per poterla usare in un'espressione. .PP Le costanti intere seguono la definizione del linguaggio C, senza suffissi o o costanti di tipo carattere. Le costanti che iniziano per 0 sono interpretate come numeri ottali. Uno 0x o 0X iniziale si usa per indicare numeri esadecimali. Altrimenti, i numeri prendono la forma [\fIbase#\fP]n, dove l'opzionale \fIbase\fP è un numero decimale tra 2 e 64 che definisce la base aritmetica, e \fIn\fP è un numero espresso in quella base. Se \fIbase#\fP è omessa, è usata la base 10. Quando si specifica \fIn\fP, se è richiesto un carattere che non sia una cifra, le cifre maggiori di 9 sono rappresentate dalle lettere minuscole, dalle lettere maiuscole, e da @ e _, in quest'ordine. Se la \fIbase\fP è minore o uguale a 36, le lettere minuscole e maiuscole possono essere usate indifferentemente per rappresentare numeri compresi tra 10 e 35. .PP Gli operatori sono valutati in ordine di precedenza. Le subespressioni tra parentesi sono valutate prima e possono prevalere sulle regole di precedenza di cui sopra. .SH "ESPRESSIONI CONDIZIONALI" Le espressioni condizionali sono usate dal comando composto \fB[[\fP e dai comandi incorporati \fBtest\fP e \fB[\fP per verificare attributi di file ed effettuare comparazioni aritmetiche e fra stringhe. I comandi \fBtest\fP e \fB[\fP determinano il loro comportamento basato sul numero d argomenti; si veda la descrizione di questi comandi per ogni altra azione specifica del comando. .PP Le espressioni sono formate dalle seguenti primitive unarie o binarie. \fBBash\fP manipola parecchi nomi\-file specialmente quando sono usati in espressioni. Se il sistema operativo nel quale \fBBash\fP è in esecuzione fornisce questi file speciali, bash userà quelli; altrimenti li emulerà internamente con questo comportamento: se qualsiasi argomento di \fIfile\fP di una delle primitive è della forma \fI/dev/fd/n\fP, il descrittore di file \fIn\fP viene controllato. Se l'argomento di \fIfile\fP di una delle primitive è uno tra \fI/dev/stdin\fP, \fI/dev/stdout\fP o \fI/dev/stderr\fP, il descrittore di file 0, 1 o 2, rispettivamente, viene controllato. .PP Se non diversamente specificato, le primitive che operano su file utilizzano eventuali collegamenti simbolici e operano sul file puntato dal collegamento simbolico, invece che sul collegamento simbolico stesso. .if t .sp 0.5 .if n .sp 1 Quando vengono usati con \fB[[\fP, gli operatori \fB<\fP e \fB>\fP ordinano lessicograficamente usando la localizzazione corrente. Il comando \fBtest\fP usa l'ordinamento ASCII. .sp 1 .PD 0 .TP \fB\-a \fP\fIfile\fP Vero se \fIfile\fP esiste. .TP \fB\-b \fP\fIfile\fP Vero se \fIfile\fP esiste ed è un file speciale a blocchi. .TP \fB\-c \fP\fIfile\fP Vero se \fIfile\fP esiste ed è un file speciale a caratteri. .TP \fB\-d \fP\fIfile\fP Vero se \fIfile\fP esiste ed è una directory. .TP \fB\-e \fP\fIfile\fP Vero se \fIfile\fP esiste. .TP \fB\-f \fP\fIfile\fP Vero se \fIfile\fP esiste ed è un file normale. .TP \fB\-g \fP\fIfile\fP Vero se \fIfile\fP esiste ed è impostato il suo bit set\-group\-id. .TP \fB\-h \fP\fIfile\fP Vero se \fIfile\fP esiste ed è un collegamento simbolico. .TP \fB\-k \fP\fIfile\fP Vero se \fIfile\fP ha il suo \*(lqsticky\*(rq bit impostato. .TP \fB\-p \fP\fIfile\fP Vero se \fIfile\fP esiste ed è una named pipe (FIFO). .TP \fB\-r \fP\fIfile\fP Vero se \fIfile\fP esiste ed è leggibile. .TP \fB\-s \fP\fIfile\fP Vero se \fIfile\fP esiste ed è di dimensione maggiore di zero byte. .TP \fB\-t \fP\fIfd\fP Vero se il descrittore di file \fIfd\fP è aperto e si tratta di un terminale. .TP \fB\-u \fP\fIfile\fP Vero se \fIfile\fP esiste ed è impostato il suo bit set\-user\-id. .TP \fB\-w \fP\fIfile\fP Vero se \fIfile\fP esiste ed è scrivibile. .TP \fB\-x \fP\fIfile\fP Vero se \fIfile\fP esiste ed è eseguibile. .TP \fB\-G \fP\fIfile\fP Vero se \fIfile\fP esiste ed è di proprietà del gruppo effettivo dell'utente. .TP \fB\-L \fP\fIfile\fP Vero se \fIfile\fP esiste ed è un collegamento simbolico. .TP \fB\-N \fP\fIfile\fP Vero se \fIfile\fP esiste ed è stato modificato dall'ultima volta che è stato letto. .TP \fB\-O \fP\fIfile\fP Vero se \fIfile\fP esiste ed è di proprietà dell'id utente effettivo. .TP \fB\-S \fP\fIfile\fP Vero se \fIfile\fP esiste ed è un socket. .TP \fIfile1\fP \fB\-ef\fP \fIfile2\fP Vero se \fIfile1\fP e \fIfile2\fP fanno riferimento allo stesso dispositivo e agli stessi numeri di inode. .TP \fIfile1\fP \-\fBnt\fP \fIfile2\fP Vero se \fIfile1\fP è più recente (come data di modifica) di \fIfile2\fP o se \fIfile1\fP esiste e \fIfile2\fP no. .TP \fIfile1\fP \-\fBot\fP \fIfile2\fP Vero se \fIfile1\fP è più vecchio di \fIfile2\fP, o se \fIfile2\fP esiste e \fIfile1\fP no. .TP \fB\-o \fP\fIoptname\fP Vero se l'opzione di shell \fIoptname\fP è abilitata. Si veda l'elenco delle opzioni sotto la descrizione dell'opzione \fB\-o\fP al comando incorporato \fBset\fP più avanti. .TP \fB\-v \fP\fIvarname\fP Vero se la variabile di shell \fIvarname\fP è impostata (le è stato assegnato un valore). .TP \fB\-R \fP\fIvarname\fP Vero se la variabile di shell \fIvarname\fP è impostata (le è stato assegnato un valore) ed è un riferimento a un nome. .TP \fB\-z \fP\fIstringa\fP Vero se la lunghezza di \fIstringa\fP è zero. .TP \fIstringa\fP .PD 0 .TP \fB\-n \fP\fIstringa\fP .PD Vero se la lunghezza di \fIstringa\fP è diversa da zero. .TP \fIstringa1\fP \fB==\fP \fIstringa2\fP .PD 0 .TP \fIstringa1\fP \fB=\fP \fIstringa2\fP .PD Vero se le stringhe sono uguali. Col comando \fBtest\fP dovrebbe essere usato \fB=\fP per conformità con lo standard POSIX. Quando è usato col comando \fB[[\fP, effettua la ricerca di corrispondenze come descritto precedentemente (\fBComandi composti\fP). .TP \fIstringa1\fP \fB!=\fP \fIstringa2\fP Vero se le stringhe non sono uguali. .TP \fIstringa1\fP \fB<\fP \fIstringa2\fP Vero se, lessicograficamente, \fIstringa1\fP precede come ordine \fIstringa2\fP. .TP \fIstringa1\fP \fB>\fP \fIstringa2\fP Vero se, lessicograficamente, \fIstringa1\fP segue come ordine \fIstringa2\fP. .TP \fIarg1 \fP\fBOP\fP\fI arg2\fP .SM \fBOP\fP è uno tra \fB\-eq\fP, \fB\-ne\fP, \fB\-lt\fP, \fB\-le\fP, \fB\-gt\fP o \fB\-ge\fP. Questi operatori aritmetici binari risultano veri se \fIarg1\fP è, rispettivamente, uguale, non uguale, minore, minore o uguale, maggiore, o maggiore o uguale ad \fIarg2\fP. \fIArg1\fP e \fIarg2\fP possono essere numeri interi positivi o negativi. Quando è usato col comando \fB[[\fP, \fIArg1\fP e \fIArg2\fP sono valutati come espressioni aritmetiche (vedi .SM \fBVALUTAZIONE ARITMETICA\fP sopra). .PD .SH "ESPANSIONE DI COMANDO SEMPLICE" Quando viene eseguito un comando semplice la shell effettua le seguenti espansioni, assegnamenti e ridirezioni, da sinistra a destra, nel seguente ordine. .IP 1. Le parole che l'analizzatore ha individuato essere assegnamenti di variabile (quelle che precedono il nome di comando) oppure ridirezioni vengono messe da parte per un'elaborazione successiva. .IP 2. Le parole che non sono assegnamenti di variabile o ridirezioni sono espanse. Se è presente qualche parola dopo l'espansione, la prima parola è considerata essere il nome del comando e le rimanenti parole come argomenti dello stesso. .IP 3. Le ridirezioni sono effettuate come descritte prima sotto .SM \fBRIDIREZIONE\fP. .IP 4. Il testo dopo \fB=\fP in ogni assegnamento di variabile è sottoposto a espansione della tilde, sostituzione di comando, espansione aritmetica e rimozione dei caratteri di quotatura prima di venir assegnato alla variabile. .PP Se non risulta nessun nome di comando, gli assegnamenti di variabile influenzano l'ambiente di shell corrente. In questo caso (un comando che consista di assegnamenti e ridirezioni) gli assegnamenti sono effettuati prima delle ridirezioni. Altrimenti, le variabili sono aggiunte all'ambiente del comando eseguito senza influenzare l'ambiente di shell corrente. Se uno qualsiasi degli assegnamenti tenta di assegnare un valore a una variabile in sola lettura, si verifica un errore e il comando è terminato con uno stato diverso da zero. .PP Se non risulta nessun nome di comando le ridirezioni sono effettuate ma senza influenzare l'ambiente di shell corrente. Se si verifica un errore di ridirezione il comando è terminato con uno stato diverso da zero. .PP Se è rimasto un nome di comando dopo l'espansione, l'esecuzione procede come descritto sotto. Altrimenti, il comando esce. Se una delle espansioni conteneva una sostituzione di comando lo stato di uscita del comando è lo stato d'uscita dell'ultima sostituzione di comando eseguita. Se non ci sono state sostituzioni di comando il comando esce con uno stato d'uscita di zero. .SH "ESECUZIONE DI UN COMANDO" Dopo che un comando è stato suddiviso in parole, se esso risulta essere un comando semplice e di una lista opzionale di argomenti, sono eseguite le seguenti azioni. .PP Se il nome del comando non contiene barra [/], la shell tenta di localizzarla. Se esiste una funzione di shell con quel nome, viene invocata quella funzione, come descritto prima in .SM \fBFUNZIONI\fP. Se il nome non corrisponde a una funzione, la shell lo cerca nella lista dei comandi incorporati della shell. Se ne viene trovato uno corrispondente, viene invocato quel comando incorporato. .PP Se il nome non è né una funzione di shell né un comando incorporato, e non contiene alcuna barra [/], \fBbash\fP cerca tra gli elementi della variabile .SM \fBPATH\fP una directory che contenga un file eseguibile con quel nome. \fBBash\fP usa una tabella hash [indicizzata] per ricordare i percorsi completi dei file eseguibili (si veda \fBhash\fP sotto .SM \fBCOMANDI INCORPORATI DELLA SHELL\fP più avanti). Una ricerca completa nelle directory in .SM \fBPATH\fP è effettuata solo se il comando non viene trovato nella tabella hash. Se la ricerca non ha successo, la shell cerca una funzione di shell, già definita, chiamata \fBcommand_not_found_handle\fP. Se questa funzione esiste, viene invocata in un ambiente di esecuzione separato col comando originale e gli argomenti di quest'ultimo come suoi argomenti, e lo stato d'uscita della funzione diventa lo stato d'uscita di quella subshell. Se quella funzione non è definita, la shell stampa un messaggio di errore e ritorna uno stato d'uscita di 127. .PP Se la ricerca ha successo, o se il nome del comando contiene uno o più barre [/], la shell esegue il programma indicato in un ambiente di esecuzione separato. L'argomento 0 è impostato al nome specificato, e i rimanenti argomenti del comando sono impostati agli argomenti specificati, se presenti. .PP Se quest'esecuzione non ha successo perché il file non è in formato eseguibile e il file non è una directory, si suppone che sia uno \fIscript di shell\fP, cioè un file che contiene comandi di shell, e viene generata una nuova shell per eseguirlo. Questa subshell reinizializza se stessa, così che l'effetto è come se fosse stata invocata una nuova shell per gestire lo script, con la differenza che la lista delle posizioni dei comandi ricordati dalla shell genitore (si veda \fBhash\fP più avanti sotto .SM \fBCOMANDI INCORPORATI DELLA SHELL\fP) sono disponibili anche alla shell figlia. .PP Se il programma è un file che inizia con \fB#!\fP, il resto della prima riga del file stesso specifica un interprete da invocare. La shell esegue l'interprete specificato su sistemi operativi che non gestiscono questo formato eseguibile essi stessi. Gli argomenti per l'interprete consistono di un singolo argomento opzionale che segue il nome dell'interprete sulla prima riga del programma, seguito dal nome del programma, seguito dagli argomenti forniti al comando, se ve ne sono. .SH "AMBIENTE DI ESECUZIONE DEL COMANDO" La shell ha un \fIambiente di esecuzione\fP, costituito da: .IP \(bu file aperti ereditati dalla shell all'invocazione, come modificati dalle ridirezioni fornite al comando incorporato \fBexec\fP .IP \(bu la corrente directory di lavoro come impostata da \fBcd\fP, \fBpushd\fP o \fBpopd\fP, o ereditata dalla shell all'invocazione .IP \(bu la maschera del modo di creazione dei file come impostata da \fBumask\fP o ereditata dalla shell genitrice .IP \(bu i segnali da intercettare impostati da \fBtrap\fP .IP \(bu parametri di shell che sono stati impostati da un assegnamento di variabile o con \fBset\fP, o ereditati dalla shell genitrice nell'ambiente .IP \(bu funzioni di shell definite durante l'esecuzione o ereditate dalla shell genitrice nell'ambiente .IP \(bu opzioni abilitate all'invocazione (sia in modo predefinito che con argomenti da riga di comando) o da \fBset\fP .IP \(bu opzioni abilitate da \fBshopt\fP .IP \(bu alias di shell definiti da \fBalias\fP .IP \(bu vari ID di processo, inclusi quelli dei job in background, il valore di \fB$$\fP e il valore di .SM \fBPPID\fP .PP Quando un comando semplice, diverso da una funzione incorporata o da una funzione di shell, dev'essere eseguito, viene invocato in un ambiente di esecuzione separato che comprende tutto quello che viene illustrato qui di seguito. Se non altrimenti notato, i valori sono ereditati dalla shell. .if n .sp 1 .IP \(bu i file aperti della shell, più qualsiasi modificazione e aggiunta specificata dalle ridirezioni al comando .IP \(bu la directory di lavoro corrente .IP \(bu la maschera del modo di creazione dei file .IP \(bu variabili di shell e funzioni dichiarate esportabili, insieme alle variabili esportate per il comando, passate nell'ambiente .IP \(bu i segnali da intercettare come da comando trap dalla shell sono riportati ai valori ereditati dalla shell genitrice, e i segnali ignorati dalla shell vengono ignorati .PP Un comando invocato in quest'ambiente separato non può influenzare l'ambiente di esecuzione della shell [genitrice]. .PP Una \fIsubshell\fP è una copia del processo shell. .PP Sostituzione di comando, comandi raggruppati fra parentesi e comandi asincroni sono invocati in un ambiente di subshell che è un duplicato dell'ambiente di shell, con l'eccezione che i segnali intercettati dalla shell sono riportati ai valori che la shell eredita dalla shell genitrice all'invocazione. I comandi incorporati che sono invocati come parte di una pipeline sono anch'essi eseguiti in un ambiente di subshell. Modifiche fatte all'ambiente di subshell non possono influenzare l'ambiente di esecuzione della shell [genitrice]. .PP Le subshell create per eseguire sostituzioni di comando ereditano il valore dell'opzione \fB\-e\fP dalla shell genitrice. Quando non è in \fImodalità posix\fP, \fBbash\fP toglie l'opzione \fB\-e\fP in tali subshell. .PP Se un comando è invocato da un \fB&\fP e il job\-control non è attivo, lo standard input predefinito per il comando è il file vuoto \fI/dev/null\fP. Altrimenti il comando invocato eredita i descrittori di file della shell chiamante come modificati dalle ridirezioni. .SH AMBIENTE Quando viene invocato un programma gli viene dato un vettore di stringhe chiamato insieme delle variabili di \fIambiente\fP. Questa è una lista di coppie \fInome\fP\-\fIvalore\fP, della forma \fInome\fP=\fIvalore\fP. .PP La shell consente di manipolare l'ambiente in molti modi. All'invocazione, la shell esamina il suo ambiente e crea un parametro per ogni nome trovato, marcandolo automaticamente per essere \fIesportato\fP ai processi figli. I comandi eseguiti ereditano l'ambiente. I comandi \fBexport\fP e \fBdeclare \-x\fP permettono di aggiungere o togliere dall'ambiente parametri e funzioni. Se il valore di un parametro d'ambiente viene modificato, il nuovo valore diventa parte dell'ambiente, sostituendo il valore precedente. L'ambiente ereditato da qualsiasi comando eseguito è costituito dall'ambiente iniziale della shell, i cui valori possono essere modificati nella shell, diminuiti di ogni coppia rimossa dal comando \fBunset\fP, e aumentati da ogni aggiunta attraverso i comandi \fBexport\fP e \fBdeclare \-x\fP. .PP L'ambiente per qualsiasi \fIcomando semplice\fP o funzione può essere ampliato temporaneamente premettendo degli assegnamenti di parametro al comando stesso, come descritto prima in .SM \fBPARAMETRI\fP. Queste istruzioni di assegnamento influenzano solo l'ambiente utilizzato da quel comando. .PP Se è impostata l'opzione \fB\-k\fP (si veda il comando incorporato \fBset\fP più avanti), \fItutti\fP gli assegnamenti di parametro sono resi disponibili nell'ambiente del comando, non solo quelli che precedono il nome del comando. .PP Quando \fBbash\fP invoca un comando esterno, la variabile \fB_\fP viene impostata al nome completo del percorso del comando, e passato a quel comando nel suo ambiente. .SH "STATO DI USCITA" Lo stato d'uscita di un comando eseguito è il valore ritornato dalla chiamata di sistema \fIwaitpid\fP o da una funzione equivalente. Gli stati d'uscita ricadono nell'intervallo fra 0 e 255 anche se, come spiegato più avanti, la shell può usare valori superiori a 125 in casi particolari. Anche gli stati d'uscita dei comandi incorporati della shell e dei comandi composti sono circoscritti in questo intervallo. In casi particolari la shell usa valori speciali per indicare specifiche situazioni di insuccesso. .PP Ai fini della shell, un comando che termina con uno stato d'uscita zero ha avuto successo. Uno stato d'uscita pari a zero indica successo. Uno stato d'uscita diverso da zero indica errore. Quando un comando termina su un segnale fatale \fIN\fP, \fBbash\fP usa il valore di 128+\fIN\fP come stato d'uscita. .PP Se un comando non viene trovato, il processo figlio creato per eseguirlo ritorna uno stato pari a 127. Se un comando viene trovato ma non è eseguibile lo stato di ritorno è 126. .PP Se un comando non ha successo a causa di un errore durante l'espansione o la ridirezione, lo stato d'uscita è maggiore di zero. .PP I comandi incorporati della shell restituiscono uno stato di 0 (\fIvero\fP) in caso di successo, e diverso da zero (\fIfalso\fP) in caso di errore durante l'esecuzione. Tutti i comandi incorporati restituiscono uno stato d'uscita di 2 per indicare l'uso scorretto, generalmente opzioni non valide o argomenti mancanti. .PP Lo stato di uscita dell'ultimo comando è disponibile nel parametro speciale $?. .PP \fBBash\fP stessa ritorna lo stato d'uscita dell'ultimo comando eseguito, a meno che non avvenga un errore di sintassi, nel qual caso essa esce con un valore diverso da zero. Si veda anche il comando incorporato \fBexit\fP più avanti. .SH SEGNALI Quando \fBbash\fP è interattiva, in assenza di ogni segnale da intercettare col comando trap, ignora .SM \fBSIGTERM\fP (così che \fBkill 0\fP non uccide una shell interattiva), e .SM \fBSIGINT\fP viene intercettato e gestito (così che il comando incorporato \fBwait\fP è interrompibile). In tutti i casi, \fBbash\fP ignora .SM \fBSIGQUIT\fP. Se si usa il job\-control, \fBbash\fP ignora .SM \fBSIGTTIN\fP, .SM \fBSIGTTOU\fP e .SM \fBSIGTSTP\fP. .PP I comandi non incorporati invocati da \fBbash\fP hanno i gestori di segnali impostati sui valori ereditati dalla shell dalla sua genitrice. Quando non si usa il job\-control, i comandi asincroni ignorano .SM \fBSIGINT\fP e .SM \fBSIGQUIT\fP. in aggiunta a questi gestori ereditati. I comandi eseguiti come risultato di una sostituzione di comando ignorano i segnali di job\-control generati da tastiera .SM \fBSIGTTIN\fP, .SM \fBSIGTTOU\fP e .SM \fBSIGTSTP\fP. .PP Come comportamento predefinito, la shell esce al ricevimento di un .SM \fBSIGHUP\fP. Prima di uscire, una shell interattiva ri\-invia un segnale .SM \fBSIGHUP\fP a tutti i job (richiesti tramite job\-control), in esecuzione o sospesi. Ai job sospesi viene inviato un segnale .SM \fBSIGCONT\fP per essere sicuri che ricevano il segnale .SM \fBSIGHUP\fP. Per prevenire l'invio del segnale da parte della shell a un particolare job, quest'ultimo dovrebbe essere rimosso dalla tabella dei job col comando incorporato \fBdisown\fP (si veda .SM \fBCOMANDI INCORPORATI DELLA SHELL\fP più avanti) o contrassegnato per non ricevere .SM \fBSIGHUP\fP usando \fBdisown \-h\fP. .PP Se l'opzione di shell \fBhuponexit\fP è stata impostata con \fBshopt\fP, \fBbash\fP invia un segnale .SM \fBSIGHUP\fP a tutti i job quando una shell di login interattiva esce. .PP Se \fBbash\fP è in attesa che un comando finisca e riceve un segnale per il quale è stato impostata un'intercettazione di segnale, il comando relativo alla gestione del segnale viene eseguito solo al termine del comando. Quando \fBbash\fP è in attesa della fine di un comando asincrono attraverso il comando incorporato \fBwait\fP, la ricezione di un segnale per il quale un'intercettazione di segnale è stata impostata fa sì che il comando incorporato \fBwait\fP termini immediatamente con uno stato d'uscita maggiore di 128, e immediatamente dopo viene innescata la gestione del segnale intercettato. .PP Quando il controllo dei job non è abilitato e \fBbash\fP è in attesa che il comando attivo termini, la shell riceve i segnali controllati dalla tastiera come .SM \fBSIGINT\fP (normalmente generato da \fB^C\fP) che gli utenti normalmente vogliono inviare al comando. Questo succede perché la shell e il comando sono nello stesso gruppo di processi del terminale, e \fB^C\fP invia .SM \fBSIGINT\fP a tutti i processi del gruppo di processi. .PP Quando \fBbash\fP è eseguita con il controllo dei job non abilitato e riceve .SM \fBSIGINT\fP mentre attende che il processo corrente termini, continua ad attendere che il comando termini e poi decide come reagire a .SM \fBSIGINT\fP: .IP 1. Se il comando termina a causa di .SM \fBSIGINT\fP, \fBbash\fP deduce che l'utente volesse terminare l'esecuzione dell'intero script e reagisce a .SM \fBSIGINT\fP (cioè, esegue le trap di .SM \fBSIGINT\fP esce essa stessa); .IP 2. Se il comando termina a seguito del .SM \fBSIGINT\fP, allora il programma gestisce .SM \fBSIGINT\fP in autonomia senza trattarlo come segnale fatale. In questo caso neppure \fBbash\fP tratta .SM \fBSIGINT\fP come segnale fatale, ma assume che .SM \fBSIGINT\fP sia stato usato come parte di una normale operazione del programma (p.es., emacs lo usa per interrompere l'immissione di un comando) oppure sia stato deliberatamente ignorato. In ogni caso \fBbash\fP eseguirà tutti i comandi trap definiti per .SM \fBSIGINT\fP, così come fa per qualsiasi altro segnale gestito da trap mentre è in attesa che il comando in esecuzione termini, per compatibilità. .SH JOB\-CONTROL Il termine \fIjob\-control\fP si riferisce alla capacità di fermare (\fIsospendere\fP) selettivamente l'esecuzione di processi e continuare (\fIriprendere\fP) la loro esecuzione in seguito. Tipicamente, un utente utilizza questa possibilità attraverso un'interfaccia interattiva costituita congiuntamente dal driver del terminale del kernel del sistema operativo e da \fBbash\fP. .PP La shell associa un \fIjob\fP a ogni pipeline. Essa mantiene una tabella dei job correntemente in esecuzione, che può essere visualizzata con il comando \fBjobs\fP. Quando \fBbash\fP avvia un job in modo asincrono (in \fIbackground\fP), stampa una riga tipo: .RS .PP [1] 25647 .RE .PP che indica che questo job è il job numero 1 e che l'ID di processo dell'ultimo processo nella pipeline associata a questo job è 25647. Tutti i processi in una singola pipeline fanno parte dello stesso job. \fBBash\fP usa l'astrazione \fIjob\fP come base per il job\-control. .PP Per facilitare l'implementazione dell'interfaccia utente per il job\-control, il sistema mantiene la nozione di \fIID del gruppo di processi del terminale corrente\fP. I membri di questo gruppo di processo (processi il cui ID del gruppo di processo è uguale all'ID del gruppo di processo del terminale corrente) ricevono segnali generati da tastiera, come .SM \fBSIGINT\fP. Si dice che questi processi sono in \fIprimo piano\fP (foreground \- oppure sincroni). I processi in \fIbackground\fP (sullo sfondo \- oppure asincroni) sono quelli il cui ID del gruppo di processo differisce da quello del terminale; tali processi sono immuni dai segnali generati da tastiera. Solo ai processi in primo piano è permesso di leggere o, se l'utente l'ha specificato con \f(CWstty tostop\fP, scrivere sul terminale. Ai processi nascosti che tentano di leggere dal terminale (o scriverci sopra quando \f(CWstty tostop\fP è in azione) è inviato un segnale .SM \fBSIGTTIN (SIGTTOU)\fP dal driver del terminale del kernel, che, se non intercettato, sospende il processo. .PP Se il sistema operativo sul quale \fBbash\fP è in esecuzione supporta il job\-control, \fBbash\fP è in grado di utilizzarlo. Battere il carattere di \fIsospensione\fP (tipicamente \fB^Z\fP, Control\-Z) mentre un processo è in esecuzione, provoca la sospensione di quel processo e restituisce il controllo a \fBbash\fP. Battere il carattere di \fIsospensione ritardata\fP (tipicamente \fB^Y\fP, Control\-Y) provoca la sospensione del processo quando questo tenta di leggere input dal terminale, e la restituzione del controllo a \fBbash\fP. Si può poi cambiare lo stato di questo job, usando il comando \fBbg\fP per continuarlo in background, il comando \fBfg\fP per riportarlo in primo piano, o il comando \fBkill\fP per farlo terminare. Un \fB^Z\fP ha effetto immediatamente, e ha l'effetto collaterale di causare la perdita dell'output in sospeso e del "type ahead" (caratteri immessi a terminale ma non ancora passati al programma). .PP Vi sono diversi modi per riferirsi a un job nella shell. Il carattere \fB%\fP designa una specifica di job (\fIjobspec\fP). Un job con numero \fIn\fP può essere indicato come \fB%n\fP. Un job può anche essere indicato usando un prefisso del nome usato per avviarlo, o usando una sottostringa che appare nella sua riga di comando. Per esempio, \fB%ce\fP si riferisce a un job sospeso il cui nome di comando inizia con \fBce\fP. Se un prefisso corrisponde a più di un job, \fBbash\fP restituisce un messaggio di errore. L'uso di \fB%?ce\fP, d'altra parte, indica qualsiasi job che contiene la stringa \fBce\fP nella sua riga di comando. Se la sottostringa corrisponde a più di un job, \fBbash\fP restituisce un messaggio di errore. I simboli \fB%%\fP e \fB%+\fP si riferiscono alla nozione della shell del \fIjob corrente\fP, ossia l'ultimo job sospeso mentre era in primo piano o avviato in background. Il \fIjob precedente\fP può essere referenziato usando \fB%\-\fP. Se c'è un solo job, \fB%+\fP e \fB%\-\fP possono essere usati entrambi per far riferimento a quel job. Nell'output che riguarda i job (per esempio, l'output del comando \fBjobs\fP), il job corrente è sempre segnalato con un \fB+\fP, ed il job precedente con un \fB\-\fP. Un singolo % (senza alcuna specificazione associata) è pure un modo per designare il job corrente. .PP La semplice menzione di un job può essere usata per riportarlo in primo piano: \fB%1\fP è un sinonimo per \fB\*(lqfg %1\*(rq\fP, che porta il job 1 dal background al foreground (in primo piano). Nello stesso modo, \fB\*(lq%1 &\*(rq\fP riprende l'esecuzione del job 1 in background, ossia equivale a \fB\*(lqbg %1\*(rq\fP. .PP La shell viene notificata immediatamente ogni volta che un job cambia stato. Normalmente, \fBbash\fP aspetta finché non deve stampare un prompt prima di informare dei cambiamenti nello stato di un job, in modo da non interrompere alcun altro output. Se l'opzione \fB\-b\fP del comando incorporato \fBset\fP è impostata, \fBbash\fP riporta tali cambiamenti immediatamente. Delle eventuali istruzioni di intercettazione del segnale .SM \fBSIGCHLD\fP viene eseguita per ogni processo figlio che esce. .PP Se si tenta di uscire da \fBbash\fP mentre vi sono dei job sospesi(o, se è stata abilitata l'opzione di shell \fBcheckjobs\fP usando il comando incorporato \fBshopt\fP, in esecuzione), la shell stampa un messaggio di avvertimento e, se viene abilitata l'opzione \fBcheckjobs\fP, elenca i job e i loro stati. Si può quindi usare il comando \fBjobs\fP per controllare il loro stato. Se si fa un secondo tentativo per uscire senza immettere alcun altro comando, non si riceve più il messaggio di avvertimento e ogni job sospeso viene terminato. .PP Quando la shell è in attesa di un job o di un processo usando il comando incorporato \fBwait\fP e il job\-control è abilitato, \fBwait\fP ritornerà lo stato di completamento quando il job cambia stato. Con l'opzione \fB\-f\fP \fBwait\fP attende finché il job o il processo termina prima di ritornare. .SH "STRINGHE DI PROMPT" Quando eseguita interattivamente, \fBbash\fP mostra il prompt primario .SM \fBPS1\fP quando è pronta per leggere un comando, e il prompt secondario .SM \fBPS2\fP quando è in attesa di altro input per completare un comando. \fBBash\fP mostra .SM \fBPS0\fP dopo aver letto un comando ma prima di eseguirlo. \fBBash\fP mostra .SM \fBPS4\fP come descritto sopra prima di tracciare ciascun comando quando è abilitata l'opzione \fB\-x\fP. \fBBash\fP permette di personalizzare queste stringhe di prompt inserendo un certo numero di caratteri speciali preceduti dalla barra inversa che sono decodificati come segue: .RS .PD 0 .TP \fB\ea\fP un carattere ASCII di campanello (07) .TP \fB\ed\fP la data nel formato "Giorno\-della\-settimana Mese Giorno" (ad es., "Tue May 26") .TP \fB\eD{\fP\fIformato\fP\fB}\fP il \fIformato\fP viene passato a \fIstrftime\fP(3) e il risultato è inserito nella stringa di prompt; un \fIformato\fP vuoto genera una rappresentazione di data/ora specifica della localizzazione. Le parentesi graffe sono obbligatorie .TP \fB\ee\fP un carattere ASCII di escape (033) .TP \fB\eh\fP il nome dell'host fino al primo `.' .TP \fB\eH\fP il nome dell'host .TP \fB\ej\fP il numero di job attualmente gestiti dalla shell .TP \fB\el\fP il basename del terminale in cui è eseguita la shell .TP \fB\en\fP newline [su una nuova riga] .TP \fB\er\fP ritorno carrello .TP \fB\es\fP il nome della shell, il basename di \fB$0\fP (la parte che segue l'ultima barra [/]) .TP \fB\et\fP l'ora corrente nel formato HH:MM:SS 24 ore .TP \fB\eT\fP l'ora corrente nel formato HH:MM:SS 12 ore .TP \fB\e@\fP l'ora corrente nel formato am/pm 12 ore .TP \fB\eA\fP l'ora corrente nel formato HH:MM 24 ore .TP \fB\eu\fP il nome\-utente dell'utente corrente .TP \fB\ev\fP la versione di \fBbash\fP (ad es., 2.00) .TP \fB\eV\fP la release di \fBbash\fP, versione + livello di patch (ad es., 2.00.0) .TP \fB\ew\fP il valore della variabile di shell \fBPWD\fP (\fB$PWD\fP), con .SM \fB$HOME\fP abbreviato da una tilde (usa il valore della variabile .SM \fBPROMPT_DIRTRIM\fP) .TP \fB\eW\fP il nome senza il percorso completo di \fB$PWD\fP, con .SM \fB$HOME\fP abbreviato con una tilde .TP \fB\e!\fP il numero nella cronologia del comando attuale .TP \fB\e#\fP il numero di comando del comando attuale .TP \fB\e$\fP se l'UID effettivo è 0, un \fB#\fP, altrimenti un \fB$\fP .TP \fB\e\fP\fInnn\fP il carattere [ASCII] che corrisponde al numero ottale \fInnn\fP .TP \fB\e\e\fP una barra inversa .TP \fB\e[\fP marca l'inizio di una sequenza di caratteri non stampabili, che può essere usata per includere nel prompt una sequenza di controllo del terminale .TP \fB\e]\fP marca la fine di una sequenza di caratteri non stampabili .PD .RE .PP Il numero del comando e il numero nella cronologia sono generalmente differenti: il numero della cronologia di un comando è la sua posizione nella lista della cronologia, la quale può includere comandi preesistenti nel file di cronologia (si veda .SM \fBCRONOLOGIA\fP più avanti), mentre il numero del comando è la posizione nella sequenza dei comandi eseguiti durante la corrente sessione di shell. Dopo che la stringa è decodificata, essa è espansa attraverso l'espansione di parametro, la sostituzione di comando, l'espansione aritmetica e la rimozione dei caratteri di quotatura, secondo quanto specificato dal valore dell'opzione di shell \fBpromptvars\fP (si veda più avanti la descrizione del comando \fBshopt\fP in .SM \fBCOMANDI INCORPORATI DELLA SHELL\fP). Questo può avere degli effetti collaterali indesiderati se porzioni della stringa protette appaiono all'interno di una sostituzione di comando o contengono caratteri speciali all'espansione di parola. .SH READLINE Questa è la libreria che gestisce la lettura dell'input quando si usa una shell interattiva, a meno che non si specifichi l'opzione \fB\-\-noediting\fP all'invocazione della shell. La modifica di riga è usata anche quando viene passata l'opzione \fB\-e\fP al comando incorporato \fBread\fP. Come comportamento predefinito, i comandi per l'editor della riga comandi sono simili a quelli di Emacs. È anche disponibile un'interfaccia per editor di riga in stile vi. La modifica di riga può essere abilitata in ogni momento con le opzioni \fB\-o emacs\fP o \fB\-o vi\fP del comando incorporato \fBset\fP (si veda .SM \fBCOMANDI INCORPORATI DELLA SHELL\fP più avanti). Per chiudere l'editor di riga dopo l'esecuzione della shell utilizzare l'opzione \fB+o emacs\fP o \fB+o vi\fP del comando incorporato \fBset\fP. .SS "Notazione readline" In questa sezione, si usa la notazione in stile Emacs per indicare i tasti da battere. I tasti di controllo sono indicati da C\-\fItasto\fP, per esempio, C\-n significa Control\-N. In modo simile, i \fImeta\fP tasti sono indicati da M\-\fItasto\fP, cioè M\-x significa Meta\-X. (Sulle tastiere senza un tasto \fImeta\fP, M\-\fIx\fP significa ESC \fIx\fP, cioè, si preme il tasto Escape e poi il tasto \fIx\fP. Questo rende ESC il \fImeta prefisso\fP. La combinazione M\-C\-\fIx\fP significa ESC\-Control\-\fIx\fP, ossia si preme il tasto Escape poi si tiene il tasto Control mentre si preme il tasto \fIx\fP). .PP Ai comandi readline possono essere specificati \fIargomenti\fP numerici, che normalmente sono dei contatori di ripetizione. A volte, tuttavia, è il segno dell'argomento a essere significativo. Passando un argomento negativo a un comando che agisce in avanti (ad es., \fBkill\-line\fP), il comando agisce nella direzione opposta. I comandi il cui comportamento con gli argomenti è diverso da questo sono indicati più avanti. .PP Quando un comando è descritto come \fIeliminazione\fP di testo, il testo cancellato viene salvato per un possibile riutilizzo futuro (\fIyanking\fP). Il testo eliminato viene salvato in un \fIkill\-ring\fP. Eliminazioni consecutive provocano l'accumulazione del testo in una unità, che può essere recuperata tutta in una volta. Comandi che non eliminano testo separano parti di testo nel kill\-ring. .SS "Inizializzazione di Readline" Readline è personalizzata inserendo comandi in un file di inizializzazione (il file \fIinputrc\fP). Il nome di questo file è preso dal valore della variabile .SM \fBINPUTRC\fP. Se questa variabile non è definita il valore predefinito è \fI~/.inputrc\fP. Se quel file non esiste o non può essere letto, il valore predefinito ultimo è \fI/etc/inputrc\fP. Quando un programma che usa la libreria readline viene avviato, viene letto il file di inizializzazione, e vengono impostate le associazioni di tasti e assegnate le variabili. Ci sono solo alcuni costrutti base consentiti nel file d'inizializzazione di readline. Le righe vuote sono ignorate. Le righe che iniziano con un \fB#\fP sono commenti. Le righe che iniziano con un \fB$\fP indicano costrutti condizionali. Le altre righe indicano associazioni di tasti e impostazioni di variabili. .PP Le associazioni di tasti predefiniti possono essere cambiate con un file \fIinputrc\fP. Altri programmi che usano questa libreria possono aggiungere i loro propri comandi e associazioni. .PP Per esempio, porre .RS .PP M\-Control\-u: universal\-argument .RE o .RS C\-Meta\-u: universal\-argument .RE nel file \fIinputrc\fP farebbe eseguire a M\-C\-u il comando della readline \fIuniversal\-argument\fP. .PP Sono riconosciuti i seguenti nomi simbolici di carattere: \fIRUBOUT\fP, \fIDEL\fP, \fIESC\fP, \fILFD\fP, \fINEWLINE\fP, \fIRET\fP, \fIRETURN\fP, \fISPC\fP, \fISPACE\fP e \fITAB\fP. .PP In aggiunta al nome del comando, readline consente che a un tasto corrisponda una stringa che è inserita quando quel tasto è premuto (una \fImacro\fP). .SS "Associazioni di tasti readline" La sintassi per il controllo delle associazioni dei tasti nel file \fIinputrc\fP è semplice. Tutto quel che è richiesto è il nome del comando o il testo di una macro e una sequenza di tasti alla quale dovrà essere associato. Il nome può essere specificato in uno di due modi: come nome simbolico di un tasto, eventualmente con i prefissi \fIMeta\-\fP o \fIControl\-\fP, o come una sequenza di tasti. .PP Quando si usa la forma \fBnome\-tasto\fP:\^\fInome\-funzione\fP o \fImacro\fP, \fInome\-tasto\fP è il nome di un tasto in inglese. Per esempio: .sp .RS Control\-u: universal\-argument .br Meta\-Rubout: backward\-kill\-word .br Control\-o: "> output" .RE .LP Negli esempi precedenti, \fIC\-u\fP viene collegato alla funzione \fBuniversal\-argument\fP, \fIM\-DEL\fP viene collegato alla funzione \fBbackward\-kill\-word\fP, e \fIC\-o\fP viene collegato all'esecuzione della macro indicata sul lato destro (cioè, inserire il testo .if t \f(CW> output\fP .if n ``> output'' nella riga). .PP Nella seconda forma, \fB"sequenza\-tasti"\fP:\^\fInome\-funzione\fP o \fImacro\fP, \fBsequenza\-tasti\fP differisce da \fBnome\-tasto\fP visto sopra, per il fatto che la stringa che denota un'intera sequenza di tasti può essere specificata ponendo la sequenza fra virgolette. Alcuni tasti di protezione (escape) nello stile GNU Emacs possono essere usati, come nei seguenti esempi, ma i nomi simbolici dei caratteri non si possono utilizzare. .sp .RS "\eC\-u": universal\-argument .br "\eC\-x\eC\-r": re\-read\-init\-file .br "\ee[11~": "Function Key 1" .RE .PP In questo esempio, \fIC\-u\fP viene ancora collegato alla funzione \fBuniversal\-argument\fP. \fIC\-x C\-r\fP viene collegato alla funzione \fBre\-read\-init\-file\fP, e \fIESC [ 1 1 ~\fP viene collegato all'inserimento del testo .if t \f(CWFunction Key 1\fP. .if n ``Function Key 1''. .PP L'insieme completo delle sequenze di protezione (escape) in stile GNU Emacs è .RS .PD 0 .TP \fB\eC\-\fP prefisso control .TP \fB\eM\-\fP prefisso meta .TP \fB\ee\fP un carattere di escape .TP \fB\e\e\fP barra inversa .TP \fB\e"\fP il carattere " .TP \fB\e\(aq\fP il carattere \(aq .RE .PD .PP In aggiunta alle sequenze di protezione che iniziano col tasto escape in stile GNU Emacs, è disponibile un secondo insieme di sequenze di protezione che iniziano con la barra inversa: .RS .PD 0 .TP \fB\ea\fP avviso (segnale acustico) .TP \fB\eb\fP backspace .TP \fB\ed\fP cancella [delete \- tasto Del o Canc] .TP \fB\ef\fP salto pagina .TP \fB\en\fP newline [su una nuova riga] .TP \fB\er\fP ritorno carrello .TP \fB\et\fP tabulazione orizzontale .TP \fB\ev\fP tabulazione verticale .TP \fB\e\fP\fInnn\fP il carattere a otto bit il cui valore è il valore ottale \fInnn\fP (da una a tre cifre) .TP \fB\ex\fP\fIHH\fP il carattere a otto bit il cui valore è il valore esadecimale \fIHH\fP (una o due cifre esadecimali) .RE .PD .PP Quando si inserisce il testo di una macro, apostrofi o virgolette devono essere usati per indicare una definizione di macro. Un testo non quotato si suppone che sia un nome di funzione. Nel corpo della macro, i segni di protezione \fB\e\fP descritti prima vengono espansi. La barra inversa quota qualsiasi altro carattere nel testo della macro, inclusi " e \(aq. .PP \fBBash\fP permette di mostrare o modificare le associazioni correnti dei tasti di readline con il comando incorporato \fBbind\fP. La modalità di modifica può essere cambiata durante l'uso interattivo usando l'opzione \fB\-o\fP del comando incorporato \fBset\fP (si veda .SM \fBCOMANDI INCORPORATI DELLA SHELL\fP più avanti). .SS "Variabili readline" Readline ha delle variabili che possono essere usate per personalizzare ulteriormente il suo comportamento. Una variabile può essere impostata nel file \fIinputrc\fP con un'istruzione della forma .RS .PP \fBset\fP \fInome\-variabile\fP \fIvalore\fP .RE o usando il comando incorporato \fBbind\fP (si veda .SM \fBCOMANDI INCORPORATI DELLA SHELL\fP più avanti). .PP Tranne dove diversamente indicato, le variabili di readline possono avere i valori \fBOn\fP o \fBOff\fP (senza distinzione fra maiuscole e minuscole). I nomi di variabile non riconosciuti vengono ignorati. Quando viene letto un valore di variabile, i valori vuoti o nulli, "on" (senza distinzione fra maiuscole e minuscole) o "1" sono equivalenti a \fBOn\fP. Tutti gli altri valori sono equivalenti a \fBOff\fP. Le variabili e i loro valori predefiniti sono: .PP .PD 0 .TP \fBactive\-region\-start\-color\fP Una variabile stringa che controlla il colore del testo e dello sfondo quando si mostra del testo nella regione attiva (vedere la descrizione di \fBenable\-active\-region\fP più avanti). Questa stringa non deve prendere una posizione fisica sullo schermo, quindi deve solo consistere in sequenze escape di terminale. Viene inviata al terminale prima di mostrare del testo nella regione attiva. Questa variabile è reimpostata al valore predefinito quando il tipo di terminale cambia. Il valore predefinito è la stringa che mette il terminale il modalità evidenziata (standout), così come ottenuta della descrizione di terminfo del terminale. Un valore di esempio è \f(CW"\ee[01;33m"\fP. .TP \fBactive\-region\-end\-color\fP Una variabile stringa che ripristina gli effetti di \fBactive\-region\-start\-color\fP e riporti il terminale alla condizione normale dopo aver mostrato del testo nella regione attiva. Questa stringa non deve prendere una posizione fisica sullo schermo, quindi deve solo consistere in sequenze escape di terminale. Viene inviata al terminale dopo aver mostrato del testo nella regione attiva. Questa variabile è reimpostata al valore predefinito quando il tipo di terminale cambia. Il valore predefinito è la stringa che ripristina il terminale dopo la modalità evidenziata (standout), così come ottenuta della descrizione di terminfo del terminale. Un valore di esempio è \f(CW"\ee[0m"\fP. .TP \fBbell\-style (audible)\fP Controlla cosa succede se readline vuole usare il segnalatore acustico del terminale. Se impostato a \fBnone\fP, readline non emette alcun segnale. Se impostato a \fBvisible\fP, readline usa un segnalatore visivo se disponibile. Se impostato a \fBaudible\fP, readline tenta di attivare il segnalatore acustico del terminale. .TP \fBbind\-tty\-special\-chars (On)\fP Se impostato a \fBOn\fP, readline tenta di associare i caratteri di controllo trattati in modo speciale dal driver del terminale nel kernel agli equivalenti degli stessi come descritti da readline. .TP \fBblink\-matching\-paren (Off)\fP Se impostato a \fBOn\fP, readline tenta di muovere rapidamente il cursore verso una parentesi aperta quando è inserita una parentesi chiusa. .TP \fBcolored\-completion\-prefix (Off)\fP Se impostato a \fBOn\fP, quando elenca i completamenti, readline visualizza il prefisso comune della serie dei possibili completamenti usando un colore diverso. La definizione dei colori viene presa dal valore della variabile d'ambiente \fBLS_COLORS\fP. Se in \fB$LS_COLORS\fP c'è una definizione per il suffisso personalizzato "readline\-colored\-completion\-prefix", allora readline usa questo colore per il prefisso comune al posto di quello predefinito. .TP \fBcolored\-stats (Off)\fP Se impostata a \fBOn\fP, readline visualizza i possibili completamenti usando colori diversi per indicare il tipo di file. Le definizioni dei colori sono prese dalla variabile d'ambiente \fBLS_COLORS\fP. .TP \fBcomment\-begin (\*(lq#\*(rq)\fP La stringa che è inserita quando è eseguito il comando \fBinsert\-comment\fP. Questo comando è associato a \fBM\-#\fP in modalità comandi Emacs e a \fB#\fP in modalità comandi di vi. .TP \fBcompletion\-display\-width (\-1)\fP Il numero di colonne sullo schermo per visualizzare le possibili corrispondenze quando si effettua il completamento. Il valore è ignorato se è minore di 0 o maggiore della dimensione dello schermo. Con un valore di 0 viene visualizzata una corrispondenza per riga. Il valore predefinito è \-1. .TP \fBcompletion\-ignore\-case (Off)\fP Se impostato a \fBOn\fP, readline effettua l'individuazione dei nomi\-file e il completamento senza distinguere le lettere maiuscole dalle lettere minuscole. .TP \fBcompletion\-map\-case (Off)\fP Se impostato a \fBOn\fP, e \fBcompletion\-ignore\-case\fP è abilitato, readline tratta i trattini (\fI\-\fP) e i trattini bassi (\fI_\fP) come equivalenti quando effettua una ricerca e completamento di nomi\-file senza distinzione di minuscolo/maiuscolo. .TP \fBcompletion\-prefix\-display\-length (0)\fP La lunghezza in caratteri del prefisso comune di una lista di possibili completamenti che è visualizzata senza modifiche. Quando è impostata a un valore maggiore di zero, i prefissi comuni più lunghi di questo valore sono rimpiazzati da puntini di sospensione quando vengono visualizzati possibili completamenti. .TP \fBcompletion\-query\-items (100)\fP Questo determina a che punto interpellare l'utente per visualizzare i possibili completamenti generati dal comando \fBpossible\-completions\fP. Può essere impostato a un numero intero maggiore o uguale a zero. Se il numero di possibili completamenti è maggiore o uguale al valore di questa variabile, readline chiederà se l'utente desidera vederli o no; altrimenti essi sono semplicemente elencati sul terminale. Il valore zero indica che readline non deve mai chiedere; valori negativi sono trattati come lo zero. .TP \fBconvert\-meta (On)\fP Se impostato a \fBOn\fP, readline converte i caratteri con l'ottavo bit uguale a 1 a una sequenza di caratteri ASCII eliminando l'ottavo bit e aggiungendo come prefisso un carattere di protezione (in pratica, usando l'escape come il \fIprefisso meta\fP). Il predefinito è \fBOn\fP, ma readline lo imposterà a \fBOff\fP se la localizzazione contiene caratteri a otto bit. Questa variabile dipende dalla categoria di localizzazione \fBLC_CTYPE\fP, e può cambiare alla modifica della localizzazione. .TP \fBdisable\-completion (Off)\fP Se impostato a \fBOn\fP, readline inibisce il completamento della parola. I caratteri di completamento saranno inseriti nella riga come se fossero stati mappati come \fBself\-insert\fP. .TP \fBecho\-control\-characters (On)\fP Quando è impostato a \fBOn\fP, sui sistemi operativi che lo supportano, readline visualizza un carattere corrispondente a un segnale generato dalla tastiera. .TP \fBediting\-mode (emacs)\fP Controlla se readline parte con un insieme di associazioni di tasti simile a \fIEmacs\fP o \fIvi\fP. \fBediting\-mode\fP (modalità di modifica) può essere impostato a \fBemacs\fP o a \fBvi\fP. .TP \fBemacs\-mode\-string (@)\fP Se la variabile \fIshow\-mode\-in\-prompt\fP è abilitata, questa stringa viene mostrata immediatamente prima dell'ultima riga del prompt primario nel caso che sia attiva la modalità di editing di emacs. Il valore è espanso come una combinazione di tasti, quindi i prefissi standard meta\- e quello di controllo e le sequenze escape con backslash sono disponibili. Usare gli escape \e1 e \e2 per iniziare e terminare sequenze di caratteri non stampabili, che possono essere usate per inserire sequenze di controllo del terminale nella stringa di modalità. .TP \fBenable\-active\-region (On)\fP Il \fIpunto\fP è la posizione attuale del cursore, e \fIsegno\fP si riferisce ad una posizione del cursore salvata. Il testo tra il punto e il segno viene denominato come \fIregione\fP. Quando questa variabile è impostata a \fIOn\fP, readline permette a certi comandi di impostare come \fIattiva\fP la regione. Quando la regione è attiva, readline evidenzia il testo nella regione usando \fBactive\-region\-start\-color\fP, che ha come valore predefinito il testo che mette il terminale in modalità evidenziata. La regione attiva mostra il testo inserito come incollato senza interpretazione (bracketed\-paste) e ogni testo corrispondente a ricerche incrementali e non incrementali. .TP \fBenable\-bracketed\-paste (On)\fP Quando impostato a \fBOn\fP, readline configura il terminale perché ogni volta che si incolli dagli appunti nel buffer di modifica questo avvenga per l'intera stringa senza interpretarla, cioè senza trattare ogni carattere come se fosse stato inserito da tastiera. Questo impedisce a readline di eseguire comandi altrimenti attivati da sequenze di caratteri presenti nel testo incollato. .TP \fBenable\-keypad (Off)\fP Quando impostato a \fBOn\fP, readline tenta di abilitare il tastierino numerico se viene utilizzato. Alcuni sistemi richiedono questo per abilitare i tasti\-freccia. .TP \fBenable\-meta\-key (On)\fP Quando è impostato a \fBOn\fP, readline tenta di abilitare qualsiasi meta tasto modificatore che il terminale dichiara di supportare quando viene chiamato. Su molti terminali il meta tasto è usato per inviare caratteri a otto bit. .TP \fBexpand\-tilde (Off)\fP Se impostato a \fBOn\fP, l'espansione della tilde è effettuata quando readline tenta il completamento della parola. .TP \fBhistory\-preserve\-point (Off)\fP Se impostato a \fBOn\fP, il codice che implementa la cronologia tenta di piazzare il cursore nel punto in cui si trovava su ogni riga della cronologia visualizzata con \fBprevious\-history\fP o \fBnext\-history\fP. .TP \fBhistory\-size (unset)\fP Definisce il numero massimo di voci salvate nella cronologia. Se impostata a zero, vengono cancellate tutte le voci esistenti e nessuna nuova voce viene salvata. Se impostata a un numero minore di zero, il numero di registrazioni è illimitato. Come impostazione predefinita, il numero di voci di cronologia è impostato al valore della variabile di shell \fBHISTSIZE\fP. Se si tenta di impostare \fIhistory\-size\fP a un valore non numerico, il numero massimo di voci della cronologia sarà 500. .TP \fBhorizontal\-scroll\-mode (Off)\fP Quando impostato a \fBOn\fP, richiede a readline di usare una sola riga per la visualizzazione, facendo scorrere l'input in orizzontale su una sola riga dello schermo quando essa risulti più lunga della larghezza dello schermo, invece che andando a capo su una nuova riga. Quest'impostazione è abilitata automaticamente nei terminali di altezza 1. .TP \fBinput\-meta (Off)\fP Se impostato a \fBOn\fP, readline abilita l'input a otto bit (cioè, non toglie l'ottavo bit dai caratteri che legge), indipendentemente da quello che il terminale dichiara di supportare. Il nome \fBmeta\-flag\fP è un sinonimo per questa variabile. Il predefinito è \fBOff\fP, ma readline lo imposterà a \fBOn\fP se la localizzazione contiene caratteri a otto bit. Questa variabile dipende dalla categoria della localizzazione \fBLC_CTYPE\fP e può cambiare al variare della localizzazione. .TP \fBisearch\-terminators (\*(lqC\-[C\-J\*(rq)\fP Una stringa di caratteri che fa terminare una ricerca incrementale senza eseguire successivamente il carattere come se fosse un comando. Se a questa variabile non è stato dato un valore, i caratteri \fIESC\fP e \fIC\-J\fP fanno terminare una ricerca incrementale. .TP \fBkeymap (emacs)\fP Imposta la mappa corrente dei tasti di readline. Il set dei nomi validi per le mappe dei tasti è \fIemacs, emacs\-standard, emacs\-meta, emacs\-ctlx, vi, vi\-command\fP e \fIvi\-insert\fP. \fIvi\fP è equivalente a \fIvi\-command\fP; \fIemacs\fP è equivalente a \fIemacs\-standard\fP. Il valore predefinito è \fIemacs\fP; il valore di \fBediting\-mode\fP determina anche la mappa dei tasti predefiniti. .TP \fBkeyseq\-timeout (500)\fP Specifica quanto tempo \fIreadline\fP attenderà un carattere quando legge una sequenza di tasti ambigua (una che può formare una sequenza di tasti completa usando l'input letto finora, o può accettare un input aggiuntivo per completare una sequenza di tasti più lunga). Se non riceve nessun input entro il tempo limite, \fIreadline\fP userà la sequenza di tasti più corta tra quelle possibili. Il valore è specificato in millisecondi, cosicché un valore di 1000 vuol dire che \fIreadline\fP attenderà un secondo per un input aggiuntivo. Se questa variabile è impostata a un valore minore o uguale a zero, o a un valore non numerico, \fIreadline\fP attenderà fino a che non sia premuto un altro tasto per decidere quale sequenza di tasti completare. .TP \fBmark\-directories (On)\fP Se impostata a \fBOn\fP, ai nomi delle directory completate è aggiunta una barra [/] alla fine. .TP \fBmark\-modified\-lines (Off)\fP Se impostato a \fBOn\fP, le righe della cronologia che sono state modificate sono mostrate precedute da un asterisco (\fB*\fP). .TP \fBmark\-symlinked\-directories (Off)\fP Se impostato a \fBOn\fP, i nomi completati che sono collegamenti simbolici a directory hanno una barra [/] alla fine (se richiesto tramite \fBmark\-directories\fP). .TP \fBmatch\-hidden\-files (On)\fP Questa variabile, se impostata a \fBOn\fP, fa sì che readline mostri anche i file i cui nomi iniziano con un `.' (file nascosti) quando effettua il completamento del nome\-file. Se impostata a \fBOff\fP, il `.' iniziale dev'essere fornito dall'utente come parte del nome\-file da completare. .TP \fBmenu\-complete\-display\-prefix (Off)\fP Se impostato a \fBOn\fP, il completamento del menù visualizza il prefisso comune della lista di possibili completamenti (che può essere vuota) prima di scorrere ciclicamente la lista. .TP \fBoutput\-meta (Off)\fP Se impostato a \fBOn\fP, readline mostra i caratteri con l'ottavo bit impostato direttamente, piuttosto che con una sequenza di protezione avente come prefisso meta. Il predefinito è \fBOff\fP, ma readline lo imposterà a \fBOn\fP se la localizzazione contiene caratteri a otto bit. Questa variabile è influenzata dalla categoria di localizzazione \fBLC_CTYPE\fP e può cambiare se la localizzazione cambia. .TP \fBpage\-completions (On)\fP Se impostato a \fBOn\fP, readline usa un paginatore interno simile a \fImore\fP per mostrare i possibili completamenti una schermata alla volta. .TP \fBprint\-completions\-horizontally (Off)\fP Se impostato a \fBOn\fP, readline mostra i completamenti ordinati in ordine alfabetico orizzontalmente, piuttosto che dall'alto in basso. .TP \fBrevert\-all\-at\-newline (Off)\fP Se impostato a \fBOn\fP, readline annulla tutte le modifiche alle righe della cronologia prima di ritornare, quando viene eseguito \fBaccept\-line\fP. In modo predefinito, le righe della cronologia possono essere modificate e mantengono liste dei singoli annullamenti mediante chiamate a \fBreadline\fP. .TP \fBshow\-all\-if\-ambiguous (Off)\fP Questo cambia il comportamento predefinito delle funzioni di completamento. Se impostato a \fBOn\fP, le parole che hanno più di un possibile completamento provocano la visualizzazione immediata delle coincidenze invece che l'attivazione del segnalatore acustico. .TP \fBshow\-all\-if\-unmodified (Off)\fP Questo cambia il comportamento predefinito delle funzioni di completamento in maniera simile a \fBshow\-all\-if\-ambiguous\fP. Se impostato a \fBOn\fP, le parole che hanno più di un possibile completamento senza alcun possibile completamento parziale (ovvero i possibili completamenti non hanno alcun prefisso in comune) sono elencate immediatamente invece che provocare l'attivazione del segnalatore acustico. .TP \fBshow\-mode\-in\-prompt (Off)\fP Se impostata a \fBOn\fP, aggiunge una stringa all'inizio del prompt che indica la modalità di modifica: emacs (@), vi comando (:) o vi inserimento (+). Le stringhe della modalità sono impostabili dall'utente (p.es. \fIemacs\-mode\-string\fP). .TP \fBskip\-completed\-text (Off)\fP Se impostato a \fBOn\fP, altera il comportamento predefinito del completamento quando viene inserita una corrispondenza nella riga. È attivo solo quando si effettua il completamento a metà di una parola. Se abilitato, readline non inserisce, dopo il completamento della parola, caratteri provenienti dal completamento che corrispondono ai caratteri della parola da completare che si trovano dopo il cursore; in tal modo porzioni di parola che seguono il cursore non vengono duplicati. .TP \fBvi\-cmd\-mode\-string ((cmd))\fP Se la variabile \fIshow\-mode\-in\-prompt\fP è abilitata, questo testo viene mostrato immediatamente prima dell'ultima riga del prompt primario quando è attiva la modalità vi e si è in modalità comando. Il valore è espanso come una combinazione tasti, quindi il normale insieme di prefissi meta\- e control\- e le sequenze escape sono disponibili. Usare le sequenze \e1 e \e2 come escape per l'inizio e la fine di sequenze di caratteri non visualizzabili, che possono essere usate per includere sequenze di controllo del terminale nel testo mode\-string. .TP \fBvi\-ins\-mode\-string ((ins))\fP Se la variabile \fIshow\-mode\-in\-prompt\fP è abilitata, questo testo viene mostrato immediatamente prima dell'ultima riga del prompt primario quando è attiva la modalità vi e si è in modalità inserimento. Il valore è espanso come una combinazione tasti, quindi il normale insieme di prefissi meta\- e control\- e le sequenze escape sono disponibili. Usare le sequenze \e1 e \e2 come escape per l'inizio e la fine di sequenze di caratteri non visualizzabili, che possono essere usate per includere sequenze di controllo del terminale nel testo mode\-string. .TP \fBvisible\-stats (Off)\fP Se impostato a \fBOn\fP, un carattere che denota un tipo di file come riportato da \fIstat\fP(2) è accodato al nome\-file durante l'elencazione dei possibili completamenti. .PD .SS "Costrutto condizionale di readline" Readline implementa un servizio simile, nello spirito, a quello della compilazione condizionale nel preprocessore C, e che permette di effettuare associazioni di tasti e impostazioni di variabili in base al risultato di test. Vi sono tre direttive di controllo usate. .IP \fB$if\fP Il costrutto \fB$if\fP permette che le associazioni siano fatte in base alla modalità di modifica, al terminale in uso o all'applicazione che fa uso di readline. Il testo da verificare, dopo qualsiasi operatore di confronto, arriva fino alla fine della riga; a meno che non sia diversamente specificato, nessun carattere che lo delimiti è richiesto. .RS .IP \fBmode\fP La forma \fBmode=\fP della direttiva \fB$if\fP è usata per verificare se readline è in modo emacs o vi. Questo può essere usato in congiunzione con il comando \fBset keymap\fP, per esempio, per impostare le associazioni delle mappe dei tasti di \fIemacs\-standard\fP e \fIemacs\-ctlx\fP solo se readline è avviata in modo emacs. .IP \fBterm\fP La forma \fBterm=\fP può essere usata per includere associazioni di tasti specifiche per un terminale, magari per associare le sequenze di tasti emesse dai tasti funzione dei terminali. La parola a destra dell' \fB=\fP viene confrontata con il nome completo del terminale e la parte del nome del terminale che precede il primo \fB\-\fP. Questo permette, ad esempio, a \fIsun\fP di trovare una corrispondenza sia con \fIsun\fP che con \fIsun\-cmd\fP. .IP \fBversion\fP Il test \fBversion\fP può essere usato per effettuare confronti su versioni specifiche di readline. \fBversion\fP viene espanso che la versione di readline corrente. L'insieme di operatori di confronto include \fB=\fP, (e \fB==\fP), \fB!=\fP, \fB<=\fP, \fB>=\fP, \fB<\fP e \fB>\fP. Il numero di versione fornito alla destra dell'operatore consiste del numero maggiore della versione, un punto decimale opzione e il numero minore di versione, sempre opzionale (es. \fB7.1\fP). Se la versione minore è omessa, viene assunto che sia \fB0\fP. L'operatore può essere separato dalla stringa \fBversion\fP e dal numero di versione con spazi. .IP \fBapplication\fP Il costrutto \fBapplication\fP è usato per includere impostazioni specifiche per un'applicazione. Ogni programma che usa la libreria readline imposta il \fInome applicazione\fP, e un file di inizializzazione può poi fare un test per un particolare valore. Questo può essere usato per associare sequenze di tasti a funzioni utili per uno specifico programma. Per esempio, il comando seguente aggiunge una sequenza di tasti che quota la parola corrente o la parola precedente in \fBbash\fP: .sp 1 .RS .nf \fB$if\fP Bash # Quota la parola corrente o precedente "\eC\-xq": "\eeb\e"\eef\e"" \fB$endif\fP .fi .RE .IP \fIvariabile\fP Il costrutto \fIvariable\fP fornisce un semplice test di eguaglianza per variabili di readline e valori. Gli operatori di confronto ammessi sono \fI=\fP, \fI==\fP, e \fI!=\fP. Il nome della variabile deve essere separato dall'operatore di confronto da spazi; l'operatore deve essere separato dal valore alla sua destra da spazi. Possono essere confrontate sia variabili booleane che testuali. Le variabili booleane devono essere confrontate con i valori \fIon\fP e \fIoff\fP. .RE .IP \fB$endif\fP Questo comando, come si è visto nell'esempio precedente, fa terminare un comando \fB$if\fP. .IP \fB$else\fP I comandi in questa parte della direttiva \fB$if\fP sono eseguiti se il test non risulta verificato. .IP \fB$include\fP Questa direttiva prende un unico nome\-file come argomento e legge comandi e associazioni da quel file. Per esempio, la seguente direttiva legge \fI/etc/inputrc\fP: .sp 1 .RS .nf \fB$include\fP \^ \fI/etc/inputrc\fP .fi .RE .SS Ricerca Readline è dotato di comandi per cercare nella cronologia dei comandi (si veda .SM \fBCRONOLOGIA\fP più avanti) righe contenenti una stringa specifica. Ci sono due modalità di ricerca: \fIincrementale\fP e \fInon\-incrementale\fP. .PP La ricerca incrementale inizia prima che l'utente abbia finito di immettere la stringa di ricerca. Mentre ogni carattere della stringa di ricerca viene battuto, readline mostra la prima linea dalla cronologia che corrisponde alla stringa battuta finora. Una ricerca incrementale richiede solamente il numero minimo di caratteri necessari per trovare l'elemento della cronologia desiderato. I caratteri presenti nel valore della variabile \fBisearch\-terminators\fP sono usati per delimitare una ricerca incrementale. Se a quella variabile non è stato assegnato un valore, i caratteri di Escape e Control\-J fanno arrestare una ricerca incrementale. Control\-G interrompe una ricerca incrementale e ripristina la riga originale. Quando è terminata la ricerca, l'elemento della cronologia contenente la stringa di ricerca diventa la riga corrente. .PP Per trovare altri elementi nell'elenco della cronologia, battere Control\-S o Control\-R secondo il caso. Viene eseguita così una ricerca all'indietro o in avanti nella cronologia del successivo elemento che corrisponde alla stringa di ricerca che è stata immessa. Ogni altra sequenza di tasti associata a un comando readline pone termine alla ricerca ed esegue il comando presente nella linea. Per esempio, un \fInewline\fP provoca l'interruzione della ricerca e accetta la riga, eseguendo così il comando proveniente dall'elenco della cronologia. .PP Readline ricorda l'ultima stringa di ricerca incrementale. Se due Control\-R vengono battuti senza che siano intervenuti caratteri che definiscono una nuova stringa di ricerca, viene utilizzata la stringa di ricerca memorizzata al momento. .PP Le ricerche non incrementali leggono l'intera stringa di ricerca prima di avviare la ricerca per individuare righe nella cronologia. La stringa di ricerca può essere battuta dall'utente o essere parte del contenuto della riga corrente. .SS "Nomi di comando readline" La seguente è una lista di nomi dei comandi e delle sequenze di tasti predefiniti a cui essi sono collegati. Nomi di comando senza una sequenza di tasti collegata a essi sono scollegati in modo predefinito. Nelle descrizioni seguenti, \fIpunto\fP si riferisce alla posizione corrente del cursore e \fImarca\fP alla posizione del cursore salvata col comando \fBset\-mark\fP. Il testo fra il punto e la marca è indicato come \fIregione\fP. .SS "Comandi di movimento" .PD 0 .TP \fBbeginning\-of\-line (C\-a)\fP Si sposta all'inizio della riga corrente. .TP \fBend\-of\-line (C\-e)\fP Si sposta alla fine della riga. .TP \fBforward\-char (C\-f)\fP Si sposta avanti di un carattere. .TP \fBbackward\-char (C\-b)\fP Si sposta indietro di un carattere. .TP \fBforward\-word (M\-f)\fP Si sposta in avanti fino alla fine della parola successiva. Le parole sono composte di caratteri alfanumerici (lettere e cifre). .TP \fBbackward\-word (M\-b)\fP Si sposta indietro all'inizio della parola corrente o precedente. Le parole sono composte di caratteri alfanumerici (lettere e cifre). .TP \fBshell\-forward\-word\fP Si sposta in avanti fino alla fine della parola successiva. Le parole sono delimitate da metacaratteri di shell non quotati. .TP \fBshell\-backward\-word\fP Si sposta indietro all'inizio della parola corrente o precedente. Le parole sono delimitate da metacaratteri di shell non quotati. .TP \fBprevious\-screen\-line\fP Cerca di spostare il punto alla stessa colonna dello schermo della precedente riga dello schermo. Questo non avrà l'effetto desiderato se l'attuale readline non occupa più di una riga fisica o se il punto non è maggiore della lunghezza del prompt sommata alla larghezza dello schermo. .TP \fBnext\-screen\-line\fP Cerca di spostare il punto alla stessa colonna dello schermo della successiva riga dello schermo. Questo non avrà l'effetto desiderato se l'attuale readline non occupa più di una riga fisica o se il punto non è maggiore della lunghezza del prompt sommata alla larghezza dello schermo. .TP \fBclear\-display (M\-C\-l)\fP Pulisce lo schermo e, se possibile, il buffer per rivedere quanto presente in precedenza (scrollback) sul terminale, poi riscrive la riga corrente, lasciandola in cima allo schermo. .TP \fBclear\-screen (C\-l)\fP Pulisce lo schermo, poi riproduce la riga corrente, lasciando la riga corrente in cima allo schermo. Con un argomento, rilegge la riga corrente senza ripulire lo schermo. .TP \fBredraw\-current\-line\fP Rinfresca la riga corrente. .PD .SS "Comandi per manipolare la cronologia" .PD 0 .TP \fBaccept\-line (Newline, Return)\fP Accetta la riga senza curarsi di dove sia il cursore. Se questa riga non è vuota, è aggiunta alla lista della cronologia in accordo con lo stato della variabile .SM \fBHISTCONTROL\fP. Se la riga è una riga di cronologia modificata, allora ripristina la riga di cronologia al suo stato originale. .TP \fBprevious\-history (C\-p)\fP Prende il precedente comando dalla lista della cronologia, spostandosi indietro nella lista. .TP \fBnext\-history (C\-n)\fP Prende il successivo comando dalla lista della cronologia, spostandosi avanti nella lista. .TP \fBbeginning\-of\-history (M\-<)\fP Si sposta alla prima riga nella cronologia. .TP \fBend\-of\-history (M\->)\fP Si sposta alla fine della cronologia dell'input, cioè, alla riga che si sta inserendo. .TP \fBoperate\-and\-get\-next (C\-o)\fP Accetta la riga corrente per l'esecuzione e prende dalla cronologia la riga successiva a quella corrente, per la modifica. Un argomento numerico, se presente, specifica l'elemento della cronologia da usare al posto della riga corrente. .TP \fBfetch\-history\fP Con un argomento numerico, prende l'elemento dalla cronologia e lo rende riga corrente. Senza argomento, si sposta indietro al prima elemento della cronologia. .TP \fBreverse\-search\-history (C\-r)\fP Cerca all'indietro partendo dalla riga corrente spostandosi in `su' attraverso la cronologia come necessario. Questa è una ricerca incrementale. .TP \fBforward\-search\-history (C\-s)\fP Cerca in avanti partendo dalla riga corrente e spostandosi in `giù' attraverso la cronologia come necessario. Questa è una ricerca incrementale. .TP \fBnon\-incremental\-reverse\-search\-history (M\-p)\fP Cerca all'indietro attraverso la cronologia, partendo dalla riga corrente, una stringa fornita dall'utente, usando una ricerca non incrementale. .TP \fBnon\-incremental\-forward\-search\-history (M\-n)\fP Cerca in avanti attraverso la cronologia una stringa fornita dall'utente, usando una ricerca non incrementale. .TP \fBhistory\-search\-forward\fP Cerca in avanti attraverso la cronologia una stringa di caratteri tra l'inizio della riga corrente e il punto del cursore. Questa è una ricerca non incrementale. .TP \fBhistory\-search\-backward\fP Cerca all'indietro attraverso la cronologia una stringa di caratteri tra l'inizio della riga corrente e il punto del cursore. Questa è una ricerca non incrementale. .TP \fBhistory\-substring\-search\-backward\fP Cerca all'indietro attraverso la cronologia una stringa di caratteri tra l'inizio della riga corrente e la posizione corrente del cursore (il \fIpunto\fP). La stringa di ricerca può cercare corrispondenze dovunque in una riga della cronologia. Questa è una ricerca non incrementale. .TP \fBhistory\-substring\-search\-forward\fP Cerca in avanti attraverso la cronologia una stringa di caratteri tra l'inizio della riga corrente e il punto del cursore. La stringa di ricerca può cercare corrispondenze dovunque in una riga della cronologia. Questa è una ricerca non incrementale. .TP \fByank\-nth\-arg (M\-C\-y)\fP Inserisce il primo argomento del comando precedente (generalmente la seconda parola sulla riga precedente) alla posizione del cursore. Con un argomento \fIn\fP, inserisce la \fIn\fP\-sima parola del comando precedente (le parole nel comando precedente iniziano con la parola 0). Un argomento negativo inserisce la \fIn\fP\-sima parola dalla fine del comando precedente. Una volta che l'argomento \fIn\fP è calcolato, l'argomento è estratto come se l'espansione della cronologia "!\fIn\fP" sia stata specificata. .TP \fByank\-last\-arg (M\-.\^, M\-_\^)\fP Inserisce l'ultimo argomento del comando precedente (l'ultima parola della precedente riga di cronologia). Con un argomento numerico, si comporta esattamente come \fByank\-nth\-arg\fP. Chiamate consecutive a \fByank\-last\-arg\fP percorrono l'elenco della cronologia all'indietro, inserendo ogni volta l'ultima parola (o la parola specificata dall'argomento della prima chiamata) di ogni riga. Qualsiasi argomento numerico fornito a queste chiamate successive determina la direzione di scorrimento nella cronologia. Un argomento negativo commuta la direzione di scorrimento (all'indietro o in avanti). I servizi dell'espansione della cronologia sono usati per estrarre l'ultima parola, come se fosse stata specificata l'espansione della cronologia "!$". .TP \fBshell\-expand\-line (M\-C\-e)\fP Espande la riga nello stesso modo in cui lo fa la shell. Questo espande gli alias e la cronologia così come tutte le parole della shell. Si veda .SM \fBESPANSIONE DELLA CRONOLOGIA\fP più avanti per una descrizione dell'espansione della cronologia. .TP \fBhistory\-expand\-line (M\-^)\fP Effettua l'espansione della cronologia sulla riga corrente. Si veda .SM \fBESPANSIONE DELLA CRONOLOGIA\fP più avanti per una descrizione dell'espansione della cronologia. .TP \fBmagic\-space\fP Effettua l'espansione della cronologia sulla riga corrente e inserisce uno spazio. Si veda .SM \fBESPANSIONE DELLA CRONOLOGIA\fP più avanti per una descrizione dell'espansione della cronologia. .TP \fBalias\-expand\-line\fP Effettua l'espansione degli alias sulla riga corrente. Si veda .SM \fBALIAS\fP sopra per una descrizione dell'espansione degli alias. .TP \fBhistory\-and\-alias\-expand\-line\fP Espande la cronologia e gli alias sulla riga corrente. .TP \fBinsert\-last\-argument (M\-.\^, M\-_\^)\fP Un sinonimo di \fByank\-last\-arg\fP. .TP \fBedit\-and\-execute\-command (C\-x C\-e)\fP Invoca un editor sulla riga di comando corrente ed esegue il risultato come comandi di shell. \fBBash\fP tenta di invocare .SM \fB$VISUAL\fP, .SM \fB$EDITOR\fP e \fIemacs\fP come editor, in quest'ordine. .PD .SS "Comandi per cambiare il testo" .PD 0 .TP \fBfine\-del\-file\fP\fB (generalmente C\-e)\fP Il carattere che indica fine\-del\-file come impostato, per esempio, da .if t \f(CWstty\fP. .if n ``stty''. Se questo carattere viene letto quando non ci sono caratteri sulla riga, e il punto è all'inizio della riga, readline lo interpreta come fine dell'input e ritorna .SM \fBEOF\fP. .TP \fBdelete\-char (C\-d)\fP Cancella il carattere nel punto del cursore. Se questa funzione è associata allo stesso carattere come il carattere \fBEOF\fP della tty, come \fBC\-d\fP normalmente è, si veda sopra per gli effetti. .TP \fBbackward\-delete\-char (Rubout)\fP Cancella il carattere dopo il cursore. Quando è dato un argomento numerico, salva il testo cancellato sul kill\-ring. .TP \fBforward\-backward\-delete\-char\fP Cancella il carattere sotto il cursore, a meno che il cursore non sia alla fine della riga, nel qual caso il carattere dietro al cursore viene cancellato. .TP \fBquoted\-insert (C\-q, C\-v)\fP Aggiunge il successivo carattere battuto sulla riga in modo letterale. Questo è il modo per inserire caratteri come \fBC\-q\fP, per esempio. .TP \fBtab\-insert (C\-v TAB)\fP Inserisce un carattere tab. .TP \fBself\-insert (a,\ b,\ A,\ 1,\ !,\ ...)\fP Inserisce il carattere battuto. .TP \fBtranspose\-chars (C\-t)\fP Trascina il carattere prima del punto del cursore in avanti sopra il carattere nel punto, spostando anche il punto in avanti. Se il punto è alla fine della riga, traspone i due caratteri prima del punto. Argomenti negativi non hanno effetto. .TP \fBtranspose\-words (M\-t)\fP Trascina la parola prima del punto del cursore dopo la parola oltre il punto, spostando inoltre il punto sopra quella parola. Se il punto è alla fine della riga, allora traspone le ultime due parole sulla riga. .TP \fBupcase\-word (M\-u)\fP Rende maiuscola la parola corrente (o seguente). Con un argomento negativo, opera sulla parola precedente, ma non sposta il punto del cursore. .TP \fBdowncase\-word (M\-l)\fP Rende minuscola la parola corrente (o seguente). Con un argomento negativo, opera sulla parola precedente, ma non sposta il punto del cursore. .TP \fBcapitalize\-word (M\-c)\fP Rende maiuscola la prima lettera della parola corrente (o seguente). Con un argomento negativo, opera sulla parola precedente, ma non sposta il punto del cursore. .TP \fBoverwrite\-mode\fP Alterna fra modalità inserimento e modalità di sovrascrittura. Con un argomento numerico esplicito positivo passa alla modalità sovrascrittura. Con un argomento numerico esplicito non positivo passa alla modalità inserimento. Questo comando riguarda solo la modalità \fBemacs\fP; la modalità \fBvi\fP sovrascrive in modo diverso. Ogni chiamata a \fIreadline\fP() viene avviata in modalità inserimento. In modalità sovrascrittura i caratteri associati a \fBself\-insert\fP sostituiscono il testo nel punto del cursore piuttosto che sospingere il testo verso destra. I caratteri associati a \fBbackward\-delete\-char\fP sostituiscono il carattere prima del punto con uno spazio. Questo comando è non associato in modo predefinito. .PD .SS "Eliminazione e recupero" .PD 0 .TP \fBkill\-line (C\-k)\fP Elimina il testo dal punto del cursore fino alla fine della riga. .TP \fBbackward\-kill\-line (C\-x Rubout)\fP Elimina all'indietro fino all'inizio della riga. .TP \fBunix\-line\-discard (C\-u)\fP .\" There is no real difference between this and backward-kill-line Elimina all'indietro dal punto del cursore fino all'inizio della riga. Il testo eliminato viene salvato nel kill\-ring. .TP \fBkill\-whole\-line\fP Elimina tutti i caratteri sulla riga corrente, non importa dove sia il punto del cursore. .TP \fBkill\-word (M\-d)\fP Elimina dal punto del cursore fino alla fine della parola corrente o, se tra parole, fino alla fine della successiva parola. I delimitatori di parola sono gli stessi usati da \fBforward\-word\fP. .TP \fBbackward\-kill\-word (M\-Rubout)\fP Elimina la parola dietro il punto del cursore. I delimitatori di parole sono gli stessi usati da \fBforward\-word\fP. .TP \fBshell\-kill\-word\fP Elimina dal punto del cursore fino alla fine della parola corrente o, se tra parole, fino alla fine della parola successiva. I delimitatori di parola sono gli stessi usati da \fBshell\-forward\-word\fP. .TP \fBshell\-backward\-kill\-word\fP Elimina la parola dietro il punto del cursore. I delimitatori di parola sono gli stessi usati da \fBshell\-backward\-word\fP. .TP \fBunix\-word\-rubout (C\-w)\fP Elimina la parola dietro il punto del cursore, usando gli spazi bianchi come delimitatori di parola. Il testo eliminato è salvato nel kill\-ring. .TP \fBunix\-filename\-rubout\fP Elimina la parola prima del punto del cursore, usando uno spazio bianco e il carattere barra [/] come delimitatori di parola. Il testo eliminato è salvato nel kill\-ring. .TP \fBdelete\-horizontal\-space (M\-\e)\fP Cancella tutti gli spazi e i tab attorno al punto del cursore. .TP \fBkill\-region\fP Elimina il testo nella regione corrente. .TP \fBcopy\-region\-as\-kill\fP Copia il testo nella regione sul kill buffer. .TP \fBcopy\-backward\-word\fP Copia la parola prima del punto del cursore sul kill buffer. I delimitatori di parola sono gli stessi di \fBbackward\-word\fP. .TP \fBcopy\-forward\-word\fP Copia la parola dopo il punto del cursore sul kill buffer. I delimitatori di parola sono gli stessi di \fBforward\-word\fP. .TP \fByank (C\-y)\fP Copia il contenuto in cima al kill\-ring e lo pone nel buffer nel punto del cursore. .TP \fByank\-pop (M\-y)\fP Ruota il kill\-ring, e copia la nuova cima. Funziona solo dopo \fByank\fP o \fByank\-pop\fP. .PD .SS "Argomenti numerici" .PD 0 .TP \fBdigit\-argument (M\-0, M\-1, ..., M\-\-)\fP Aggiunge questa cifra all'argomento che sta già accumulando, o inizia un nuovo argomento. M\-\- avvia un argomento negativo. .TP \fBuniversal\-argument\fP Questo è un altro modo per specificare un argomento. Se il comando è seguito da una o più cifre, opzionalmente con un segno meno iniziale, queste cifre definiscono l'argomento. Se il comando è seguito da cifre, eseguendo \fBuniversal\-argument\fP di nuovo termina l'argomento numerico, ma a parte questo viene ignorato. Come caso speciale, se questo comando è seguito immediatamente da un carattere che non è né una cifra né un segno meno, il contatore degli argomenti per il comando successivo è moltiplicato per quattro. Il contatore è inizialmente uno, così eseguendo questa funzione la prima volta il contatore diventa quattro, la seconda volta il contatore diventa sedici, e così via. .PD .SS Completamento .PD 0 .TP \fBcomplete (TAB)\fP Tenta di effettuare il completamento del testo che precede il punto del cursore. \fBBash\fP tenta il completamento trattando il testo, rispettivamente, come una variabile (se il testo inizia con \fB$\fP), nome di utente (se il testo comincia con \fB~\fP), nome di host (se il testo comincia con \fB@\fP) o comando (inclusi alias e funzioni). Se nessuno di questi produce un risultato, viene tentato il completamento del nome\-file. .TP \fBpossible\-completions (M\-?)\fP Elenca i possibili completamenti del testo che precede il punto del cursore. .TP \fBinsert\-completions (M\-*)\fP Inserisce tutti i completamenti del testo che precede il punto del cursore che sarebbero stati generati da \fBpossible\-completions\fP. .TP \fBmenu\-complete\fP Simile a \fBcomplete\fP, ma sostituisce la parola da completare con una corrispondenza singola dalla lista dei possibili completamenti. Un'esecuzione ripetuta di \fBmenu\-complete\fP scorre la lista dei possibili completamenti, inserendo una corrispondenza alla volta. Alla fine della lista dei completamenti viene emesso un segnale acustico (dipendente dall'impostazione di \fBbell\-style\fP) e il testo originale è ripristinato. Con un argomento \fIn\fP si sposta di \fIn\fP posizioni in avanti nella lista dei completamenti individuati; può essere usato un argomento negativo per spostarsi all'indietro nella lista. Questo comando è da associare normalmente al tasto \fBTAB\fPP, però non è associato in modo predefinito. .TP \fBmenu\-complete\-backward\fP Identico a \fBmenu\-complete\fP, ma si muove in senso inverso nella lista dei possibili completamenti, come se \fBmenu\-complete\fP avesse ricevuto un argomento negativo. Come comportamento predefinito, questo comando non ha restrizioni. .TP \fBdelete\-char\-or\-list\fP Cancella il carattere sotto il cursore se non si trova all'inizio o alla fine della riga (simile a \fBdelete\-char\fP). Se è alla fine della riga, si comporta in modo identico a \fBpossible\-completions\fP. Come comportamento predefinito, questo comando non è associato. .TP \fBcomplete\-filename (M\-/)\fP Tenta il completamento del nome del file sul testo che precede il punto del cursore. .TP \fBpossible\-filename\-completions (C\-x /)\fP Elenca i possibili completamenti del testo che precede il punto del cursore, trattandolo come un nome\-file. .TP \fBcomplete\-username (M\-~)\fP Tenta il completamento del testo che precede il punto del cursore, trattandolo come un nome di utente. .TP \fBpossible\-username\-completions (C\-x ~)\fP Elenca i possibili completamenti del testo che precede il punto del cursore, trattandolo come un nome di utente. .TP \fBcomplete\-variable (M\-$)\fP Tenta il completamento del testo che precede il punto del cursore, trattandolo come una variabile di shell. .TP \fBpossible\-variable\-completions (C\-x $)\fP Elenca i possibili completamenti del testo che precede il punto del cursore, trattandolo come una variabile di shell. .TP \fBcomplete\-hostname (M\-@)\fP Tenta il completamento del testo che precede il punto del cursore, trattandolo come un nome di host. .TP \fBpossible\-hostname\-completions (C\-x @)\fP Elenca i possibili completamenti del testo che precede il punto del cursore, trattandolo come un nome di host. .TP \fBcomplete\-command (M\-!)\fP Tenta il completamento del testo che precede punto del cursore, trattandolo come nome di comando. Il completamento di comando tenta di far combaciare il testo confrontandolo con alias, parole riservate, funzioni di shell, comandi incorporati di shell e, da ultimo, nomi\-file eseguibili, in quest'ordine. .TP \fBpossible\-command\-completions (C\-x !)\fP Elenca i possibili completamenti del testo che precede il punto del cursore, trattandolo come un nome di comando. .TP \fBdynamic\-complete\-history (M\-TAB)\fP Tenta il completamento del testo che precede il cursore, confrontando il testo con le righe della cronologia cercando le possibili corrispondenze di completamento. .TP \fBdabbrev\-expand\fP Tenta il completamento del menù sul testo che precede il punto del cursore, confrontando il testo con le righe della lista della cronologia cercando le possibili corrispondenze di completamento. .TP \fBcomplete\-into\-braces (M\-{)\fP Effettua il completamento del nome\-file e inserisce la lista dei possibili completamenti racchiusi tra parentesi graffe, rendendo la lista disponibile per la shell (si veda \fBEspansione delle parentesi graffe\fP sopra). .PD .SS "Macro di tastiera" .PD 0 .TP \fBstart\-kbd\-macro (C\-x (\^)\fP Inizia a salvare i caratteri battuti nella corrente macro di tastiera. .TP \fBend\-kbd\-macro (C\-x )\^)\fP Smette di salvare i caratteri battuti nella corrente macro di tastiera e memorizza la definizione. .TP \fBcall\-last\-kbd\-macro (C\-x e)\fP Riesegue l'ultima macro di tastiera definita, facendo sì che i caratteri nella macro appaiano come se fossero stati battuti sulla tastiera. .TP \fBprint\-last\-kbd\-macro ()\fP Stampa l'ultima macro di tastiera definita in un formato adatto per il file \fIinputrc\fP. .PD .SS Varie .PD 0 .TP \fBre\-read\-init\-file (C\-x C\-r)\fP Legge il contenuto del file \fIinputrc\fP, e incorpora ogni associazione o assegnamento di variabile che trova. .TP \fBabort (C\-g)\fP Annulla il corrente comando di modifica ed emette il segnale acustico del terminale (dipendente dall'impostazione di \fBbell\-style\fP). .TP \fBdo\-lowercase\-version (M\-A, M\-B, M\-\fP\fIx\fP\fB, ...)\fP Se il carattere \fIx\fP battuto assieme al tasto Meta è maiuscolo, esegue il comando collegato al corrispondente carattere minuscolo. Il comportamento è indefinito se \fIx\fP è già minuscolo. .TP \fBprefix\-meta (ESC)\fP Definisce come tasto Meta il successivo carattere battuto. .SM \fBESC\fP \fBf\fP è equivalente a \fBMeta\-f\fP. .TP \fBundo (C\-_, C\-x C\-u)\fP Undo incrementale, memorizzato separatamente per ogni riga. .TP \fBrevert\-line (M\-r)\fP Annulla tutti i cambiamenti fatti su questa riga. Questo è come eseguire il comando \fBundo\fP un numero di volte sufficiente a riportare la riga al suo stato iniziale. .TP \fBtilde\-expand (M\-&)\fP Effettua l'espansione della tilde sulla parola corrente. .TP \fBset\-mark (C\-@, M\-)\fP Imposta la marca in corrispondenza del punto del cursore. Se viene fornito un argomento numerico la marca viene impostato a quella posizione. .TP \fBexchange\-point\-and\-mark (C\-x C\-x)\fP Scambia il punto del cursore con la marca. La posizione corrente del cursore è impostata alla posizione salvata, e la vecchia posizione del cursore è salvata come marca. .TP \fBcharacter\-search (C\-])\fP Viene letto un carattere e il punto del cursore è spostato all'occorrenza successiva di quel carattere. Un contatore negativo cerca occorrenze precedenti. .TP \fBcharacter\-search\-backward (M\-C\-])\fP Viene letto un carattere e il punto del cursore è spostato all'occorrenza precedente di quel carattere. Un contatore negativo cerca occorrenze successive. .TP \fBskip\-csi\-sequence\fP Legge abbastanza caratteri da esaurire una sequenza di combinazione di tasti come quelle definite per tasti quali Home e End. Queste sequenze iniziano con un Control Sequence Indicator (CSI), generalmente ESC\-[. Se questa sequenza è collegata a "\e[", i tasti che producono tali sequenze non hanno alcun effetto, a meno che non siano collegati esplicitamente a un comando readline, invece di inserire caratteri sparsi nel buffer di modifica. Come impostazione predefinita, questo comando non ha restrizioni, ma in genere è collegato a ESC\-[. .TP \fBinsert\-comment (M\-#)\fP Senza un argomento numerico il valore della variabile readline \fBcomment\-begin\fP è inserito all'inizio della riga corrente. Se è fornito un argomento numerico questo comando agisce come un interruttore: se i caratteri all'inizio della riga non corrispondono al valore di \fBcomment\-begin\fP, il valore viene inserito, altrimenti i caratteri in \fBcomment\-begin\fP vengono cancellati dall'inizio della riga. In entrambi i casi la riga viene accettata come se fosse stato battuto un codice di fine riga (newline). Il valore predefinito di \fBcomment\-begin\fP fa sì che questo comando trasformi la riga corrente in un commento di shell. Se un argomento numerico provoca la rimozione del carattere di commento, la riga verrà eseguita dalla shell. .TP \fBspell\-correct\-word (C\-x s)\fP Effettua la correzione sulla parola corrente, trattandola come directory o nome file, esattamente come fare l'opzione di shell \fBcdspell\fP. I delimitatori di parola sono gli stessi usati da \fBshell\-forward\-word\fP. .TP \fBglob\-complete\-word (M\-g)\fP La parola prima del punto del cursore è trattata come un modello per l'espansione del percorso, con un asterisco aggiunto alla fine implicitamente. Questo modello viene usato per generare una lista di nomi di file corrispondenti a possibili completamenti. .TP \fBglob\-expand\-word (C\-x *)\fP La parola prima del punto del cursore è trattata come un modello per l'espansione del percorso, e la lista dei nomi\-file individuati viene inserita, sostituendo la parola. Se viene fornito un argomento numerico viene aggiunto alla fine un asterisco prima dell'espansione del percorso. .TP \fBglob\-list\-expansions (C\-x g)\fP Viene mostrata la lista delle espansioni che sarebbero state generate da \fBglob\-expand\-word\fP e la riga è ridisegnata. Se viene fornito un argomento numerico, un asterisco è aggiunto prima dell'espansione del percorso. .TP \fBdump\-functions\fP Stampa tutte le funzioni e le loro associazioni di tasti sul file di output di readline. Se è fornito un argomento numerico, l'output è formattato in modo tale da poter essere inserito in un file \fIinputrc\fP. .TP \fBdump\-variables\fP Stampa tutte le variabili readline impostabili e i loro valori sul file di output di readline. Se viene fornito un argomento numerico l'output è formattato in modo tale da poter essere inserito in un file \fIinputrc\fP. .TP \fBdump\-macros\fP Stampa tutte le sequenze di tasti readline associate a macro e le stringhe da loro prodotte. Se viene fornito un argomento numerico l'uscita è formattata in modo tale da poter essere inserito in un file \fIinputrc\fP. .TP \fBdisplay\-shell\-version (C\-x C\-v)\fP Mostra l'informazione sulla versione della corrente istanza di \fBbash\fP. .PD .SS "Completamento programmabile" Quando viene tentato il completamento della parola per un argomento di un comando per il quale una specifica di completamento (una \fIcompspec\fP) è stata definita col comando incorporato \fBcomplete\fP (si veda .SM \fBCOMANDI INCORPORATI DELLA SHELL\fP più avanti), vengono invocati i servizi di completamento programmabile. .PP Per prima cosa viene identificato il nome del comando. Se la parola del comando è la stringa vuota (completamento tentato all'inizio di una riga vuota), viene usato ogni compspec definito con l'opzione \fB\-E\fP di \fBcomplete\fP. Se un comspec è stato definito per quel comando, il comspec è usato per generare la lista dei possibili completamenti per la parola. Se il nome del comando è un percorso completo di file, viene ricercato per primo un comspec per il percorso completo. Se non viene trovato nessun comspec per il percorso completo viene fatto un tentativo per trovare un comspec per la porzione che segue la barra [/] finale. Se queste ricerche non risultano in un compspec, viene usato come predefinito ogni compspec definito con l'opzione \fB\-D\fP di \fBcomplete\fP. Se non c'è un comspec predefinito, \fBbash\fP tenta l'espansione dell'alias sulla parola di comando come ultima alternativa, e tenta di trovare un comspec per la parola di comando da ogni espansione andata a buon fine. .PP Un volta trovato un comspec, questo è usato per generare la lista delle parole corrispondenti. Se non viene trovato un comspec, viene effettuato il completamento di \fBbash\fP predefinito come descritto in precedenza, sotto \fBCompletamento\fP. .PP Per prima cosa, sono usate le azioni specificate dal comspec. Sono restituite solo le corrispondenze che iniziano con la parola che dev'essere completata. Quando viene usata l'opzione \fB\-f\fP o \fB\-d\fP per il completamento del nome\-file o della directory, la variabile di shell .SM \fBFIGNORE\fP è usata per filtrare le corrispondenze. .PP In seguito, viene generato qualsiasi completamento specificato da un modello di espansione del nome di percorso all'opzione \fB\-G\fP. Le parole generate dal modello non devono necessariamente corrispondere alla parola che dev'essere completata. La variabile di shell .SM \fBGLOBIGNORE\fP non è usata per filtrare le corrispondenze, ma viene usata la variabile .SM \fBFIGNORE\fP. .PP In seguito, viene considerata la stringa specificata come argomento all'opzione \fB\-W\fP. La stringa è prima suddivisa usando i caratteri nella variabile speciale .SM \fBIFS\fP come delimitatori. È rispettata la quotatura della shell. Ogni parola viene poi espansa usando espansione delle parentesi graffe, espansione della tilde, espansione di parametro e di variabile, sostituzione di comando ed espansione aritmetica, come descritto in precedenza, sotto .SM \fBESPANSIONE\fP. I risultati sono suddivisi usando le regole sopra descritte sotto \fBSuddivisione in parole\fP. I risultati dell'espansione sono confrontati con la parte iniziale della parola che dev'essere completata, e quelli che corrispondono diventano i possibili completamenti. .PP Dopo che queste corrispondenze sono state generate, viene invocata qualsiasi funzione di shell o comando specificato con le opzioni \fB\-F\fP e \fB\-C\fP. Quando il comando o funzione viene invocata, alle variabili .SM \fBCOMP_LINE\fP, .SM \fBCOMP_POINT\fP, .SM \fBCOMP_KEY\fP e .SM \fBCOMP_TYPE\fP sono assegnati valori come descritto in precedenza, sotto \fBVariabili di shell\fP. Quando una funzione di shell sta per essere invocata, le variabili .SM \fBCOMP_WORDS\fP e .SM \fBCOMP_CWORD\fP sono pure impostate. Quando viene invocata una funzione o comando, il primo argomento (\fB $1\fP) è il nome del comando i cui argomenti sono stati completati, il secondo argomento (\fB $2\fP) è la parola da completare e il terzo argomento (\fB $3\fP) è la parola che precede la parola da completare sulla riga di comando corrente. Non viene eseguita nessuna azione di filtro sui completamenti generati confrontandoli con la parola da completare; la funzione o comando ha libertà completa nel generare le corrispondenze. .PP Qualsiasi funzione specificata con \fB\-F\fP viene invocata per prima. La funzione può usare uno qualsiasi dei servizi di shell, incluso il comando incorporato \fBcompgen\fP descritto più avanti, per generare le corrispondenze. la funzione deve mettere i possibili completamenti della variabile vettore .SM \fBCOMPREPLY\fP, uno per elemento di vettore. .PP In seguito, qualsiasi comando specificato con l'opzione \fB\-C\fP viene invocato in un ambiente equivalente alla sostituzione di comando. Questo dovrebbe stampare una lista di completamenti, uno per riga, sullo standard output. Una barra inversa può essere usata per proteggere un newline, se necessario. .PP Una volta generati tutti i possibili completamenti, ogni filtro specificato con l'opzione \fB\-X\fP viene applicato alla lista. Il filtro è un modello come quello usato per l'espansione di percorso; una \fB&\fP nel modello è sostituita col testo della parola da completare. Una \fB&\fP letterale si può indicare con una barra inversa di protezione; la barra inversa viene rimossa prima della ricerca di una corrispondenza. Ogni completamento che corrisponde al modello viene rimosso dalla lista. Un \fB!\fP iniziale nega il modello; in questo caso ogni completamento non corrispondente al modello viene rimosso. Se l'opzione di shell \fBnocasematch\fP è abilitata, il confronto è effettuato senza distinzione fra maiuscole e minuscole nei caratteri alfabetici. .PP Infine, qualsiasi prefisso e suffisso specificato dalle opzioni \fB\-P\fP e \fB\-S\fP è aggiunto a ogni membro della lista di completamento e il risultato è restituito al codice di completamento readline come lista di completamenti possibili. .PP Se le azioni precedentemente applicate non generano corrispondenze, e a \fBcomplete\fP era stata fornita l'opzione \fB\-o dirnames\fP quando era stato definito comspec, viene tentato il completamento come nome di directory. .PP Se a \fBcomplete\fP era stata fornita l'opzione \fB\-o plusdirs\fP quando era stato definito comspec, viene tentato il completamento come nomi di directory e qualunque corrispondenza è aggiunta ai risultati delle altre azioni. .PP Come comportamento predefinito, se viene trovato un comspec, qualsiasi cosa generi viene restituito al codice di completamento come insieme completo di completamenti possibili. I completamenti di \fBbash\fP predefiniti non vengono tentati, e la readline predefinita del completamento del nome\-file è disabilitata. Se l'opzione \fB\-o bashdefault\fP era stata fornita a \fBcomplete\fP al momento della definizione di comspec, i completamenti predefiniti di \fBbash\fP vengono tentati se il comspec non genera corrispondenze. Se l'opzione \fB\-o default\fP era stata fornita a \fBcomplete\fP al momento della definizione di comspec, i completamenti predefiniti di readline vengono effettuati se il comspec (e, se tentato, il completamento predefinito di \fBbash\fP) non genera corrispondenze. .PP Quando un comspec indica che è desiderato il completamento come nome di directory, le funzioni di completamento programmabile forzano readline ad aggiungere una barra [/] ai nomi completati che sono collegamenti simbolici a directory, dipendente dal valore della variabile di readline \fBmark\-directories\fP, indipendentemente dall'impostazione della variabile di readline \fBmark\-symlinked\-directories\fP. .PP Ci sono alcuni metodi per modificare dinamicamente i completamenti. Ciò è molto utile quando usato in combinazione con un completamento predefinito specificato con \fBcomplete \-D\fP. Per le funzioni di shell eseguite come manipolatori di completamento è possibile richiedere di ritentare il completamento indicando il ritorno di uno stato d'uscita di 124. Se una funzione di shell ritorna 124, e cambia il compspec associato al comando sul quale si sta tentando il completamento (fornito come primo argomento quando viene eseguita la funzione), il completamento programmabile riparte dall'inizio, col tentativo di trovare un nuovo compspec per quel comando. Questo permette a una serie di completamenti di venir costruiti dinamicamente al tentativo di completamento, piuttosto che essere caricati tutti in una volta. .PP Per esempio, ponendo che ci sia una libreria di compspec, ognuno tenuto in un file corrispondente al nome del comando, la seguente funzione di completamento predefinita caricherebbe i completamenti dinamicamente: .PP \f(CW_completion_loader()\fP .br \f(CW{\fP .br \f(CW . "/etc/bash_completion.d/$1.sh" >/dev/null 2>&1 && return 124\fP .br \f(CW}\fP .br \f(CWcomplete \-D \-F _completion_loader \-o bashdefault \-o default\fP .br \fP .SH STORIA Quando l'opzione \fB\-o history\fP del comando incorporato \fBset\fP è abilitata, la shell fornisce l'accesso alla \fIcronologia dei comandi\fP, la lista dei comandi precedentemente battuti. Il valore della variabile .SM \fBHISTSIZE\fP è usata come numero di comandi da salvare nell'elenco della cronologia. Il testo degli ultimi .SM \fBHISTSIZE\fP comandi (predefinito 500) viene salvato. La shell immagazzina ogni comando nella lista della cronologia prima dell'espansione di parametro e di variabile (si veda .SM \fBESPANSIONE\fP sopra) ma dopo che è stata effettuata l'espansione della cronologia, dipendente dai valori delle variabili di shell .SM \fBHISTIGNORE\fP e .SM \fBHISTCONTROL\fP. .PP All'avvio, la cronologia è inizializzata dal file indicato dalla variabile .SM \fBHISTFILE\fP (predefinita \fI~/.bash_history\fP). Il file indicato dal valore di .SM \fBHISTFILE\fP viene troncato, se necessario, per contenere non più del numero di righe specificate dal valore di .SM \fBHISTFILESIZE\fP. Se \fBHISTFILESIZE\fP non è impostata, o impostata a null, a un valore non numerico o a un valore minore di zero, il file della cronologia non viene troncato. Quando viene letto il file della cronologia, le righe che iniziano con un carattere di commento, seguito immediatamente da una cifra, sono interpretate come marcatura oraria per la riga che segue. Queste informazioni di data e ora vengono visualizzate opzionalmente a seconda del valore della variabile .SM \fBHISTTIMEFORMAT\fP. Quando una shell con la cronologia abilitata esce, le ultime .SM \fB$HISTSIZE\fP righe vengono copiate dalla lista della cronologia su .SM \fB$HISTFILE\fP. Se l'opzione di shell \fBhistappend\fP è abilitata (si veda la descrizione di \fBshopt\fP sotto .SM \fBCOMANDI INCORPORATI DELLA SHELL\fP più avanti), le righe vengono accodate al file della cronologia, in caso contrario il file della cronologia viene sovrascritto. Se .SM \fBHISTFILE\fP non è impostato o il file della cronologia è non scrivibile, la cronologia non viene salvata. Se la variabile .SM \fBHISTTIMEFORMAT\fP è impostata, le informazioni di data e ora vengono scritte nel file della cronologia, contrassegnate col carattere di commento della cronologia, in modo da venir preservate durante le sessioni di shell. Il carattere di commento viene usato per distinguere le informazioni di data e ora dalle altre righe. Dopo il salvataggio della cronologia il file della cronologia è troncato per contenere non più di .SM \fBHISTFILESIZE\fP righe. Se .SM \fBHISTFILESIZE\fP non è impostata, o impostata a null, a un valore non numerico o a un valore numerico minore di zero, il file della cronologia non viene troncato. .PP Il comando incorporato \fBfc\fP (si veda .SM \fBCOMANDI INCORPORATI DELLA SHELL\fP più avanti) può essere usato per elencare o editare e rieseguire una parte della lista della cronologia. Il comando incorporato \fBhistory\fP può essere usato per mostrare o modificare la lista della cronologia e manipolare il file di cronologia. Quando si usa la modifica della riga di comando, sono disponibili comandi di ricerca in ciascuna modalità di modifica che fornisce accesso alla lista della cronologia. .PP La shell permette il controllo su quali comandi salvare nella lista della cronologia. Le variabili .SM \fBHISTCONTROL\fP e .SM \fBHISTIGNORE\fP possono essere definite in modo tale che la shell salvi solo un sottoinsieme dei comandi immessi. L'opzione di shell \fBcmdhist\fP, se abilitata, fa sì che la shell tenti di salvare ogni riga di un comando multiriga nello stesso elemento della cronologia, aggiungendo dei punti e virgola dove necessario per preservare le correttezza sintattica. L'opzione di shell \fBlithist\fP chiede alla shell di salvare i comandi con i codici di fine riga (newline) inclusi invece che separare i comandi con dei punti e virgola. Si veda la descrizione del comando incorporato \fBshopt\fP più avanti, sotto .SM \fBCOMANDI INCORPORATI DELLA SHELL\fP per informazioni su come definire e annullare le opzioni di shell. .SH "ESPANSIONE DELLA CRONOLOGIA" La shell ha la capacità di espandere la cronologia in maniera simile all'espansione della cronologia in \fBcsh\fP. Questa sezione descrive le possibilità di sintassi disponibili. Questa possibilità è abilitata in modo predefinito per le shell interattive, e può essere disabilitata usando l'opzione \fB+H\fP del comando incorporato \fBset\fP (si veda .SM \fBCOMANDI INCORPORATI DELLA SHELL\fP più avanti). Le shell non interattive non effettuano l'espansione della cronologia come comportamento predefinito. .PP Le espansioni della cronologia inseriscono parole dall'elenco della cronologia nel flusso di input, agevolando la ripetizione di comandi, l'inserimento di argomenti di comandi precedenti nella riga di input corrente, o la correzione rapida di errori in comandi già immessi. .PP L'espansione della cronologia è effettuata immediatamente dopo che una riga completa è stata letta, prima che la shell la divida in parole, ed è effettuata su ciascuna riga senza tener conto delle quotature sulle righe precedenti. Essa ha luogo in due parti. La prima è per determinare quale riga dall'elenco della cronologia usare durante la sostituzione. La seconda è per selezionare parti di quella riga da includere nella riga corrente. La riga selezionata dalla cronologia è l'\fIevento\fP, e la parte di quella riga su cui si agisce sono le \fIparole\fP. Diversi \fImodificatori\fP sono disponibili per manipolare le parole selezionate. La riga è spezzata in parole allo stesso modo di quando è letta in input, così che più parole separate da \fImetacaratteri\fP circondate da caratteri di quotatura sono considerate come una sola parola. Le espansioni della cronologia iniziano con la comparsa di un carattere di espansione della cronologia, che è \^\fB!\fP\^ in modo predefinito. Solo la barra inversa (\^\fB\e\fP\^) e gli apostrofi possono quotare il carattere di espansione della cronologia, ma il carattere di espansione della cronologia è trattato come quotato se esso precede immediatamente le virgolette di chiusura in una stringa tra virgolette. .PP Diversi caratteri inibiscono l'espansione della cronologia quando trovati immediatamente dopo il carattere di espansione della cronologia, anche se non quotato: spazio, carattere di tabulazione, newline, carriage return e \fB=\fP. Se l'opzione di shell \fBestglob\fP è abilitata, anche \fB(\fP inibisce l'espansione. .PP Diverse opzioni di shell impostabili col comando incorporato \fBshopt\fP possono essere usate per influenzare il comportamento dell'espansione della cronologia. Se l'opzione di shell \fBhistverify\fP è abilitata (si veda la descrizione del comando incorporato \fBshopt\fP più avanti), e si sta usando \fBreadline\fP, le sostituzioni della cronologia non vengono passate immediatamente all'analizzatore della shell. Invece, la riga espansa è ricaricata nel buffer di modifica di \fBreadline\fP per ulteriori modifiche. Se si sta usando \fBreadline\fP ed è abilitata l'opzione di shell \fBhistreedit\fP, una sostituzione di cronologia non completata con successo viene ricaricata nel buffer di modifica di \fBreadline\fP per essere corretta. L'opzione \fB\-p\fP al comando incorporato \fBhistory\fP può essere usata per vedere cosa farebbe un'espansione della cronologia prima di usarla davvero. L'opzione \fB\-s\fP del comando incorporato \fBhistory\fP può essere usata per aggiungere comandi alla fine della lista della cronologia senza eseguirli veramente, in modo che siano disponibili per essere richiamati in un secondo tempo. .PP La shell permette il controllo dei vari caratteri usati dal meccanismo di espansione della cronologia (si veda la precedente descrizione di \fBhistchars\fP sotto \fBVariabili di shell\fP). La shell usa il carattere di commento per contrassegnare le informazioni di data e ora quando scrive il file della cronologia. .SS "Designatore di evento" Un designatore di evento è un riferimento a un elemento di riga di comando nella lista della cronologia. A meno che il riferimento non sia assoluto, gli eventi sono relativi alla posizione corrente nell'elenco della cronologia. .PP .PD 0 .TP \fB!\fP Inizia una sostituzione di cronologia, tranne quando seguita da un \fBblank\fP, newline, carriage return, = o ( (quando l'opzione di shell \fBextglob\fP è abilitata usando il comando incorporato \fBshopt\fP). .TP \fB!\fP\fIn\fP Designa la riga di comando \fIn\fP. .TP \fB!\-\fP\fIn\fP Designa il comando corrente meno \fIn\fP. .TP \fB!!\fP Designa il comando precedente. Questo è un sinonimo per `!\-1'. .TP \fB!\fP\fIstringa\fP Designa il comando più recente che precede la posizione corrente nell'elenco della cronologia che inizia con \fIstringa\fP. .TP \fB!?\fP\fIstringa\fP\fB[?]\fP Designa il comando più recente che precede la posizione corrente nell'elenco della cronologia che contiene \fIstringa\fP. Il \fB?\fP finale può essere omesso se \fIstringa\fP è seguita immediatamente da un codice di fine riga (newline). Se \fIstringa\fP manca, viene usata la stringa dalla ricerca più recente; è un errore se non ci sono precedenti stringhe di ricerca. .TP \fB\d\s+2^\s-2\u\fP\fIstringa1\fP\fB\d\s+2^\s-2\u\fP\fIstringa2\fP\fB\d\s+2^\s-2\u\fP Sostituzione rapida. Ripete il comando precedente, rimpiazzando \fIstringa1\fP con \fIstringa2\fP. Equivalente a \*(lq!!:s\d\s+2^\s-2\u\fIstringa1\fP\d\s+2^\s-2\u\fIstringa2\fP\d\s+2^\s-2\u\*(rq (si veda \fBModificatori\fP più avanti). .TP \fB!#\fP L'intera riga di comando battuta fino a questo punto. .PD .SS "Designatori di parola" I designatori di parola sono usati per selezionare parole dall'evento. Un \fB:\fP separa la specificazione di evento dal designatore di parola. Esso può essere omesso se il designatore di parola inizia con un \fB^\fP, \fB$\fP, \fB*\fP, \fB\-\fP o \fB%\fP. Le parole sono numerate dall'inizio della riga, la prima parola essendo denotata da uno 0 (zero). Le parole sono inserite nella riga corrente separate da spazi singoli. .PP .PD 0 .TP \fB0 (zero)\fP La parola numero zero. Per la shell, questa è la parola che costituisce il nome del comando. .TP \fIn\fP La \fIn\fP\-esima parola. .TP \fB^\fP Il primo argomento. Cioè, la parola 1. .TP \fB$\fP L'ultima parola. Normalmente questo è l'ultimo argomento, ma si espanderà alla parola numero zero se c'è una sola parola nella riga. .TP \fB%\fP La prima parola che combacia con `?\fIstringa\fP?' nella più recente ricerca, se la stringa di ricerca inizia con un carattere che è parte di una parola . .TP \fIx\fP\fB\-\fP\fIy\fP Un intervallo di parole; `\-\fIy\fP' abbrevia `0\-\fIy\fP'. .TP \fB*\fP Tutte le parole tranne la numero zero. Questo è un sinonimo per `\fI1\-$\fP'. Non è un errore usare \fB*\fP se vi è solo una parola nell'evento; in quel caso il risultato è una stringa vuota. .TP \fBx*\fP Abbrevia \fIx\-$\fP. .TP \fBx\-\fP Abbrevia \fIx\-$\fP come \fBx*\fP, ma omette l'ultima parola. Se manca \fBx\fP , il valore predefinito è 0. .PD .PP Se un designatore di parola è fornito senza una specificazione di evento, il comando precedente viene usato come evento. .SS Modificatori Dopo l'opzionale designatore di parola, può comparire una sequenza di uno o più fra i seguenti modificatori, ognuno preceduto da un `:'. Questi modificano, o editano, la parola o le parole selezionate dall'evento di cronologia. .PP .PD 0 .TP \fBh\fP Rimuove un componente finale in un nome\-file, lasciando solo la testa. .TP \fBt\fP Rimuove tutti i componenti iniziali in un nome\-file, lasciando la coda. .TP \fBr\fP Rimuove un suffisso finale della forma \fI.xxx\fP, lasciando il nome base (basename). .TP \fBe\fP Rimuove tutto tranne il suffisso finale. .TP \fBp\fP Stampa il nuovo comando ma non lo esegue. .TP \fBq\fP Quota le parole sostituite, prevenendo ulteriori sostituzioni. .TP \fBx\fP Quota le parole sostituite, come con \fBq\fP, ma spezza in parole sui \fBblank\fP e newline. I modificatori \fBq\fP e \fBx\fP sono mutualmente esclusivi; viene usato l'ultimo fornito. .TP \fBs/\fP\fIvecchio\fP\fB/\fP\fInuovo\fP\fB/\fP Sostituisce \fInuovo\fP alla prima occorrenza di \fIvecchio\fP nella riga di evento. Qualsiasi carattere può essere usato come delimitatore al posto di /. Il delimitatore finale è opzionale se esso è l'ultimo carattere della riga di evento. Il delimitatore può essere quotato in \fIvecchio\fP e \fInuovo\fP con una singola barra inversa. Se compare & in \fInuovo\fP, esso è sostituito da \fIvecchio\fP. Una barra inversa singola quota il carattere &. Se \fIvecchio\fP è nullo, viene impostato all'ultimo \fIvecchio\fP sostituito o, se nessuna sostituzione di cronologia è avvenuta, l'ultima \fIstringa\fP in una ricerca di \fB!?\fP\fIstring\fP\fB[?]\fP. Se \fInuovo\fP è nullo, ogni corrispondenza di \fIvecchio\fP viene cancellata. .TP \fB&\fP Ripete la precedente sostituzione. .TP \fBg\fP Fa sì che i cambiamenti siano applicati sull'intera riga di evento. Questo si usa in congiunzione con `\fB:s\fP' (p.es., `\fB:gs/\fP\fIvecchio\fP\fB/\fP\fInuovo\fP\fB/\fP') o `\fB:&\fP'. Se usato con `\fB:s\fP', qualsiasi delimitatore può essere usato al posto di /, e il delimitatore finale è opzionale se è l'ultimo carattere della riga di evento. Un \fBa\fP può essere usato come sinonimo di \fBg\fP. .TP \fBG\fP Applica il modificatore che segue `\fBs\fP' o `\fB&\fP' una volta a ogni parola nella riga di evento. .PD .SH "COMANDI INCORPORATI DELLA SHELL" .\" start of bash_builtins .zZ .PP Se non diversamente indicato, ogni comando incorporato documentato in questa sezione, il quale accetti opzioni precedute da \fB\-\fP, accetta \fB\-\-\fP per indicare la fine delle opzioni. I comandi incorporati \fB:\fP, \fBtrue\fP, \fBfalse\fP, e \fBtest\fP non accettano opzioni e non trattano \fB\-\-\fP in modo speciale. I comandi incorporati \fBexit\fP, \fBlogout\fP, \fBreturn\fP, \fBbreak\fP, \fBcontinue\fP, \fBlet\fP e \fBshift\fP accettano ed elaborano argomenti che iniziano con \fB\-\fP senza richiedere \fB\-\-\fP. Altri comandi incorporati che accettano argomenti, ma per i quali non viene specificato che accettano opzioni, interpretano gli argomenti che iniziano con \fB\-\fP come opzioni non valide e richiedono \fB\-\-\fP per impedire questa interpretazione. .sp .5 .PD 0 .TP \fB:\fP [\fIargomenti\fP] .PD Nessun effetto; il comando non fa niente, tranne l'espansione degli \fIargomenti\fP e l'effettuazione di ogni ridirezione specificata. Lo stato di ritorno è zero. .TP \fB.\| \fP \fInome\-file\fP [\fIargomenti\fP] .PD 0 .TP \fBsource\fP \fInome\-file\fP [\fIargomenti\fP] .PD Legge ed esegue comandi dal \fInome\-file\fP nell'ambiente di shell corrente e ritorna lo stato d'uscita dell'ultimo comando eseguito contenuto in \fInome\-file\fP. Se \fInome\-file\fP non contiene una barra [/], i percorsi in .SM \fBPATH\fP sono usati per trovare la directory contenente \fInome\-file\fP. Il file cercato in .SM \fBPATH\fP non ha bisogno di essere marcato come eseguibile. Quando \fBbash\fP non è in \fImodalità posix\fP, viene ricercata la directory corrente se nessun file viene trovato in .SM \fBPATH\fP. Se l'opzione \fBsourcepath\fP del comando incorporato \fBshopt\fP è disattivata, il .SM \fBPATH\fP non viene usato per la ricerca. Se sono forniti degli \fIargomenti\fP, essi diventano i parametri posizionali quando \fInome\-file\fP è eseguito. Altrimenti i parametri posizionali sono inalterati. Se è abilitata l'opzione \fB\-T\fP \fB.\fP eredita tutte le trap in \fBDEBUG\fP; in caso contrario ogni trap di \fBDEBUG\fP è salvata (prima) e ripristinata (dopo) la chiamata a \fB.\fP, e \fB.\fP disabilita la trap \fBDEBUG\fP durante l'esecuzione. Se \fB\-T\fP non è abilitato,e il file eseguito cambia la trap \fBDEBUG\fP, il nuovo valore è mantenuto quando \fBsource\fP completa. Lo stato di ritorno è lo stato dell'ultimo comando terminato dentro lo script (0 se nessun comando è eseguito), e falso se \fInome\-file\fP non viene trovato o non può essere letto. .TP \fBalias\fP [\fB\-p\fP] [\fInome\fP[=\fIvalore\fP] ...] \fBAlias\fP senza argomenti o con l'opzione \fB\-p\fP stampa la lista degli alias nella forma \fBalias\fP \fInome\fP=\fIvalore\fP sullo standard output. Quando sono forniti argomenti, viene definito un alias per ogni \fInome\fP per cui è dato il \fIvalore\fP. Uno spazio finale a \fIvalore\fP fa sì che la parola seguente sia controllata per la sostituzione di alias quando l'alias è espanso. Per ogni \fInome\fP nella lista di argomenti per cui nessun \fIvalore\fP è fornito, è stampato il nome e il valore dell'alias. \fBAlias\fP ritorna 0 (vero) a meno che non venga dato un \fInome\fP per il quale nessun alias è stato definito. .TP \fBbg\fP [\fIjobspec\fP ...] Riprende ogni job sospeso \fIjobspec\fP in background, come se fosse stato avviato con \fB&\fP. Se \fIjobspec\fP non è presente, è usato quello che la shell considera essere il \fIjob corrente\fP. \fBbg\fP \fIjobspec\fP ritorna 0 tranne quando viene eseguito con il job\-control disabilitato o, se eseguito con il job\-control abilitato, se \fIjobspec\fP non è stato trovato o è stato avviato senza usare job\-control. .TP \fBbind\fP [\fB\-m\fP \fIkeymap\fP] [\fB\-lpsvPSVX\fP] .PD 0 .TP \fBbind\fP [\fB\-m\fP \fIkeymap\fP] [\fB\-q\fP \fIfunzione\fP] [\fB\-u\fP \fIfunzione\fP] [\fB\-r\fP \fIkeyseq\fP] .TP \fBbind\fP [\fB\-m\fP \fIkeymap\fP] \fB\-f\fP \fInome\-file\fP .TP \fBbind\fP [\fB\-m\fP \fIkeymap\fP] \fB\-x\fP \fIkeyseq\fP:\fIcomando di shell\fP .TP \fBbind\fP [\fB\-m\fP \fIkeymap\fP] \fIkeyseq\fP:\fInome\-funzione\fP .TP \fBbind\fP [\fB\-m\fP \fImappa\-tasti\fP] \fIsequenza\-tasti\fP:\fIcomando readline\fP .TP \fBbind\fP \fIriga\-comando\-readline\fP .PD Mostra le associazioni attuali di tasti e funzioni di \fBreadline\fP, associa una sequenza di tasti a una funzione o macro di \fBreadline\fP o imposta una variabile \fBreadline\fP. Ogni argomento che non sia un'opzione è un comando come apparirebbe nel file di inizializzazione di \fBreadline\fP \fI.inputrc\fP, ma ciascuna associazione deve essere passata come argomento separato; per esempio, '"\eC\-x\eC\-r": re\-read\-init\-file'. Le opzioni, se fornite, hanno i seguenti significati: .RS .PD 0 .TP \fB\-m \fP\fIkeymap\fP Usa \fIkeymap\fP come mappatura della tastiera da modificare nelle successive associazioni. I nomi accettabili per \fIkeymap\fP sono \fIemacs, emacs\-standard, emacs\-meta, emacs\-ctlx, vi, vi\-move, vi\-command\fP e \fIvi\-insert\fP. \fIvi\fP è equivalente a \fIvi\-command\fP (anche \fIvi\-move\fP è un sinonimo) ; \fIemacs\fP è equivalente a \fIemacs\-standard\fP. .TP \fB\-l\fP Elenca i nomi di tutte le funzioni di \fBreadline\fP. .TP \fB\-p\fP Mostra i nomi delle funzioni di \fBreadline\fP e delle loro associazioni in modo tale che possano essere riletti. .TP \fB\-P\fP Elenca i nomi delle funzioni di \fBreadline\fP correnti e le loro associazioni. .TP \fB\-s\fP Mostra sequenze di tasti di \fBreadline\fP associati a macro e le stringhe risultanti in modo tale che possano essere rilette. .TP \fB\-S\fP Mostra sequenze di tasti di \fBreadline\fP associate a macro e le stringhe risultanti. .TP \fB\-v\fP Mostra i nomi delle variabili di \fBreadline\fP e i loro valori in modo tale che possano essere riletti. .TP \fB\-V\fP Elenca i nomi delle variabili di \fBreadline\fP correnti e i loro valori. .TP \fB\-f \fP\fInome\-file\fP Legge le associazioni dei tasti dal file \fInome\-file\fP. .TP \fB\-q \fP\fIfunzione\fP Chiede quali tasti invocano la \fIfunzione\fP indicata. .TP \fB\-u \fP\fIfunzione\fP Dissocia tutti i tasti associati alla \fIfunzione\fP indicata. .TP \fB\-r \fP\fIkeyseq\fP Rimuove qualsiasi associazione corrente per \fIkeyseq\fP. .TP \fB\-x \fP\fIkeyseq\fP\fB:\fP\fIcomando di shell\fP Provoca l'esecuzione di \fIcomando\-di\-shell\fP ogni volta che viene immesso \fIkeyseq\fP. Quando \fIcomando\-di\-shell\fP viene eseguito, la shell imposta la variabile .SM \fBREADLINE_LINE\fP al contenuto del buffer di riga \fBreadline\fP e le variabili .SM \fBREADLINE_POINT\fP e \fBREADLINE_MARK\fP rispettivamente alla posizione corrente del punto di inserzione e al punto di inserzione salvato (la marcatura). La shell imposta ogni argomento numerico fornito dall'utente alla variabile .SM \fBREADLINE_ARGUMENT\fP. Se non c'è l'argomento, la variabile non è impostata. Se il comando eseguito cambia il valore di .SM \fBREADLINE_LINE\fP, .SM \fBREADLINE_POINT\fP o .SM \fBREADLINE_MARK\fP, i nuovi valori saranno portati nello stato di modifica. .TP \fB\-X\fP Elenca tutte le sequenze di tasti associati a comandi di shell e i comandi associati in un formato che può essere riusato come input. .PD .PP Il valore di ritorno è 0 tranne quando si specifica un'opzione non riconosciuta o è avvenuto un errore. .RE .TP \fBbreak\fP [\fIn\fP] Esce dall'interno di un ciclo \fBfor\fP, \fBwhile\fP, \fBuntil\fP o \fBselect\fP. Se \fIn\fP è specificato, interrompe \fIn\fP livelli. \fIn\fP deve essere \(>= 1. Se \fIn\fP è più grande del numero di cicli racchiusi, tutti i cicli racchiusi vengono terminati. Il valore di ritorno è 0 tranne quando \fIn\fP non è maggiore o uguale a 1. .TP \fBbuiltin\fP \fIcomando\-incorporato\fP [\fIargomenti\fP] Esegue il comando incorporato specificato, passandogli gli \fIargomenti\fP, e ritorna il suo stato d'uscita. Questo è utile quando si desidera definire una funzione il cui nome è lo stesso di un comando incorporato della shell, ottenendo la funzionalità del comando incorporato attraverso la funzione. Il comando incorporato \fBcd\fP è comunemente ridefinito in questo modo. Lo stato di ritorno è falso se \fIcomando\-incorporato\fP non è un comando incorporato della shell. .TP \fBcaller\fP [\fIespr\fP] Restituisce il contesto di qualsiasi chiamata di subroutine attiva (una funzione di shell o uno script eseguito coi comandi incorporati \fB.\fP o \fBsource\fP. Senza \fIespr\fP, il \fBcaller\fP mostra il numero di riga e il nome di file di origine della chiamata di subroutine corrente. Se un intero non negativo è fornito come \fIespr\fP, \fBcaller\fP mostra il numero di riga, il nome di subroutine e il file di origine corrispondente a quella posizione nello stack delle chiamate di esecuzione. Questa informazione aggiuntiva può essere usata, per esempio, per stampare una traccia dello stack. Il frame corrente è il frame 0. Il valore di ritorno è 0 tranne quando la shell non sta eseguendo una chiamata di subroutine o quando \fIespr\fP non corrisponde a una posizione valida nello stack delle chiamate. .TP \fBcd\fP [\fB\-L\fP|[\fB\-P\fP [\fB\-e\fP]] [\-@]] [\fIdir\fP] Cambia la directory corrente con \fIdir\fP. Se \fIdir\fP non viene indicato, viene usato il valore della variabile .SM \fBHOME\fP. La variabile .SM \fBCDPATH\fP definisce i percorsi di ricerca per le directory che contengano \fIdir\fP: ogni nome di directory in .SM \fBCDPATH\fP viene usato per cercarvi \fIdir\fP. Nomi di directory alternative in .SM \fBCDPATH\fP sono separati da due punti (:). Un nome di directory nullo in .SM \fBCDPATH\fP indica la directory corrente, cioè, \*(lq\fB.\fP\*(rq. Se \fIdir\fP inizia con una barra [/], allora .SM \fBCDPATH\fP non è usato. L'opzione \fB\-P\fP dice di usare la struttura di directory fisica invece di seguire i collegamenti simbolici e prima di gestire eventuali \fI..\fP in \fIdir\fP (si veda anche l'opzione \fB\-P\fP del comando incorporato \fBset\fP); l'opzione \fB\-L\fP forza a seguire i collegamenti simbolici risolvendoli dopo aver gestito eventuali \fI..\fP in \fIdir\fP. Se \fI..\fP appare in \fIdir\fP e gestito rimuovendo il componente del nome percorso subito prima da \fIdir\fP fino alla barra [/] o all'inizio di \fIdir\fP. Se l'opzione \fB\-e\fP viene fornita con \fB\-P\fP, e la directory di lavoro corrente non può essere determinata con successo dopo un cambiamento di directory andato a buon fine, \fBcd\fP ritornerà uno stato di insuccesso. Sui sistemi che la supportano, l'opzione \fB\-@\fP presenta gli attributi estesi associati a file come se fosse una directory. Un argomento \fB\-\fP è convertito in .SM \fB$OLDPWD\fP prima del cambio directory. Se viene usato il nome di una directory non vuota da .SM \fBCDPATH\fP o se \fB\-\fP è il primo argomento, e il cambiamento di directory ha successo, il percorso completo della nuova directory di lavoro viene scritto sullo standard output. Se il cambio di directory ha successo, \fBcd\fP imposta il valore della variabile d'ambiente \fBPWD\fP come il nome della nuova directory, e il valore della variabile d'ambiente \fBOLDPWD\fP come il nome della directory corrente prima del cambio. Il valore di ritorno è vero se la directory è stata cambiata con successo; falso altrimenti. .TP \fBcommand\fP [\fB\-pVv\fP] \fIcomando\fP [\fIarg\fP ...] Esegue \fIcomando\fP con gli \fIargomenti\fP sopprimendo la normale ricerca tra le funzione di shell. Sono eseguiti solo i comandi incorporati o comandi trovati in .SM \fBPATH\fP. Se è specificata l'opzione \fB\-p\fP, la ricerca di \fIcomando\fP viene effettuata usando un valore predefinito per .SM \fBPATH\fP usando il quale è garantito che siano trovate tutte le utilità standard. Se è fornita l'opzione \fB\-V\fP o \fB\-v\fP, viene stampata una descrizione di \fIcomando\fP. L'opzione \fB\-v\fP provoca la visualizzazione di una singola parola che indica il comando o il nome\-file usato per invocare \fIcomando\fP; l'opzione \fB\-V\fP produce una descrizione più completa. Se è fornita l'opzione \fB\-V\fP o \fB\-v\fP, lo stato d'uscita è 0 se \fIcomando\fP è stato trovato, e 1 altrimenti. Se nessuna delle due opzioni è fornita e avviene un errore o \fIcomando\fP non può essere trovato, lo stato d'uscita è 127. Altrimenti, lo stato d'uscita del comando incorporato \fBcommand\fP è lo stato d'uscita di \fIcomando\fP. .TP \fBcompgen\fP [\fIopzione\fP] [\fIparola\fP] Genera possibili corrispondenze di completamento per \fIparola\fP in accordo con le \fIopzioni\fP, che possono essere qualsiasi opzione accettata dal comando incorporato \fBcomplete\fP ad eccezione di \fB\-p\fP e \fB\-r\fP, e scrive le corrispondenze sullo standard output. Quando si usano le opzioni \fB\-F\fP o \fB\-C\fP, le diverse variabili di shell impostate dai servizi di completamento programmabile, anche se disponibili, non conterranno valori utili. .sp 1 Le corrispondenze saranno generate come se il codice di completamento programmabile le avesse generate direttamente da una specifica di completamento con gli stessi flag. Se viene specificata \fIparola\fP, vengono mostrati solo i completamenti disponibili per \fIparola\fP. .sp 1 Il valore di ritorno è 0 (vero), tranne quando viene fornita un'opzione non valida, o non viene generata alcuna corrispondenza. .TP \fBcomplete\fP [\fB\-abcdefgjksuv\fP] [\fB\-o\fP \fIcomp\-option\fP] [\fB\-DEI\fP] [\fB\-A\fP \fIazione\fP] [\fB\-G\fP \fIglobpat\fP] [\fB\-W\fP \fIlista_di_parole\fP] .br [\fB\-F\fP \fIfunzione\fP] [\fB\-C\fP \fIcomando\fP] [\fB\-X\fP \fIfilterpat\fP] [\fB\-P\fP \fIprefisso\fP] [\fB\-S\fP \fIsuffisso\fP] \fInome\fP [\fInome ...\fP] .PD 0 .TP \fBcomplete\fP \fB\-pr\fP [\fB\-DEI\fP] [\fInome\fP ...] .PD Specifica come devono essere completati gli argomenti per ogni \fInome\fP. Se viene fornita l'opzione \fB\-p\fP o se non viene fornita alcuna opzione, le specifiche di completamento esistenti sono stampate in modo tale da essere riutilizzabili come input. L'opzione \fB\-r\fP rimuove una specifica di completamento per ogni \fInome\fP o, se non è fornito nessun \fInome\fP, tutte le specifiche di completamento. L'opzione \fB\-D\fP indica che le rimanenti opzioni e azioni si dovrebbero applicare al completamento di comando \*(lqpredefinito\*(rq; cioè, il completamento tentato su un comando per il quale non è stato definito precedentemente nessun completamento. L'opzione \fB\-E\fP indica che le rimanenti opzioni e azioni si dovrebbero applicare al completamento di comando \*(lqvuoto\*(rq; cioè il completamento tentato su una riga vuota. L'opzione \fB\-I\fP indica che le altre opzioni ed azioni fornite vanno applicate al completamento delle parole iniziali che non siano di assegnamento, o che seguano un delimitatore di comando come \fB;\fP o \fB|\fP, che è normalmente il completamento del comando. Se vengono utilizzate più opzioni, \fB\-D\fP ha la priorità rispetto a \fB\-E\fP, ed entrambe hanno la precedenza rispetto a \fB\-I\fP. Se una qualsiasi di \fB\-D\fP, \fB\-E\fP o \fB\-I\fP viene usata, ogni altro \fInome\fP viene ignorato; questi completamenti si applicano solo al caso indicato dall'opzione stessa. .sp 1 Il processo per applicare queste specifiche di completamento quando si tenta il completamento della parola è descritto .ie \n(zZ=1 in \fIbash(1)\fP. .el above under \fBProgrammable Completion\fP. .sp 1 Altre opzioni, se specificate, hanno i seguenti significati. Gli argomenti alle opzioni \fB\-G\fP, \fB\-W\fP, e \fB\-X\fP (e, se necessario alle opzioni \fB\-P\fP e \fB\-S\fP) dovrebbero essere quotati per proteggerli dall'espansione prima che venga invocato il comando incorporato \fBcomplete\fP. .RS .PD 0 .TP 8 \fB\-o\fP \fIcomp\-option\fP L'opzione \fIcomp\-option\fP controlla diversi aspetti del comportamento di comspec oltre la semplice generazione di completamenti. \fIcomp\-option\fP può essere uno di questi: .RS .TP 8 \fBbashdefault\fP Effettua il resto dei completamenti predefiniti di \fBbash\fP se comspec non genera corrispondenze. .TP 8 \fBdefault\fP Usa il completamento del nome\-file predefinito di readline se comspec non genera corrispondenze. .TP 8 \fBdirnames\fP Effettua il completamento del nome di directory se comspec non genera corrispondenze. .TP 8 \fBfilenames\fP Dice a readline che il comspec genera nomi\-file, consentendo così di effettuare qualsiasi elaborazione di uno specifico nome\-file (come aggiungere una barra [/] ai nomi di directory, quotare caratteri speciali o sopprimere gli spazi finali). Fatto per essere usato con le funzioni di shell. .TP 8 \fBnoquote\fP Dice a readline di non quotare le parole completate se sono nomi\-file (la quotatura dei nomi\-file è il comportamento predefinito). .TP 8 \fBnosort\fP Dice a readline di non ordinare la lista dei possibili completamenti in ordine alfabetico. .TP 8 \fBnospace\fP Dice a readline di non aggiungere uno spazio (che viene aggiunto in modo predefinito) alle parole completate alla fine della riga. .TP 8 \fBplusdirs\fP Dopo che le corrispondenze definite da comspec sono state generate, viene tentato il completamento dei nomi di directory e il risultato viene aggiunto ai risultati delle altre azioni. .RE .TP 8 \fB\-A\fP \fIazione\fP L'\fIazione\fP può essere una delle seguenti per generare una lista di possibili completamenti: .RS .TP 8 \fBalias\fP Nome di alias. Può anche essere specificata come \fB\-a\fP. .TP 8 \fBarrayvar\fP Nomi di variabili di array. .TP 8 \fBbinding\fP Nomi di associazioni di tasti \fBReadline\fP. .TP 8 \fBbuiltin\fP Nomi di comandi incorporati della shell. Può anche essere specificata come \fB\-b\fP. .TP 8 \fBcommand\fP Nomi di comandi. Può anche essere specificata come \fB\-c\fP. .TP 8 \fBdirectory\fP Nomi di directory. Può anche essere specificata come \fB\-d\fP. .TP 8 \fBdisabled\fP Nomi di comandi incorporati della shell disabilitati. .TP 8 \fBenabled\fP Nomi di comandi incorporati della shell abilitati. .TP 8 \fBexport\fP Nomi di variabili di shell esportate. Può anche essere specificata come \fB\-e\fP. .TP 8 \fBfile\fP Nomi di file. Può anche essere specificata come \fB\-f\fP. .TP 8 \fBfunction\fP Nomi di funzioni di shell. .TP 8 \fBgroup\fP Nomi di gruppo. Può anche essere specificata come \fB\-g\fP. .TP 8 \fBhelptopic\fP Argomenti di aiuto come accettati dal comando incorporato \fBhelp\fP. .TP 8 \fBhostname\fP Nomi di host, come presi dal file specificato dalla variabile di shell .SM \fBHOSTFILE\fP. .TP 8 \fBjob\fP Nomi di job, se il job\-control è attivo. Può anche essere specificata come \fB\-j\fP. .TP 8 \fBkeyword\fP Parole riservate della shell. Può anche essere specificata come \fB\-k\fP. .TP 8 \fBrunning\fP Nomi di job in esecuzione, se il job\-control è attivo. .TP 8 \fBservice\fP Nome di servizi. Può anche essere specificata come \fB\-s\fP. .TP 8 \fBsetopt\fP Argomenti validi per l'opzione \fB\-o\fP del comando incorporato \fBset\fP. .TP 8 \fBshopt\fP Nomi di opzioni di shell come accettati dal comando incorporato \fBshopt\fP. .TP 8 \fBsignal\fP Nomi di segnali. .TP 8 \fBstopped\fP Nomi di job sospesi, se il job\-control è attivo. .TP 8 \fBuser\fP Nomi di utente. Può anche essere specificata come \fB\-u\fP. .TP 8 \fBvariable\fP Nomi di variabili di shell. Può anche essere specificata come \fB\-v\fP. .RE .TP 8 \fB\-C\fP \fIcomando\fP \fIcomando\fP viene eseguito in un ambiente di subshell, e il suo output viene usato come lista di possibili completamenti. Gli argomenti sono passati come per l'opzione \fB\-F\fP. .TP 8 \fB\-F\fP \fIfunzione\fP La funzione di shell \fIfunction\fP viene eseguita nell'ambiente di shell corrente. Quando la funzione è eseguita, il primo argomento (\fB$1\fP) è il nome del comando i cui argomenti devono essere completati, il secondo argomento (\fB$2\fP) è la parola da completare, e il terzo argomento (\fB$3\fP) è la parola che precede la parola da completare sulla riga di comando corrente. Al termine, i completamenti possibili sono recuperati dal valore della variabile array .SM \fBCOMPREPLY\fP . .TP 8 \fB\-G\fP \fIglobpat\fP Il modello di espansione dei nomi di percorso \fIglobpat\fP viene espanso per generare i possibili completamenti. .TP 8 \fB\-P\fP \fIprefisso\fP \fIprefisso\fP è aggiunto all'inizio di ogni possibile completamento dopo che sono state applicate tutte le altre opzioni. .TP 8 \fB\-S\fP \fIsuffisso\fP \fIsuffisso\fP è aggiunto alla fine di ogni possibile completamento dopo che sono state applicate tutte le altre opzioni. .TP 8 \fB\-W\fP \fIwordlist\fP L'\fIelenco\-parole\fP è suddiviso usando i caratteri nella variabile speciale .SM \fBIFS\fP come delimitatori, e viene espansa ogni parola risultante. L'utilizzo delle virgolette all'interno di \fIelenco\-parole\fP è gestito, sicché è possibile utilizzare metacaratteri shell tra le parole, oppure caratteri compresi anche in .SM \fBIFS\fP. I possibili completamenti sono gli elementi della lista risultante che sono appropriati per la parola da completare. .TP 8 \fB\-X\fP \fIfilterpat\fP \fIfilterpat\fP è un modello come quelli usati per l'espansione del nome di percorso. È applicato all'elenco dei possibili completamenti generati dalle opzioni e dagli argomenti precedenti, e ogni completamento che corrisponde a \fIfilterpat\fP viene rimosso dall'elenco. Un \fB!\fP iniziale in \fIfilterpat\fP nega il modello; in questo caso ogni completamento che non concorda con \fIfilterpat\fP viene rimosso. .PD .PP Il valore di ritorno è 0 (vero) tranne quando viene fornita un'opzione non valida, viene fornita un'opzione all'infuori di \fB\-p\fP o \fB\-r\fP senza un argomento \fInome\fP, viene fatto un tentativo di rimuovere una specifica di completamento per un \fInome\fP per il quale non vi sono specifiche, o se si verifica un errore aggiungendo una specifica di completamento. .RE .TP \fBcompopt\fP [\fB\-o\fP \fIopzione\fP] [\fB\-DEI\fP] [\fB+o\fP \fIopzione\fP] [\fInome\fP] Modifica le opzioni di completamento per ogni \fInome\fP secondo i valori di \fIopzione\fP o, se non viene fornito un \fInome\fP, per il completamento in esecuzione. Se non viene data nessuna \fIopzione\fP, visualizza le opzioni di completamento per ogni \fInome\fP o il completamento corrente. I possibili valori di \fIopzione\fP sono quelli validi per il comando incorporato \fBcomplete\fP descritto precedentemente. L'opzione \fB\-D\fP indica che le opzioni rimanenti dovrebbero applicarsi al completamento di comando \*(lqpredefinito\*(rq; cioè il completamento tentato su un comando per il quale non è stato precedentemente definito un completamento. L'opzione \fB\-E\fP indica che le opzioni rimanenti dovrebbero applicarsi al completamento di comando \*(lqvuoto\*(rq; cioè un completamento tentato su una riga vuota. L'opzione \fB\-I\fP indica che le altre opzioni fornite dovrebbero applicarsi al completamento della prima parola della riga che non sia un assegnamento, oppure dopo un delimitatore di comando come \fB;\fP o \fB|\fP, che indica normalmente il completamento del nome del comando. .sp 1 Il valore di ritorno è vero, a meno che non venga fornita un'opzione non valida, venga fatto un tentativo per modificare le opzioni per un \fInome\fP per il quale non esiste alcuna specifica di completamento, o accada un errore di output. .TP \fBcontinue\fP [\fIn\fP] Riprende la successiva iterazione del ciclo \fBfor\fP, \fBwhile\fP, \fBuntil\fP o \fBselect\fP dentro cui si trova. Se \fIn\fP è specificato, riprende all'\fIn\fP\-esima nidificazione del ciclo. \fIn\fP deve essere \(>= 1. Se \fIn\fP è più grande del numero di cicli nidificati, riprende dall'ultimo ciclo esistente (il ciclo a più alto livello). Il valore di ritorno è 0 tranne quando \fIn\fP non è maggiore o uguale a 1. .TP \fBdeclare\fP [\fB\-aAfFgiIlnrtux\fP] [\fB\-p\fP] [\fInome\fP[=\fIvalore\fP] ...] .PD 0 .TP \fBtypeset\fP [\fB\-aAfFgiIlnrtux\fP] [\fB\-p\fP] [\fInome\fP[=\fIvalore\fP] ...] .PD Dichiara variabili e/o dà loro degli attributi. Se il \fInome\fP è omesso, mostra i valori delle variabili. L'opzione \fB\-p\fP mostra gli attributi e i valori di ogni \fInome\fP. Quando \fB\-p\fP viene usato con argomenti \fInome\fP, vengono ignorate opzioni addizionali, eccetto \fB\-f\fP e \fB\-F\fP. Quando \fB\-p\fP viene fornito senza argomenti \fInome\fP, visualizza gli attributi e i valori di tutte le variabili che hanno gli attributi specificati dalle opzioni aggiuntive. Se non viene fornita nessun'altra opzione con \fB\-p\fP, \fBdeclare\fP visualizza gli attributi e i valori di tutte le variabili di shell. L'opzione \fB\-f\fP restringe la visualizzazione alle funzioni di shell. L'opzione \fB\-F\fP inibisce la visualizzazione delle definizioni di funzione; vengono stampati solo il nome della funzione e i suoi attributi. Se l'opzione di shell \fBextdebug\fP è stata abilitata con \fBshopt\fP, vengono anche visualizzati il nome di file d'origine e il numero di riga dov'è definito ciascun \fInome\fP. L'opzione \fB\-F\fP sottintende \fB\-f\fP. L'opzione \fB\-g\fP forza la creazione o la modifica delle variabili globalmente, anche quando \fBdeclare\fP è eseguito in una funzione di shell. È ignorato in tutti gli altri casi. L'opzione \fI\-I\fP fa sì che la variabile locale erediti gli attributi (eccetto \fInameref\fP) e il valore da una eventuale variabile con lo stesso \fInome\fP definita in un scope precedente. Se non c'è una variabile già esistente, la variabile locale è inizialmente non impostata. Le seguenti opzioni possono essere usate per restringere l'output alle sole variabili con gli attributi specificati o per assegnare attributi di variabili: .RS .PD 0 .TP \fB\-a\fP Ogni \fInome\fP è una variabile vettore indicizzata (si veda \fBArray\fP sopra). .ie \n(zZ=1 in \fIbash(1)\fP). .el above). .TP \fB\-A\fP Ogni \fInome\fP è una variabile vettore associativo (si veda \fBVettori\fP sopra). .ie \n(zZ=1 in \fIbash(1)\fP). .el above). .TP \fB\-f\fP Usa solo nomi di funzioni. .TP \fB\-i\fP La variabile è trattata come un intero; la valutazione aritmetica (si veda .SM \fBVALUTAZIONE ARITMETICA\fP sopra) .ie \n(zZ=1 in \fIbash(1)\fP) .el above) è effettuata quando alla variabile è assegnato un valore. .TP \fB\-l\fP Quando alla variabile è assegnato un valore, tutti i caratteri maiuscoli sono convertiti in minuscolo. L'attributo upper\-case è disabilitato. .TP \fB\-n\fP Dà a ogni \fInome\fP l'attributo \fInameref\fP, rendendolo un riferimento a un'altra variabile. Quest'altra variabile è definita dal valore di \fInome\fP. Tutti i riferimenti, gli assegnamenti e le modifiche degli attributi a \fInome\fP, tranne quelli che usano o cambiano lo stesso attributo \fB\-n\fP, sono effettuati sulla variabile referenziata dal valore di \fInome\fP. L'attributo \fB\-n\fP non può essere applicato alle variabili array. .TP \fB\-r\fP Rende \fInomi\fP accessibili in sola lettura. A questi nomi non possono quindi essere assegnati valori da successive istruzioni di assegnamento, e i valori assegnati non possono essere rimossi. .TP \fB\-t\fP Dà a ogni \fInome\fP l'attributo \fItrace\fP. Le funzioni tracciate ereditano i segnali intercettati \fBDEBUG\fP e \fBRETURN\fP dalla shell chiamante. L'attributo trace non ha un significato speciale per le variabili. .TP \fB\-u\fP Quando alla variabile è assegnato un valore, tutti i caratteri minuscoli sono convertiti in maiuscolo. L'attributo lower\-case è disabilitato. .TP \fB\-x\fP Marca \fInomi\fP per l'esportazione ai successivi comandi attraverso l'ambiente. .PD .PP Usare `+' invece di `\-' disattiva l'attributo, con l'eccezione che \fB+a\fP e \fB+A\fP non possono essere usati per eliminare una variabile array e \fB+r\fP non rimuove l'attributo di sola lettura. Quando usate in una funzione, \fBdeclare\fP e \fBtypeset\fP rendono ogni \fInome\fP locale, come con il comando \fBlocal\fP, a meno che non venga fornita l'opzione \fB\-g\fP. Se un nome di variabile è seguito da =\fIvalore\fP, il valore della variabile è impostato a \fIvalore\fP. Il valore di ritorno è 0 tranne quando viene incontrata un'opzione non valida, viene fatto un tentativo di definire una funzione usando .if n ``\-f foo=bar'', .if t \f(CW\-f foo=bar\fP, un tentativo per assegnare un valore a una variabile in sola lettura, un tentativo per assegnare un valore a una variabile vettore senza usare la sintassi di assegnamento composto (si veda \fBVettori\fP sopra) .ie \n(zZ=1 in \fIbash(1)\fP), .el above), uno dei \fInomi\fP non è un nome valido di variabile di shell, un tentativo per disattivare lo stato di sola lettura per una variabile in sola lettura, un tentativo per disattivate lo stato di vettore per una variabile vettore, o un tentativo per mostrare una funzione non esistente con \fB\-f\fP. .RE .TP \fBdirs [\-clpv] [+\fP\fIn\fP\fB] [\-\fP\fIn\fP\fB]\fP Senza opzioni, mostra la lista delle directory correntemente memorizzate. La visualizzazione predefinita è su un singola riga coi nomi di directory separate da spazi. Le directory sono aggiunte alla lista con il comando \fBpushd\fP; il comando \fBpopd\fP rimuove elementi dalla lista. La directory corrente è sempre la prima directory nello stack. .RS .PD 0 .TP \fB\-c\fP Svuota lo stack delle directory cancellando tutti gli elementi. .TP \fB\-l\fP Produce un elenco usando il percorso completo; il formato predefinito per l'elencazione usa un carattere tilde per indicare la home directory. .TP \fB\-p\fP Stampa lo stack delle directory con un elemento per riga. .TP \fB\-v\fP Stampa lo stack delle directory con un elemento per riga,anteponendo a ogni elemento il suo indice nello stack. .TP \fB+\fP\fIn\fP Mostra l'\fIn\fP\-esimo elemento contando dalla sinistra della lista mostrata da \fBdirs\fP quando è chiamato senza opzioni, partendo da zero. .TP \fB\-\fP\fIn\fP Mostra l'\fIn\fP\-esimo elemento contando dalla destra della lista mostrata da \fBdirs\fP quando è chiamato senza opzioni, partendo da zero. .PD .PP Il valore di ritorno è 0 tranne quando viene fornita un'opzione non valida o \fIn\fP un indice oltre la fine dello stack delle directory. .RE .TP \fBdisown\fP [\fB\-ar\fP] [\fB\-h\fP] [\fIjobspec\fP ... | \fIpid\fP ... ] Senza opzioni, rimuove ogni \fIjobspec\fP dalla tabella dei job attivi. Se \fIjobspec\fP non è presente, e non viene fornita né l'opizone \fB\-a\fP né l'opzione \fB\-r\fP, viene usato il \fIjob corrente\fP. Se viene data l'opzione \fB\-h\fP, ogni \fIjobspec\fP non viene rimosso dalla tabella, ma è marcato in modo che .SM \fBSIGHUP\fP non venga inviato al job se la shell riceve un .SM \fBSIGHUP\fP. Se non è specificata alcuna \fIjobspec\fP l'opzione \fB\-a\fP richiede la rimozione o il marcamento di tutti i job; l'opzione \fB\-r\fP senza un argomento \fIjobspec\fP restringe l'operazione ai job in esecuzione. Il valore di ritorno è 0 tranne quando \fIjobspec\fP non specifica un job valido. .TP \fBecho\fP [\fB\-neE\fP] [\fIarg\fP ...] Emette gli \fIarg\fP, separati da spazi, seguiti da un newline. Lo stato di ritorno è 0, a meno che non si verifichi un errore di scrittura. Se è specificato \fB\-n\fP, il newline finale è soppresso. Se è data l'opzione \fB\-e\fP, viene abilitata l'interpretazione dei successivi caratteri preceduti dal carattere di protezione della barra inversa. L'opzione \fB\-E\fP disabilita l'interpretazione di questi caratteri di protezione, anche su sistemi dove essi sono interpretati in modo predefinito. L'opzione di shell \fBxpg_echo\fP può essere usata per determinare dinamicamente se \fBecho\fP espande questi caratteri di protezione in modo predefinito oppure no. \fBecho\fP non interpreta \fB\-\-\fP come fine delle opzioni. \fBecho\fP interpreta le seguenti sequenze di protezione: .RS .PD 0 .TP \fB\ea\fP avviso (segnale acustico) .TP \fB\eb\fP backspace .TP \fB\ec\fP elimina ulteriore output .TP \fB\ee\fP .TP \fB\eE\fP un carattere di escape .TP \fB\ef\fP salto pagina .TP \fB\en\fP codice di fine riga (newline) .TP \fB\er\fP ritorno carrello .TP \fB\et\fP tabulazione orizzontale .TP \fB\ev\fP tabulazione verticale .TP \fB\e\e\fP barra inversa .TP \fB\e0\fP\fInnn\fP il carattere a otto bit il cui valore è il valore ottale \fInnn\fP (da zero a tre cifre ottali) .TP \fB\ex\fP\fIHH\fP il carattere a otto bit il cui valore è il valore esadecimale \fIHH\fP (una o due cifre esadecimali) .TP \fB\eu\fP\fIHHHH\fP il carattere Unicode (ISO/IEC 10646) il cui valore è il valore esadecimale \fIHHHH\fP (da una a quattro cifre esadecimali) .TP \fB\eU\fP\fIHHHHHHHH\fP il carattere Unicode (ISO/IEC 10646) il cui valore è il valore esadecimale \fIHHHHHHHH\fP (da una a otto cifre esadecimali) .PD .RE .TP \fBenable\fP [\fB\-a\fP] [\fB\-dnps\fP] [\fB\-f\fP \fInome\-file\fP] [\fInome\fP ...] Abilita e disabilita i comandi incorporati della shell. Disabilitare un comando incorporato permette l'esecuzione di un comando residente su disco con lo stesso nome di un comando incorporato della shell senza dover specificare un percorso completo, anche se la shell normalmente cerca i comandi incorporati prima di quelli su disco. Se è usato \fB\-n\fP, ogni \fInome\fP è disabilitato; altrimenti, \fInomi\fP sono abilitati. Per esempio, per usare il programma binario \fBtest\fP trovato attraverso il .SM \fBPATH\fP, invece della versione incorporata nella shell, si esegue .if t \f(CWenable -n test\fP. .if n ``enable -n test''. L'opzione \fB\-f\fP richiede di caricare il nuovo comando incorporato \fInome\fP dall'oggetto condiviso \fInome\-file\fP, sui sistemi che supportano il caricamento dinamico. Bash utilizza il valore della variabile \fBBASH_LOADABLES_PATH\fP come elenco di percorsi separati dai due punti per cercare \fInome\-file\fP. Il valore predefinito dipende dal sistema. L'opzione \fB\-d\fP elimina un comando incorporato precedentemente caricato con \fB\-f\fP. Se nessun argomento \fInome\fP è specificato, o se viene fornita l'opzione \fB\-p\fP viene stampata una lista di tutti i comandi incorporati della shell. Senza altri argomenti di opzione la lista è formata da tutti i comandi incorporati della shell abilitati. Se è fornito \fB\-n\fP, vengono stampati solo i comandi incorporati disabilitati. Se è fornito \fB\-a\fP, la lista stampata include tutti i comandi incorporati, con l'indicazione per ciascuno se è abilitato o no. Se viene fornito \fB\-s\fP, l'output è ristretto ai comandi incorporati \fIspeciali\fP POSIX. Se non vengono fornite opzioni e \fInome\fP non è un comando incorporato, allora \fBenable\fP cercherà di caricare \fInome\fP da una libreria condivisa chiamata \fInome\fP, come il comando fosse .if t \f(CWenable \-f\fP \fIname name\fP . .if n ``enable -f \fIname name\fP . Il valore restituito è 0 a meno che \fInome\fP sia un comando incorporato della shell o ci sia un errore caricandone uno nuovo da una libreria condivisa. .TP \fBeval\fP [\fIarg\fP ...] Gli \fIarg\fP sono letti e concatenati insieme formando un singolo comando. Questo comando è quindi letto ed eseguito dalla shell, e il suo stato di uscita è ritornato come valore del comando \fBeval\fP. Se non vi è alcun \fIarg\fP, o vi sono solo argomenti nulli, \fBeval\fP ritorna 0. .TP \fBexec\fP [\fB\-cl\fP] [\fB\-a\fP \fInome\fP] [\fIcomando\fP [\fIargomenti\fP]] Se \fIcomando\fP è specificato, esso sostituisce la shell. Nessun nuovo processo viene creato. Gli \fIargomenti\fP diventano gli argomenti per \fIcomando\fP. Se viene fornita l'opzione \fB\-l\fP la shell pone un trattino all'inizio dell'argomento numero zero passato a \fIcomando\fP. Questo è quello che fa \fIlogin\fP(1). L'opzione \fB\-c\fP provoca l'esecuzione di \fIcomando\fP con un ambiente vuoto. Se viene fornita \fB\-a\fP la shell passa \fInome\fP come argomento numero zero del comando eseguito. Se \fIcomando\fP non può essere eseguito per qualche ragione, una shell non interattiva termina, a meno che non sia abilitata l'opzione di shell \fBexecfail\fP, nel qual caso restituisce insuccesso. Una shell interattiva restituisce insuccesso se il file non può essere eseguito. Una subshell esce incondizionatamente se \fBexec\fP fallisce. Se \fIcomando\fP non è specificato, qualsiasi ridirezione ha effetto nella shell corrente, e lo stato di ritorno è 0. Se si verifica un errore di ridirezione lo stato di ritorno è 1. .TP \fBexit\fP [\fIn\fP] Causa l'uscita della shell con uno stato d'uscita \fIn\fP. Se \fIn\fP è omesso, lo stato d'uscita è quello dell'ultimo comando eseguito. Un'intercettazione di segnale su .SM \fBEXIT\fP è eseguita prima che la shell termini. .TP \fBexport\fP [\fB\-fn\fP\^] [\fInome\fP[=\fIparola\fP]] ... .PD 0 .TP \fBexport \-p\fP .PD I \fInomi\fP forniti sono marcati per l'esportazione automatica nell'ambiente dei comandi eseguiti in seguito. Se è specificata l' opzione \fB\-f\fP, i \fInomi\fP si riferiscono a funzioni. Se il \fInome\fP è omesso o se se è fornita l'opzione \fB\-p\fP, viene stampata una lista di nomi di tutte le variabili esportate. L'opzione \fB\-n\fP provoca la rimozione della proprietà di esportazione da ogni \fInome\fP. Se un nome di variabile è seguito da =\fIparola\fP, il valore della variabile è impostato a \fIparola\fP. \fBexport\fP ritorna uno stato d'uscita di 0 tranne quando viene trovata un'opzione non valida, uno dei \fInomi\fP non è un nome valido di variabile di shell, o viene fornita l'opzione \fB\-f\fP con un \fInome\fP che non è il nome di una funzione. .TP \fBfc\fP [\fB\-e\fP \fInome\-editor\fP] [\fB\-lnr\fP] [\fIprimo\fP] [\fIultimo\fP] .PD 0 .TP \fBfc\fP \fB\-s\fP [\fIpat\fP=\fIrep\fP] [\fIcmd\fP] .PD Nella prima forma, seleziona un intervallo di comandi fra \fIprimo\fP e \fIultimo\fP dalla lista della cronologia e li mostra o li modifica e li riesegue . \fIPrimo\fP e \fIultimo\fP possono essere specificati come una stringa (per individuare l'ultimo comando che inizia con quella stringa) o come numero (un indice nella lista della cronologia, dove un numero negativo è usato a partire dal numero del comando corrente). Quando si elenca, un \fIprimo\fP o \fIultimo\fP pari a 0 è equivalente a \-1, e \-0 è equivalente al comando corrente (normalmente il comando \fBfc\fP); altrimenti 0 è equivalente a \-1 e \-0 non è valido. Se \fIultimo\fP non è specificato è impostato al comando corrente per l'elencazione (così che .if n ``fc \-l \-10'' .if t \f(CWfc \-l \-10\fP stampa gli ultimi 10 comandi) e a \fIprimo\fP altrimenti. Se \fIprimo\fP non è specificato è impostato al precedente comando per la modifica e a \-16 per l'elencazione. .sp 1 L'opzione \fB\-n\fP sopprime i numeri dei comandi quando li elenca. L'opzione \fB\-r\fP inverte l'ordine dei comandi. Se è specificata l'opzione \fB\-l\fP, i comandi sono elencati sullo standard output. Altrimenti, è invocato l'editor indicato da \fIename\fP su un file che contiene questi comandi. Se \fIename\fP è omesso, è usato il valore della variabile .SM \fBFCEDIT\fP, e il valore di .SM \fBEDITOR\fP se .SM \fBFCEDIT\fP non è impostata. Se né l'una né l'altra variabile è impostata, è usato .FN vi Quando la modifica è completata, i comandi modificati sono listati ed eseguiti. .sp 1 Nella seconda forma, \fIcomando\fP è rieseguito dopo che ogni istanza di \fIpat\fP è sostituita da \fIrep\fP. \fIComando\fP è interpretato come \fIprimo\fP.Un utile alias da usare con questo è .if n ``r="fc -s"'', .if t \f(CWr='fc \-s'\fP, così che digitando .if n ``r cc'' .if t \f(CWr cc\fP si esegue l'ultimo comando che inizia con .if n ``cc'' .if t \f(CWcc\fP e battendo .if n ``r'' .if t \f(CWr\fP si riesegue l'ultimo comando. .sp 1 Se è usata la prima forma, il valore di ritorno è 0 a meno che sia incontrata un'opzione non valida o \fIprimo\fP o \fIultimo\fP specifichino righe di cronologia fuori dall'intervallo esistente. Se è fornita l'opzione \fB\-e\fP, il valore di ritorno è il valore dell'ultimo comando eseguito, o insuccesso se avviene un errore con il file temporaneo dei comandi. Se è usata la seconda forma, lo stato di ritorno è quello del comando rieseguito, tranne quando \fIcmd\fP non specifica una riga di cronologia valida, nel qual caso \fBfc\fP ritorna insuccesso. .TP \fBfg\fP [\fIjobspec\fP] Riprende \fIjobspec\fP in primo piano, e lo rende il job corrente. Se \fIjobspec\fP non è presente, è usata la nozione della shell di \fIjob corrente\fP. Il valore di ritorno è quello del comando posto in primo piano, o insuccesso se eseguito mentre il job\-control è disabilitato o, quando eseguito col job\-control abilitato, se \fIjobspec\fP non specifica un job valido o \fIjobspec\fP specifica un job che era stato avviato senza job\-control. .TP \fBgetopts\fP \fIoptstring\fP \fInome\fP [\fIarg ...\fP] \fBgetopts\fP è usato dalle procedure di shell per analizzare i parametri posizionali. \fIoptstring\fP contiene i caratteri delle opzioni che devono essere riconosciuti; se un carattere è seguito da due punti, l'opzione si aspetta di avere un argomento, che dovrà essere separato dalla stessa da spazi bianchi. I due punti e il punto interrogativo non possono essere usati come caratteri di opzione. Ogni volta che è invocato, \fBgetopts\fP pone la successiva opzione nella variabile di shell \fInome\fP, inizializzando \fInome\fP se non esiste, e l'indice del prossimo argomento da elaborare nella variabile .SM \fBOPTIND\fP. .SM \fBOPTIND\fP è inizializzato a 1 ogni volta che la shell o uno script di shell viene invocato. Quando un'opzione richiede un argomento, \fBgetopts\fP pone quell'argomento nella variabile .SM \fBOPTARG\fP. La shell non reimposta .SM \fBOPTIND\fP automaticamente; questa variabile deve essere manualmente reimpostata tra più chiamate a \fBgetopts\fP dentro la stessa esecuzione della shell, se deve essere usato un nuovo insieme di parametri. .sp 1 Quando viene raggiunta la fine delle opzioni \fBgetopts\fP esce con un valore di ritorno maggiore di zero. .SM \fBOPTIND\fP è impostato all'indice del primo argomento senza opzioni e \fInome\fP viene impostato a ?. .sp 1 \fBgetopts\fP normalmente analizza i parametri posizionali, ma se più argomenti vengono dati come valori \fIarg\fP, \fBgetopts\fP analizza solo quelli. .sp 1 \fBgetopts\fP può informare degli errori in due modi. Se il primo carattere di \fIoptstring\fP è un due punti, è usata un'informazione di errore \fIsilenziosa\fP. Normalmente i messaggi diagnostici vengono stampati quando vengono trovate opzioni non valide o mancano argomenti alle opzioni. Se la variabile .SM \fBOPTERR\fP è impostata a 0, nessun messaggio di errore viene mostrato, anche se il primo carattere di \fIoptstring\fP non è due punti. .sp 1 Se è incontrata un'opzione non valida, \fBgetopts\fP pone ? nel \fInome\fP e, se non silenziosa, stampa un messaggio di errore e annulla .SM \fBOPTARG\fP. Se \fBgetopts\fP è silenziosa, il carattere di opzione trovato è posto in .SM \fBOPTARG\fP e nessun messaggio diagnostico è stampato. .sp 1 Se un argomento richiesto non è trovato, e \fBgetopts\fP non è silenziosa, un punto interrogativo (\^\fB?\fP\^) è posto in \fInome\fP, .SM \fBOPTARG\fP viene annullato, e viene stampato un messaggio diagnostico. Se \fBgetopts\fP è silenziosa, allora un carattere di due punti (\^\fB:\fP\^) è posto in \fInome\fP e .SM \fBOPTARG\fP è impostato al carattere di opzione trovato. .sp 1 \fBgetopts\fP ritorna 0 (vero) se viene trovata un'opzione, specificata o non specificata. Ritorna falso se viene incontrata la fine delle opzioni o avviene un errore. .TP \fBhash\fP [\fB\-lr\fP] [\fB\-p\fP \fInome\-file\fP] [\fB\-dt\fP] [\fInome\fP] Ogni volta che \fBhash\fP viene invocata, il percorso completo del comando \fInome\fP è determinato ricercando le directory in \fB$PATH\fP e viene memorizzato. Ogni nome di percorso precedentemente memorizzato viene perso. Se viene fornita l'opzione \fB\-p\fP, non viene effettuata nessuna ricerca di percorso e \fInome\-file\fP è usato come nome completo del comando. L'opzione \fB\-r\fP fa sì che la shell dimentichi tutti i percorsi memorizzati. L'opzione \fB\-d\fP fa sì che la shell dimentichi i percorsi memorizzati di ogni \fInome\fP. Se viene fornita l'opzione \fB\-t\fP è stampato il percorso completo al quale corrisponde ogni \fInome\fP. Se vengono forniti argomenti multipli di \fInome\fP con \fB\-t\fP, il \fInome\fP viene stampato prima del percorso completo indicizzato. L'opzione \fB\-l\fP provoca la visualizzazione dell'output in un formato riutilizzabile come input. Se nessun argomento è dato, ed è fornito solo \fB\-l\fP, è stampata l'informazione circa i comandi memorizzati. Lo stato di ritorno è 0 (vero) tranne quando \fInome\fP è irreperibile o viene fornita un'opzione non valida. .TP \fBhelp\fP [\fB\-dms\fP] [\fImodello\fP] Mostra utili informazioni sui i comandi incorporati. Se \fImodello\fP è specificato, \fBhelp\fP fornisce un aiuto dettagliato su tutti i comandi che corrispondono al \fImodello\fP; altrimenti è stampato l'aiuto per tutti i comandi incorporati e le strutture di controllo della shell. .RS .PD 0 .TP \fB\-d\fP Visualizza una breve descrizione di ogni \fImodello\fP .TP \fB\-m\fP Visualizza la descrizione di ogni \fImodello\fP in un formato simile a manpage .TP \fB\-s\fP Visualizza solo una breve sintassi d'uso per ogni \fImodello\fP .PD .PP Lo stato di ritorno è 0 tranne quando nessun comando è individuato dal \fImodello\fP. .RE .TP \fBhistory [\fP\fIn\fP\fB]\fP .PD 0 .TP \fBhistory\fP \fB\-c\fP .TP \fBhistory \-d\fP \fIscostamento\fP .TP \fBhistory \-d\fP \fIinizio\fP\fIfine\fP .TP \fBhistory\fP \fB\-anrw\fP [\fInome\-file\fP] .TP \fBhistory\fP \fB\-p\fP \fIarg\fP [\fIarg ...\fP] .TP \fBhistory\fP \fB\-s\fP \fIarg\fP [\fIarg ...\fP] .PD Senza opzioni, mostra la lista della cronologia dei comandi con i numeri di riga. Le righe elencate con un \fB*\fP sono state modificate. Con l'argomento \fIn\fP elenca solo le ultime \fIn\fP righe. Se la variabile di shell .SM \fBHISTTIMEFORMAT\fP è impostata e non nulla, è usata come stringa di formato di \fIstrftime\fP(3) per mostrare la data/ora associata a ogni elemento della cronologia. Nessuno spazio è interposto fra la data/ora formattata e la riga della cronologia. Se è fornito \fInome\-file\fP, questo è usato come nome del file di cronologia; altrimenti, è usato il valore di .SM \fBHISTFILE\fP. Le opzioni, se fornite, hanno i seguenti significati: .RS .PD 0 .TP \fB\-c\fP Svuota l'elenco della cronologia eliminando tutti gli elementi. .TP \fB\-d\fP \fIscostamento\fP Cancella l'elemento dalla cronologia alla posizione \fIscostamento\fP. Se \fIscostamento\fP è negativo viene interpretato come uno maggiore dell'ultima posizione della cronologia, quindi gli indici negativi partono dalla fine della cronologia e un indice \-1 si riferisce al comando attuale \fBhistory \-d\fP. .TP \fB\-d\fP \fIinizio\fP\-\fIfine\fP Cancella gli elementi della cronologia tra le posizioni \fIinizio\fP e \fIfine\fP, incluse. Valori positivi e negativi per \fIinizio\fP e \fIfine\fP sono interpretati come descritto in precedenza. .TP \fB\-a\fP Accoda le \*(lqnuove\*(rq righe al file della cronologia. Queste sono righe della cronologia inserite dall'inizio della corrente sessione di \fBbash\fP, ma non ancora aggiunte al file di cronologia. .TP \fB\-n\fP Inserisce le righe della cronologia non ancora lette dal file di cronologia nella corrente lista della cronologia. Queste sono le righe accodate al file di cronologia dall'inizio della corrente sessione di \fBbash\fP. .TP \fB\-r\fP Legge il contenuto del file di cronologia e lo aggiunge alla fine della cronologia corrente. .TP \fB\-w\fP Scrive la cronologia corrente sul file di cronologia, sovrascrivendo il contenuto del file di cronologia. .TP \fB\-p\fP Effettua la sostituzione della cronologia sui seguenti \fIarg\fP e mostra il risultato sullo standard output. Non conserva il risultato nell'elenco della cronologia. Ogni \fIarg\fP dev'essere quotato per disabilitare la normale espansione della cronologia. .TP \fB\-s\fP Memorizza gli \fIarg\fP nell'elenco della cronologia come un singolo comando. L'ultimo comando nell'elenco della cronologia viene rimosso prima che gli \fIarg\fP vengano aggiunti. .PD .PP Se la variabile .SM \fBHISTTIMEFORMAT\fP è impostata, l'informazione data/ora associata a ogni elemento della cronologia viene scritta nel file della cronologia, marcato col carattere di commento. Quando viene letto il file della cronologia, le righe che iniziano con il carattere di commento seguito immediatamente da una cifra sono interpretate come data e ora della voce di cronologia successiva. Il valore di ritorno è 0 tranne quando viene incontrata un'opzione non valida, avviene un errore mentre si legge o si scrive il file della cronologia, viene fornito uno \fIscostamento\fP non valido come argomento a \fB\-d\fP o l'espansione della cronologia fornita come argomento a \fB\-p\fP non ha successo. .RE .TP \fBjobs\fP [\fB\-lnprs\fP] [ \fIjobspec\fP ... ] .PD 0 .TP \fBjobs\fP \fB\-x\fP \fIcomando\fP [ \fIargs\fP ... ] .PD La prima forma elenca i job attivi. Le opzioni hanno i seguenti significati: .RS .PD 0 .TP \fB\-l\fP Elenca gli ID dei processi in aggiunta alle normali informazioni. .TP \fB\-n\fP Mostra le informazioni solo sui job che hanno cambiato stato dall'ultima notifica di stato mostrata all'utente. .TP \fB\-p\fP Elenca solo l'ID di processo del principale job del gruppo di processo. .TP \fB\-r\fP Mostra solo i job in esecuzione. .TP \fB\-s\fP Mostra solo i job sospesi. .PD .PP Se \fIjobspec\fP è specificato, l'output è limitato alle informazioni su quel job. Lo stato di ritorno è 0 a meno che venga incontrata un'opzione non valida o sia fornito un \fIjobspec\fP non valido. .PP Se è fornita l'opzione \fB\-x\fP, \fBjobs\fP sostituisce qualsiasi \fIjobspec\fP trovato in \fIcomando\fP o \fIargs\fP con il corrispondente ID del gruppo di processo, ed esegue \fIcomando\fP passandogli \fIargs\fP, e ritornando il suo stato d'uscita. .RE .TP \fBkill\fP [\fB\-s\fP \fIsigspec\fP | \fB\-n\fP \fIsignum\fP | \fB\-\fP\fIsigspec\fP] [\fIpid\fP | \fIjobspec\fP] ... .PD 0 .TP \fBkill\fP \fB\-l\fP|\fB\-L\fP [\fIsigspec\fP | \fIexit_status\fP] .PD Manda il segnale indicato da \fIsigspec\fP o \fIsignum\fP al processo indicato da \fIpid\fP o \fIjobspec\fP. \fIsigspec\fP è o un nome di segnale, senza distinzione tra maiuscole e minuscole, come .SM \fBSIGKILL\fP, (con o senza il prefisso .SM \fBSIG\fP) o un numero di segnale; \fIsignum\fP è un numero di segnale. Se \fIsigspec\fP non è presente, si suppone essere .SM \fBSIGTERM\fP. Un argomento \fB\-l\fP elenca i nomi dei segnali. Se sono forniti degli argomenti quando è specificata l'opzione \fB\-l\fP, sono elencati i nomi dei segnali corrispondenti agli argomenti, e lo stato di ritorno è 0. L'argomento \fIstato d'uscita\fP di \fB\-l\fP è un numero che specifica o un numero di segnale o lo stato d'uscita di un processo terminato da un segnale. L'opzione \fB\-L\fP è equivalente a \fB\-l\fP. \fBkill\fP restituisce 0 (vero) se almeno un segnale è stato inviato con successo, o falso se avviene un errore o se è incontrata un'opzione non valida. .TP \fBlet\fP \fIarg\fP [\fIarg\fP ...] Ogni \fIarg\fP è un'espressione aritmetica che deve essere valutata (si veda .SM \fBVALUTAZIONE ARITMETICA\fP sopra) .ie \n(zZ=1 in \fIbash(1)\fP). .el above). Se l'ultimo \fIarg\fP viene valutato 0, \fBlet\fP ritorna 1; altrimenti è ritornato 0. .TP \fBlocal\fP [\fIopzione\fP] [\fInome\fP[=\fIvalore\fP] ... | \- ] Per ogni argomento viene creata una variabile locale chiamata \fInome\fP e le viene assegnato \fIvalore\fP. L'\fIopzione\fP può essere una qualunque di quelle accettate da \fBdeclare\fP. Quando \fBlocal\fP è usato dentro una funzione, fa sì che la variabile \fInome\fP abbia una visibilità ristretta a quella funzione e ai suoi figli. Se \fInome\fP è \-, l'insieme delle opzioni di shell è reso locale alla funzione nella quale \fBlocal\fP è chiamato: le opzioni di shell cambiate con il comando incorporato \fBset\fP all'interno della funzione saranno ripristinate ai loro valori originari quando la funzione ritorna. Il ripristino viene effettuato come se si eseguisse il comando \fBset\fP per ripristinare i valori che erano presenti prima dell'invocazione della funzione. Senza alcun operando, \fBlocal\fP scrive una lista di variabili locali sullo standard output. È un errore usare \fBlocal\fP quando non si è dentro una funzione. Lo stato di ritorno è 0 tranne quando \fBlocal\fP è usata fuori da una funzione, viene fornito un \fInome\fP non valido o \fInome\fP è una variabile in sola lettura. .TP \fBlogout\fP Termina una shell di login. .TP \fBmapfile\fP [\fB\-d\fP \fIdelim\fP] [\fB\-n\fP \fInumero\fP] [\fB\-O\fP \fIorigine\fP] [\fB\-s\fP \fInumero\fP] [\fB\-t\fP] [\fB\-u\fP \fIfd\fP] [\fB\-C\fP \fIcallback\fP] [\fB\-c\fP \fIquantum\fP] [\fIarray\fP] .PD 0 .TP \fBreadarray\fP [\fB\-d\fP \fIdelim\fP] [\fB\-n\fP \fInumero\fP] [\fB\-O\fP \fIorigine\fP] [\fB\-s\fP \fInumero\fP] [\fB\-t\fP] [\fB\-u\fP \fIfd\fP] [\fB\-C\fP \fIcallback\fP] [\fB\-c\fP \fIquantum\fP] [\fIarray\fP] .PD Legge righe dallo standard input all'interno della variabile array indicizzata \fIarray\fP, o dal descrittore di file \fIfd\fP se viene fornita l'opzione \fB\-u\fP. La variabile .SM \fBMAPFILE\fP è l'\fIarray\fP predefinito. Le opzioni, se fornite, hanno il seguente significato: .RS .PD 0 .TP \fB\-d\fP Il primo carattere di \fIdelim\fP è usato per far terminare la riga di input, invece di newline. Se \fIdelim\fP è la stringa vuota, \fBmapfile\fP terminerà una riga quando leggerà il carattere NUL. .TP \fB\-n\fP Copia al massimo \fInumero\fP righe. Se \fInumero\fP è 0 vengono copiate tutte le righe. .TP \fB\-O\fP Inizia assegnando \fIarray\fP all'indice \fIorigine\fP. L'indice predefinito è 0. .TP \fB\-s\fP Ignora le prime \fInumero\fP righe lette. .TP \fB\-t\fP Rimuove il \fIdelimitatore\fP (il predefinito è "newline") finale da ogni riga letta. .TP \fB\-u\fP Legge le righe dal descrittore di file \fIfd\fP invece che dallo standard input. .TP \fB\-C\fP Valuta \fIcallback\fP ogni volta che vengono lette \fIquantum\fP righe. L'opzione \fB\-c\fP specifica \fIquantum\fP. .TP \fB\-c\fP Specifica il numero di righe lette tra una chiamata e l'altra di \fIcallback\fP. .PD .PP Se \fB\-C\fP è specificato senza \fB\-c\fP, il quantum predefinito è 5000. Quando \fIcallback\fP è valutato, viene fornito l'indice del successivo elemento di array da assegnare e la riga da attribuire a quell'elemento come argomenti aggiuntivi. \fIcallback\fP viene valutato dopo che la riga è stata letta, ma prima che l'elemento di array sia stato assegnato. .PP Se non è fornito con un'origine esplicita, \fBmapfile\fP azzera \fIarray\fP prima della relativa assegnazione. .PP \fBmapfile\fP ritorna successo, a meno che non vengano forniti un'opzione o un argomento di opzione non validi, \fIarray\fP sia non valido o non assegnabile, oppure se \fIarray\fP non è un array indicizzato. .RE .TP \fBpopd\fP [\-\fBn\fP] [+\fIn\fP] [\-\fIn\fP] Rimuove degli elementi dallo stack delle directory. Gli elementi sono numerati a partire da 0 e seguono l'ordine della loro elencazione come nel comando \fBdirs\fP. Senza argomenti, rimuove la directory in cima allo stack, ed effettua un \fBcd\fP verso la nuova directory in cima allo stack. Gli argomenti, se forniti, hanno il seguente significato: .RS .PD 0 .TP \fB\-n\fP Sopprime il normale cambiamento di directory quando rimuove directory dallo stack, ossia viene manipolato solo lo stack. .TP \fB+\fP\fIn\fP Rimuove l'\fIn\fP\-esimo elemento contando dalla sinistra della lista mostrata da \fBdirs\fP, partendo da zero, dallo stack. Per esempio: .if n ``popd +0'' .if t \f(CWpopd +0\fP rimuove la prima directory, .if n ``popd +1'' .if t \f(CWpopd +1\fP la seconda. .TP \fB\-\fP\fIn\fP Rimuove l'\fIn\fP\-esimo elemento contando dalla destra della lista mostrata da \fBdirs\fP, partendo da zero. Per esempio: .if n ``popd -0'' .if t \f(CWpopd -0\fP Rimuove l'ultima directory, .if n ``popd -1'' .if t \f(CWpopd -1\fP la penultima. .PD .PP Se l'elemento in cima allo stack delle directory è modificato e viene usata l'opzione \fI\-n\fP, \fBpopd\fP usa il comando incorporato \fBcd\fP per spostarsi sulla directory in cima allo stack. Se \fBcd\fP fallisce, \fBpopd\fP restituisce un valore non zero. .PP Altrimenti \fBpopd\fP ritorna falso se viene incontrata un'opzione non valida, se lo stack delle directory è vuoto, o se è specificato un elemento non esistente nello stack delle directory. .PP Se il comando \fBpopd\fP ha successo, bash esegue \fBdirs\fP per mostrare il contenuto finale dello stack delle directory, e ritorna con stato 0. .RE .TP \fBprintf\fP [\fB\-v\fP \fIvar\fP] \fIformato\fP [\fIargomenti\fP] Scrive gli \fIargomenti\fP formattati sullo standard output sotto il controllo del \fIformato\fP. Con l'opzione \fB\-v\fP l'output viene assegnato alla variabile \fIvar\fP piuttosto che essere stampato sullo standard output. .sp 1 Il \fIformato\fP è una stringa di caratteri che contiene tre tipi di oggetti: caratteri semplici, i quali sono semplicemente copiati sullo standard output, sequenze di protezione dei caratteri, che sono convertite e copiate sullo standard output, e specifiche di formato, ognuna delle quali provoca la stampa dell'\fIargomento\fP seguente. Oltre alle specifiche di formato \fIprintf\fP(1) standard, \fBprintf\fP interpreta le seguenti estensioni: .RS .PD 0 .TP \fB%b\fP fa sì che \fBprintf\fP espanda sequenze di protezione tramite la barra inversa nell'\fIargomento\fP corrispondente nello stesso modo di \fBecho \-e\fP. .TP \fB%q\fP fa sì che \fBprintf\fP stampi sull'output l'\fIargomento\fP corrispondente in un formato riutilizzabile come input di shell. .TP \fB%Q\fP come \fB%q\fP, ma applica l'eventuale precisione fornita all'\fIargomento\fP prima di quotarlo. .TP \fB%(\fP\fIdatefmt\fP\fB)T\fP fa sì che \fBprintf\fP stampi sull'output la stringa data\-ora che risulta dall'uso di \fIdatefmt\fP come stringa di formato per \fIstrftime\fP(3). L'\fIargomento\fP corrispondente è un numero intero che rappresenta il numero di secondi trascorso dall'epoca. Possono essere usati due valori di argomento speciali: \-1 rappresenta il tempo attuale e \-2 rappresenta il tempo in cui la shell è stata invocata. Se non viene indicato nessun argomento, il comportamento è lo stesso che con l'argomento \-1. Questa è un'eccezione rispetto al comportamento normale di \fBprintf\fP. .PD .PP Tutte le direttive %b, %q e %T usano gli argomenti per la larghezza del campo e la precisione dalla specifica di formato e scrivono esattamente quei byte (o usano comunque quello spazio) per l'argomento espanso, che normalmente conterrebbe più caratteri dell'originale. .PP Argomenti alle specifiche di formato non stringa sono trattati come costanti C, con l'eccezione che un segno meno o più iniziale è permesso, e che se il carattere iniziale coincide con un apostrofo o con delle virgolette, il valore è quello ASCII del carattere che segue. .PP Il \fIformato\fP è riutilizzato più volte fino all'esaurimento degli \fIargomenti\fP. Se il \fIformato\fP richiede più \fIargomenti\fP di quelli forniti, le specifiche di formato extra si comportano come se fosse stato fornito, a seconda del caso, il valore zero o una stringa nulla. Il valore di ritorno è 0 in caso di successo, diverso da zero in caso di insuccesso. .RE .TP \fBpushd\fP [\fB\-n\fP] [+\fIn\fP] [\-\fIn\fP] .PD 0 .TP \fBpushd\fP [\fB\-n\fP] [\fIdir\fP] .PD Aggiunge una directory in cima allo stack delle directory, o ruota lo stack, rendendo la nuova cima dello stack la corrente directory di lavoro. Senza argomenti, \fBpushd\fP scambia le due directory in cima e ritorna 0. Gli argomenti, se forniti, hanno il seguente significato: .RS .PD 0 .TP \fB\-n\fP Sopprime il normale cambio di directory quando si ruotano o si aggiungono directory allo stack, cosicché viene manipolato solo lo stack. .TP \fB+\fP\fIn\fP Ruota lo stack così che la \fIn\fP\-esima directory (contando dalla sinistra della lista mostrata da \fBdirs\fP, partendo da zero) vada in cima. .TP \fB\-\fP\fIn\fP Ruota lo stack così che la \fIn\fP\-esima directory (contando da destra della lista mostrata da \fBdirs\fP, partendo da zero) vada in cima. .TP \fIdir\fP Aggiunge \fIdir\fP sulla cima dello stack delle directory .PD .PP Dopo che lo stack è stato modificato, se non è stata fornita l'opzione \fB\-n\fP, \fBpushd\fP usa il comando incorporato \fBcd\fP per spostarsi sulla directory che sta in cima allo stack. Se \fBcd\fP fallisce, \fBpushd\fP restituisce un valore diverso da zero. .PP Altrimenti, se non sono forniti argomenti, \fBpushd\fP ritorna 0 tranne quando lo stack delle directory è vuoto. Quanto ruota lo stack delle directory \fBpushd\fP restituisce 0 a meno che lo stack stesso sia vuoto o se è indicato un elemento non esistente dello stack. .PP Se il comando \fBpushd\fP ha successo, bash esegue \fBdirs\fP per mostrare il contenuto finale dello stack delle directory. .RE .TP \fBpwd\fP [\fB\-LP\fP] Stampa il percorso assoluto della corrente directory di lavoro. Il percorso stampato non contiene alcun collegamento simbolico se è fornita l'opzione \fB\-P\fP o l'opzione \fB\-o physical\fP al comando incorporato \fBset\fP è abilitata. Se viene usata l'opzione \fB\-L\fP il percorso stampato può contenere collegamenti simbolici. Lo stato di ritorno è 0 tranne quando avviene un errore mentre si legge il percorso della directory corrente o viene fornita un'opzione non valida. .TP \fBread\fP [\fB\-ers\fP] [\fB\-a\fP \fIaname\fP] [\fB\-d\fP \fIdelim\fP] [\fB\-i\fP \fItesto\fP] [\fB\-n\fP \fInchars\fP] [\fB\-N\fP \fInchars\fP] [\fB\-p\fP \fIprompt\fP] [\fB\-t\fP \fItempo_limite\fP] [\fB\-u\fP \fIfd\fP] [\fInome\fP ...] Una riga viene letta dallo standard input, o dal descrittore di file \fIfd\fP fornito come argomento dell'opzione \fB\-u\fP, e spezzata in parole come descritto .ie \n(zZ=1 in \fIbash(1)\fP .el above in \fBWord Splitting\fP, e la prima parola è assegnata al primo \fInome\fP, la seconda parola al secondo \fInome\fP, e così via, e le parole rimaste, compresi i separatori, sono assegnate all'ultimo \fInome\fP. Se ci sono meno parole lette dalla riga di input che nomi, ai nomi rimanenti vengono assegnati valori nulli. I caratteri in .SM \fBIFS\fP sono usati per suddividere la riga in parole usando le stesse regole che la shell usa per l'espansione (descritta .ie \n(zZ=1 in \fIbash(1)\fP .el above in \fBWord Splitting\fP). Il carattere barra inversa (\fB\e\fP) può essere usato per rimuove il significato speciale al successivo carattere letto, o per la continuazione della riga. Le opzioni, se fornite, hanno il seguente significato: .RS .PD 0 .TP \fB\-a \fP\fIaname\fP Le parole sono assegnate a indici sequenziali della variabile array \fIaname\fP, partendo da 0. \fIaname\fP viene annullata prima dell'assegnamento dei nuovi valori. Altri argomenti \fInome\fP vengono ignorati. .TP \fB\-d \fP\fIdelim\fP Il primo carattere di \fIdelim\fP è usato per far terminare la riga di input, invece di newline. Se \fIdelim\fP è la stringa vuota, \fBread\fP terminerà una riga quando incontra il carattere NUL. .TP \fB\-e\fP Se lo standard input è collegato ad un terminale, \fBreadline\fP (vedere .SM \fBREADLINE\fP .ie \n(zZ=1 in \fIbash(1)\fP) .el above) è usato per ottenere la riga. Readline usa le impostazioni correnti per la modifica (o predefinite, se la modifica di riga non era precedentemente attiva), ma usa il completamento del nome\-file predefinito di Readline. .TP \fB\-i \fP\fItesto\fP Se \fBreadline\fP è in uso per leggere la riga, \fItesto\fP viene messo nel buffer di modifica prima che inizi la correzione. .TP \fB\-n \fP\fInchars\fP \fBread\fP è considerata completata dopo aver letto \fInchars\fP caratteri invece di aspettare una riga di input completa, ma rispetta un delimitatore se prima del delimitatore sono letti meno di \fInchars\fP caratteri. .TP \fB\-N \fP\fInchars\fP \fBread\fP è considerata completata dopo aver letto esattamente \fInchars\fP caratteri invece di aspettare una riga di input completa, a meno che non sia stato trovato un EOF o \fBread\fP sia fuori tempo massimo. I caratteri di delimitazione nell'input non vengono trattati in modo speciale e non provocano il completamento di \fBread\fP finché non vengono letti \fInchars\fP caratteri. Il risultato non è spezzato dai caratteri in \fBIFS\fP; l'intento è che alla variabile siano assegnati esattamente quel numero di caratteri letti (con l'eccezione della barra inversa [\]; vedi l'opzione \fB\-r\fP più avanti). .TP \fB\-p \fP\fIprompt\fP Visualizza \fIprompt\fP sullo standard error, senza un newline finale, prima di tentare di leggere qualsiasi input. Il prompt è mostrato solo se l'input proviene da un terminale. .TP \fB\-r\fP La barra inversa non fa da carattere di protezione. La barra inversa è considerata come parte della riga. In particolare, una coppia barra_inversa\-newline non può essere usata poi come una continuazione di riga. .TP \fB\-s\fP Modalità silenziosa. Se l'input viene da un terminale i caratteri immessi non vengono visualizzati sul terminale. .TP \fB\-t \fP\fItempo_limite\fP Fa sì che \fBread\fP vada fuori tempo massimo e ritorni insuccesso se un riga completa di input (o il numero di caratteri specificato) non viene letta entro \fItempo_limite\fP secondi. \fItempo_limite\fP può essere un numero decimale con una parte frazionaria dopo il separatore decimale. Quest'opzione produce effetti solo se \fBread\fP sta leggendo l'input da un terminale, da una pipe o da un altro file speciale; non produce effetti quando legge da file regolari. Se \fBread\fP raggiunge il tempo massimo, salva quanto letto nella variabile \fInome\fP. Se \fItempo_limite\fP è 0, \fBread\fP ritorna successo se l'input è disponibile nel descrittore di file specificato, insuccesso altrimenti. Lo stato d'uscita è maggiore di 128 se viene superato il limite di tempo. .TP \fB\-u \fP\fIfd\fP Legge l'input dal descrittore di file \fIfd\fP. .PD .PP Se non sono forniti \fInomi\fP la riga letta, dalla quale viene rimosso il delimitatore finale, viene assegnata alla variabile .SM \fBREPLY\fP. Lo stato d'uscita è 0, tranne quando viene raggiunta la fine del file, \fBread\fP esaurisce il tempo limite consentito (nel qual caso lo stato d'uscita è maggiore di 128), se c'è un problema nell'assegnamento a variabile (come quando si usa un nome di variabile in sola lettura), o viene fornito un descrittore di file non valido come argomento a \fB\-u\fP. .RE .TP \fBreadonly\fP [\fB\-aAf\fP] [\fB\-p\fP] [\fInome\fP[=\fIparola\fP] ...] .PD I \fInomi\fP dati sono da considerare in sola lettura; i valori di questi \fInomi\fP non possono essere cambiati dagli assegnamenti successivi. Se è fornita l'opzione \fB\-f\fP, sono così marcate le funzioni corrispondenti ai \fInomi\fP. L'opzione \fB\-a\fP restringe le variabili agli array indicizzati; l'opzione \fB\-A\fP restringe le variabili agli array associativi. Se vengono fornite entrambe le opzioni, \fB\-A\fP ha la precedenza. Se nessun argomento \fInome\fP è dato, o se è fornita l'opzione \fB\-p\fP, viene stampata una lista di tutti i nomi in sola lettura. Le altre opzioni possono essere usate per restringere l'output a una sotto\-serie della serie di nomi in sola lettura. L'opzione \fB\-p\fP provoca la visualizzazione dell'output in un formato riutilizzabile come input. Se un nome di variabile è seguito da =\fIparola\fP il valore della variabile è impostato a \fIparola\fP. Lo stato di ritorno è 0 tranne quando è incontrata un'opzione non valida, uno dei \fInomi\fP non è un nome di variabile di shell valido, o viene fornita l'opzione \fB\-f\fP con un \fInome\fP che non è una funzione. .TP \fBreturn\fP [\fIn\fP] Fa sì che una funzione termini l'esecuzione e torni al chiamante con il valore di ritorno specificato da \fIn\fP. Se \fIn\fP è omesso, lo stato di ritorno è quello dell'ultimo comando eseguito nel corpo della funzione. Se \fBreturn\fP è eseguito nella gestione di un segnale, l'ultimo comando usato per determinare lo stato di uscita è quello precedente alla gestione del segnale. Se \fBreturn\fP è eseguito all'interno della gestione del segnale \fBDEBUG\fP, l'ultimo comando è quello eseguito all'interno della gestione del segnale prima dell'invocazione di \fBreturn\fP. Se \fBreturn\fP è usato fuori da una funzione, ma durante l'esecuzione di uno script tramite il comando \fB.\fP (\fBsource\fP), fa sì che la shell smetta di eseguire quello script e ritorni o \fIn\fP o lo stato d'uscita dell'ultimo comando eseguito dentro lo script come stato d'uscita dello script. Se viene fornito \fIn\fP, il valore di ritorno è composta dai suoi 8 bit meno significativi. Lo stato restituito è diverso da zero se a \fBreturn\fP viene fornito un valore non numerico o se usato fuori da una funzione e non durante l'esecuzione di uno script per mezzo di \fB.\fP\^ or \fBsource\fP. Qualsiasi comando associato alla gestione del segnale \fBRETURN\fP viene eseguito prima che l'esecuzione riprenda dopo la funzione o script. .TP \fBset\fP [\fB\-abefhkmnptuvxBCEHPT\fP] [\fB\-o\fP \fIopzione\-nome\fP] [\fB\-\-\fP] [\fB\-\fP] [\fIarg\fP ...] .PD 0 .TP \fBset\fP [\fB+abefhkmnptuvxBCEHPT\fP] [\fB+o\fP \fIopzione\-nome\fP] [\fB\-\-\fP] [\fB\-\fP] [\fIarg\fP ...] .PD Senza opzioni, il nome e il valore di ogni variabile di shell vengono visualizzati in un formato riutilizzabile come input per impostare o reimpostare le variabili attualmente impostate. Le variabili in sola lettura non possono essere reimpostate. In \fImodalità posix\fP sono elencate solo le variabili di shell. L'output è ordinato in base alla localizzazione corrente. Quando sono specificate opzioni, queste impostano o annullano attributi di shell. Gli argomenti che rimangono eventualmente dopo che le opzioni sono state elaborate sono trattati come valori per i parametri posizionali e vengono assegnati, nell'ordine, a \fB$1\fP, \fB$2\fP, \fB...\fP \fB$\fP\fIn\fP. Le opzioni, se specificate, hanno i seguenti significati: .RS .PD 0 .TP 8 \fB\-a\fP A ogni variabile o funzione che è creata o modificata viene dato l'attributo export e marcata come da esportare verso l'ambiente dei comandi successivi. .TP 8 \fB\-b\fP Riporta immediatamente lo stato dei job in background terminati, invece che prima di stampare il prossimo prompt primario. Questo è applicabile solo quando è abilitato il job\-control. .TP 8 \fB\-e\fP Termina immediatamente se una \fIpipeline\fP (che può consistere di un solo \fIcomando semplice\fP), una \fIlista\fP, on un \fIcomando composto\fP (vedi .SM \fBGRAMMATICA DELLA SHELL\fP sopra) .ie \n(zZ=1 in \fIbash(1)\fP), .el above), termina con uno stato diverso da zero. La shell non esce se il comando che non ha successo fa parte di un elenco di comandi che segue subito dopo una parola chiave \fBwhile\fP o \fBuntil\fP, se fa parte di un controllo che segue le parole riservate \fBif\fP o \fBelif\fP, se fa parte di qualsiasi comando eseguito in una lista \fB&&\fP o \fB||\fP tranne il comando che segue \fB&&\fP o \fB||\fP finali, o di qualsiasi comando in una pipeline escluso l'ultimo, o se il valore di ritorno del comando è stato negato con \fB!\fP. Se un comando composto oltre che una subshell restituisce uno stato diverso da zero perché un comando non è andato a buon fine mentre \fB\-e\fP veniva ignorato, la shell non esce. Un comando sul segnale intercettato \fBERR\fP, se impostato, è eseguito prima dell'uscita della shell. Questa opzione si applica all'ambiente di shell e a ogni ambiente di subshell separatamente (si veda .SM \fBAMBIENTE DI ESECUZIONE DEL COMANDO\fP sopra) .ie \n(zZ=1 in \fIbash(1)\fP), .el above), e può provocare l'uscita delle subshell prima di aver eseguito tutti i comandi nella subshell. .if t .sp 0.5 .if n .sp 1 Se un comando composto o una funzione di shell è eseguito in un contesto in cui \fB\-e\fP è ignorato, nessuno dei comandi eseguiti all'interno di un comando composto o nel corpo di una funzione verrà influenzato dall'impostazione di \fB\-e\fP, anche se \fB\-e\fP è impostato e un comando ritorna uno stato di insuccesso. Se un comando composto o una funzione di shell imposta \fB\-e\fP durante l'esecuzione in un contesto in cui \fB\-e\fP è ignorato, quelle impostazioni non avranno alcun effetto finché il comando composto o il comando contenente la chiamata di funzione sia completato. .TP 8 \fB\-f\fP Disabilita l'espansione di percorso. .TP 8 \fB\-h\fP Ricorda la posizione dei comandi man mano che sono ritrovati per l'esecuzione. Questa è abilitata in modo predefinito. .TP 8 \fB\-k\fP Tutti gli argomenti nella forma di istruzioni di assegnamento sono posti nell'ambiente per un comando, non solo quelli che precedono il nome del comando stesso. .TP 8 \fB\-m\fP Modo monitor. Il job\-control è abilitato. Quest'opzione è attiva in modo predefinito per le shell interattive, su sistemi che lo supportano (si veda .SM \fBJOB\-CONTROL\fP sopra). .ie \n(zZ=1 in \fIbash(1)\fP). .el above). Tutti i processi sono eseguiti in un gruppo di processo separato. Quando un job in background è completato, la shell stampa una riga che contiene il suo stato d'uscita. .TP 8 \fB\-n\fP Legge i comandi ma non li esegue. Questo può essere usato per controllare uno script di shell per errori di sintassi. Questo viene ignorato se la shell è interattiva. .TP 8 \fB\-o \fP\fInome\-opzione\fP Il \fInome\-opzione\fP può essere uno dei seguenti: .RS .TP 8 \fBallexport\fP Lo stesso di \fB\-a\fP. .TP 8 \fBbraceexpand\fP Lo stesso di \fB\-B\fP. .TP 8 \fBemacs\fP Usa una interfaccia di modifica della riga di comando in stile emacs. Questo è abilitato in modo predefinito quando la shell è interattiva, a meno che la shell non sia avviata con l'opzione \fB\-\-noediting\fP. Questo inoltre influisce sull'interfaccia di modifica usata per \fBread \-e\fP. .TP 8 \fBerrexit\fP Lo stesso di \fB\-e\fP. .TP 8 \fBerrtrace\fP Lo stesso di \fB\-E\fP. .TP 8 \fBfunctrace\fP Lo stesso di \fB\-T\fP. .TP 8 \fBhashall\fP Lo stesso di \fB\-h\fP. .TP 8 \fBhistexpand\fP Lo stesso di \fB\-H\fP. .TP 8 \fBhistory\fP Abilita la cronologia dei comandi, come descritto .ie \n(zZ=1 in \fIbash(1)\fP .el above in precedenza, sotto .SM \fBCRONOLOGIA\fP. Questa opzione è attiva in modo predefinito nelle shell interattive. .TP 8 \fBignoreeof\fP L'effetto è lo stesso come se fosse stato eseguito il comando di shell .if t \f(CWIGNOREEOF=10\fP .if n ``IGNOREEOF=10'' (si veda \fBVariabili di shell\fP sopra). .ie \n(zZ=1 in \fIbash(1)\fP). .el above). .TP 8 \fBkeyword\fP Lo stesso di \fB\-k\fP. .TP 8 \fBmonitor\fP Lo stesso di \fB\-m\fP. .TP 8 \fBnoclobber\fP Lo stesso di \fB\-C\fP. .TP 8 \fBnoexec\fP Lo stesso di \fB\-n\fP. .TP 8 \fBnoglob\fP Lo stesso di \fB\-f\fP. .TP 8 \fBnolog\fP Attualmente ignorato. .TP 8 \fBnotify\fP Lo stesso di \fB\-b\fP. .TP 8 \fBnounset\fP Lo stesso di \fB\-u\fP. .TP 8 \fBonecmd\fP Lo stesso di \fB\-t\fP. .TP 8 \fBphysical\fP Lo stesso di \fB\-P\fP. .TP 8 \fBpipefail\fP Se impostato, il valore di ritorno di una pipeline è il valore dell'ultimo comando (quello più a destra) che esce con uno stato d'uscita diverso da zero, o zero se tutti i comandi nella pipeline escono con successo. Come comportamento predefinito, questa opzione è disabilitata. .TP 8 \fBposix\fP Cambia il comportamento di \fBbash\fP dove le operazioni predefinite differiscono dallo standard POSIX, in modo da corrispondere allo standard (\fImodalità posix\fP). Si veda più avanti .SM \fBVEDERE ANCHE\fP .ie \n(zZ=1 in \fIbash(1)\fP .el below dove viene citato un documento che spiega nel dettaglio come la modalità posix influenza il comportamento di bash. .TP 8 \fBprivileged\fP Lo stesso di \fB\-p\fP. .TP 8 \fBverbose\fP Lo stesso di \fB\-v\fP. .TP 8 \fBvi\fP Usa un'interfaccia di modifica della riga di comando in stile vi. Questo inoltre influisce sull'interfaccia di modifica usata per \fBread \-e\fP. .TP 8 \fBxtrace\fP Lo stesso di \fB\-x\fP. .sp .5 .PP Se \fB\-o\fP è fornito con nessun \fInome\-opzione\fP, sono stampati i valori delle opzioni correnti. Se \fB+o\fP è fornito con nessun \fInome\-opzione\fP, una serie di comandi \fBset\fP per ricreare le impostazioni dell'opzione corrente viene visualizzata sullo standard output. .RE .TP 8 \fB\-p\fP Attiva il modo \fIprivilegiato\fP. In questo modo, i file .SM \fB$ENV\fP e .SM \fB$BASH_ENV\fP non vengono elaborati, le funzioni di shell non sono ereditate dall'ambiente e le variabili .SM \fBSHELLOPTS\fP, .SM \fBBASHOPTS\fP, .SM \fBCDPATH\fP e .SM \fBGLOBIGNORE\fP se appaiono in un ambiente, vengono ignorate. Se la shell è avviata con l'id (gruppo) effettivo dell'utente non uguale all'id (gruppo) reale dell'utente, e non viene fornita l'opzione \fB\-p\fP, queste azioni vengono eseguite e l'id effettivo dell'utente è impostato all'id reale dell'utente. Se viene fornita l'opzione \fB\-p\fP all'avvio, l'id effettivo dell'utente non è reimpostato. Disattivare questa opzione fa sì che gli id effettivi dell'utente e del gruppo siano impostati agli id reali dell'utente e del gruppo. .TP 8 \fB\-r\fP Abilita una modalità della shell più stringente. Questa opzione non può essere disabilitata una volta abilitata. .TP 8 \fB\-t\fP Esce dopo aver letto ed eseguito un comando. .TP 8 \fB\-u\fP Tratta le variabili e i parametri non impostati, diversi dai parametri speciali "@" e "*", o variabili vettore che hanno come indice "@" o "*", come un errore quando effettua l'espansione di parametro. Se l'espansione è tentata su una variabile o parametro non impostato, la shell stampa un messaggio di errore e, se non interattiva, esce con uno stato diverso da zero. .TP 8 \fB\-v\fP Stampa le righe in input alla shell appena sono lette. .TP 8 \fB\-x\fP Dopo l'espansione di ogni \fIcomando semplice\fP, comando \fBfor\fP, comando \fBcase\fP, comando \fBselect\fP o comando \fBfor\fP aritmetico, mostra il valore espanso di .SM \fBPS4\fP, seguito dal comando e dai suoi argomenti espansi o dall'elenco di parole associate. .TP 8 \fB\-B\fP La shell effettua l'espansione delle parentesi graffe (si veda \fBEspansione delle parentesi graffe\fP sopra). .ie \n(zZ=1 in \fIbash(1)\fP). .el above). Questo è attivo in modo predefinito. .TP 8 \fB\-C\fP Se impostato, \fBbash\fP non sovrascrive un file esistente con gli operatori di ridirezione \fB>\fP, \fB>&\fP e \fB<>\fP. Una sovrascrittura può ancora essere ottenuta creando i file di output usando l'operatore di ridirezione \fB>|\fP al posto di \fB>\fP. .TP 8 \fB\-E\fP Se impostato, ogni segnale intercettato \fBERR\fP è ereditato dalle funzioni di shell, sostituzioni di comando e comandi eseguiti in un ambiente di subshell. Il segnale intercettato \fBERR\fP non viene normalmente ereditato in questi casi. .TP 8 \fB\-H\fP Abilita la sostituzione della cronologia in stile \fB!\fP. Quest'opzione è attiva in modo predefinito quando la shell è interattiva. .TP 8 \fB\-P\fP Se impostato, non risolve i collegamenti simbolici quando esegue comandi come \fBcd\fP che cambiano la directory di lavoro corrente. È invece usata la struttura di directory fisica. Come comportamento predefinito, \fBbash\fP segue la successione logica delle directory quando si eseguono comandi che cambiano la directory corrente. .TP 8 \fB\-T\fP Se impostata, i comandi sui segnali intercettati \fBDEBUG\fP e \fBRETURN\fP sono ereditati dalle funzioni di shell, dalle sostituzioni di comando e dai comandi eseguiti in un ambiente di subshell. I segnali intercettati \fBDEBUG\fP e \fBRETURN\fP normalmente non vengono ereditati in questi casi. .TP 8 \fB\-\-\fP Se nessun argomento segue questa opzione, allora i parametri posizionali sono assenti. Altrimenti, i parametri posizionali sono impostati agli \fIarg\fP, anche se alcuni di loro iniziano con un \fB\-\fP. .TP 8 \fB\-\fP Segnala la fine delle opzioni, e fa sì che tutti i rimanenti \fIarg\fP siano assegnati ai parametri posizionali. Le opzioni \fB\-x\fP e \fB\-v\fP sono disattivate. Se non vi è alcun \fIarg\fP, i parametri posizionali rimangono inalterati. .PD .PP Le opzioni sono disattivate in modo predefinito se non specificato diversamente. Usare + piuttosto che \- causa la disattivazione di queste opzioni. Le opzioni possono anche essere specificate come argomenti a un'invocazione della shell. Il corrente insieme di opzioni può essere trovato in \fB$\-\fP. Lo stato di ritorno è sempre 0 (vero) a meno che non si incontri un'opzione non valida. .RE .TP \fBshift\fP [\fIn\fP] I parametri posizionali da \fIn\fP+1 ... sono rinominati \fB$1\fP \fB....\fP I parametri rappresentati dai numeri \fB$#\fP fino a \fB$#\fP\-\fIn\fP+1 non sono impostati. \fIn\fP dev'essere un numero non negativo minore o uguale a \fB$#\fP. Se \fIn\fP è 0, nessun parametro viene cambiato. Se \fIn\fP è omesso, è considerato valere 1. Se \fIn\fP è più grande di \fB$#\fP, i parametri posizionali non sono cambiati. Lo stato di ritorno è più grande di 0 se \fIn\fP è più grande di \fB$#\fP o minore di 0; altrimenti 0. .TP \fBshopt\fP [\fB\-pqsu\fP] [\fB\-o\fP] [\fInome\-opzione\fP ...] Attiva/disattiva i valori delle impostazioni che controllano il comportamento opzionale della shell. Le impostazioni possono essere o quelle elencate sotto o, se viene usata l'opzione \fB\-o\fP, quelle disponibili con l'opzione \fB\-o\fP al comando incorporato \fBset\fP. Senza opzioni, o con l'opzione \fB\-p\fP, viene mostrata una lista di tutte le opzioni impostabili, con una indicazione se ognuna è impostata o no; se vengono forniti \fInomi\-opzioni\fP, l'output è ristretto a queste opzioni. L'opzione \fB\-p\fP fa sì che l'output sia mostrato in una forma che può essere riutilizzata come input. Altre opzioni hanno il seguente significato: .RS .PD 0 .TP \fB\-s\fP Abilita (attiva) ogni \fIoptname\fP. .TP \fB\-u\fP Disabilita (disattiva) ogni \fIoptname\fP. .TP \fB\-q\fP Sopprime il normale output (modalità silenziosa); lo stato di ritorno indica se il \fIoptname\fP è attivato o non attivato. Se sono dati argomenti \fIoptname\fP multipli con \fB\-q\fP, lo stato di ritorno è 0 se tutti gli \fIoptname\fP sono attivati; diverso da zero altrimenti. .TP \fB\-o\fP Restringe i valori di \fIoptname\fP a quelli definiti per l'opzione \fB\-o\fP del comando incorporato \fBset\fP. .PD .PP Se una delle opzioni \fB\-s\fP o \fB\-u\fP viene usata senza argomenti \fIoptname\fP, \fBshopt\fP mostra solo quelle opzioni che sono, rispettivamente, attivate o non attivate. Se non diversamente indicato le opzioni \fBshopt\fP sono disabilitate (non attivate) in modo predefinito. .PP Lo stato di ritorno quando vengono elencate delle opzioni è 0 se tutti gli \fIoptname\fP sono abilitati, altrimenti è diverso da zero. Quando si impostano o si rimuovono opzioni, lo stato di ritorno è 0 tranne quando \fIoptname\fP non è una valida opzione di shell. .PP L'elenco delle opzioni di \fBshopt\fP è: .if t .sp .5v .if n .sp 1v .PD 0 .TP 8 \fBassoc_expand_once\fP Se abilitato, la shell sopprime la valutazione multipla degli indici usati con vettori associativi durante la valutazione delle espressioni aritmetiche, durante l'esecuzione dei comandi incorporati che assegnano variabili, e durante l'esecuzione di comandi incorporati che derefenziano vettori. .TP 8 \fBautocd\fP Se impostato, viene eseguito un nome di comando che è il nome di una directory come se fosse un argomento del comando \fBcd\fP. Questa opzione viene usata solo dalle shell interattive. .TP 8 \fBcdable_vars\fP Se impostata, un argomento al comando incorporato \fBcd\fP che non sia una directory è considerato come il nome di una variabile il cui valore è la directory verso cui cambiare. .TP 8 \fBcdspell\fP Se impostata, vengono corretti errori minori nell'ortografia di un componente di directory in un comando \fBcd\fP. Gli errori ricercati sono caratteri invertiti, mancanza di un carattere e un carattere in più. Se viene trovata una correzione il nome\-file corretto viene stampato e il comando prosegue. Quest'opzione è usata solo dalle shell interattive. .TP 8 \fBcheckhash\fP Se impostata, \fBbash\fP controlla che un comando trovato in una tabella hash esista prima di tentarne l'esecuzione. Se un comando la cui posizione è disponibile in un elemento della tabella hash non esiste più, viene effettuata una normale ricerca di percorso. .TP 8 \fBcheckjobs\fP Se impostato, \fBbash\fP elenca lo stato dei job in esecuzione e di quelli terminati prima di uscire da una shell interattiva. Se vi sono job in esecuzione, l'uscita verrà rimandata fino a quando non viene tentata una seconda uscita senza che intervenga un comando (si veda .SM \fBJOB CONTROL\fP sopra). .ie \n(zZ=1 in \fIbash(1)\fP). .el above). La shell ritarda sempre l'uscita se un qualsiasi job viene fermato. .TP 8 \fBcheckwinsize\fP Se impostata, \fBbash\fP controlla la dimensione della finestra dopo ogni comando esterno (non incorporato) e, se necessario, aggiorna i valori di .SM \fBLINES\fP e .SM \fBCOLUMNS\fP. Quest'opzione è abilitata in modo predefinito. .TP 8 \fBcmdhist\fP Se impostata, \fBbash\fP tenta di salvare tutte le righe di un comando a riga multipla nello stesso elemento di cronologia. Questo facilita la ripetizione di comandi multiriga. Questa opzione è abilitata in modo predefinito, ma ha effetto solo se è abilitata la cronologia dei comandi, come descritto .ie \n(zZ=1 in \fIbash(1)\fP .el above sopra in .SM \fBCRONOLOGIA\fP. .PD 0 .TP 8 \fBcompat31\fP .TP 8 \fBcompat32\fP .TP 8 \fBcompat40\fP .TP 8 \fBcompat41\fP .TP 8 \fBcompat42\fP .TP 8 \fBcompat43\fP .TP 8 \fBcompat44\fP .TP 8 \fBcompat50\fP .PD Questi controllano alcuni aspetti della modalità di compatibilità della shell (vedere .SM \fBMODALITÀ COMPATIBILE DELLA SHELL\fP .ie \n(zZ=1 in \fIbash(1)\fP). .el below). .TP 8 \fBcomplete_fullquote\fP Se impostata, \fBbash\fP quota tutti i metacaratteri di shell nei nomi\-file e di directory quando effettua il completamento. Se non è impostata, \fBbash\fP rimuove i metacaratteri come il segno del dollaro dal set di caratteri che saranno quotati nei nomi\-file completati quando questi metacaratteri appaiono in riferimenti a variabili di shell nelle parole da completare. Questo vuol dire che i segni del dollaro nei nomi di variabile che si espandono a directory non verranno quotati; comunque, non saranno quotati neanche i segni del dollaro che appaiono nei nomi\-file. Questo è attivo solo quando bash usa le barre inverse per quotare i nomi\-file completati. Questa variabile è impostata in modo predefinito, che è il comportamento predefinito di bash nelle versioni fino alla 4.2. .TP 8 \fBdirexpand\fP Se impostata, \fBbash\fP sostituisce i nomi di directory con i risultati dell'espansione di parola mentre effettua il completamento del nome di file. Questo cambia i contenuti del buffer di modifica di readline. Se non è impostata, \fBbash\fP tenta di conservare ciò che ha scritto l'utente. .TP 8 \fBdirspell\fP Se impostata, \fBbash\fP tenta la correzione dell'ortografia sui nomi di directory durante il completamento di parola se il nome di directory fornito inizialmente non esiste. .TP 8 \fBdotglob\fP Se impostata, \fBbash\fP include i nomi\-file che iniziano con un `.' nel risultato dell'espansione del percorso. I nomi\-file \fB\*(lq.\*(rq\fP e \fB\*(lq..\*(rq\fP devono essere sempre confrontati esplicitamente, anche se \fBdotglob\fP è impostato. .TP 8 \fBexecfail\fP Se impostata, una shell non interattiva non esce se non può eseguire il file specificato come argomento al comando incorporato \fBexec\fP. Una shell interattiva non esce se \fBexec\fP non ha successo. .TP 8 \fBexpand_aliases\fP Se impostata, gli alias vengono espansi come descritto .ie \n(zZ=1 in \fIbash(1)\fP .el above in precedenza, sotto .SM \fBALIASES\fP. Questa opzione è abilitata in modo predefinito per le shell interattive. .TP 8 \fBextdebug\fP Se impostata all'invocazione della shell, o in un file di avvio della shell, provvede all'esecuizone del "debugger profile" prima che la shell venga avviata, allo stesso modo dell'opzione \fB\-\-debugger\fP.Se impostata dopo l'invocazione, il comportamento previsto per poter usare dei debugger è abilitato: .RS .TP \fB1.\fP L'opzione \fB\-F\fP al comando incorporato \fBdeclare\fP mostra il nome di file di origine e il numero di riga corrispondente a ogni nome di funzione fornita come argomento. .TP \fB2.\fP Se il comando eseguito nella gestione del segnale \fBDEBUG\fP ritorna un valore diverso da zero, il comando successivo viene saltato e non è eseguito. .TP \fB3.\fP Se il comando eseguito nella gestione del segnale \fBDEBUG\fP ritorna il valore 2, e la shell è in esecuzione in una subroutine (una funzione di shell o uno script di shell eseguito dai comandi incorporati \fB.\fP o \fBsource\fP), la shell simula una chiamata a \fBreturn\fP. .TP \fB4.\fP .SM \fBBASH_ARGC\fP e .SM \fBBASH_ARGV\fP sono aggiornati come descritto nelle loro descrizioni .ie \n(zZ=1 in \fIbash(1)\fP). .el above). .TP \fB5.\fP Il tracciamento delle funzioni è abilitato: sostituzione di comando, funzioni di shell, e subshell invocate con \fB(\fP \fIcomando\fP \fB)\fP ereditano le intercettazione di segnale \fBDEBUG\fP e \fBRETURN\fP. .TP \fB6.\fP Il tracciamento degli errori è abilitato: sostituzione di comando, funzioni di shell, e subshell invocate con \fB(\fP \fIcomando\fP \fB)\fP ereditano le intercettazione di segnale \fBERR\fP. .RE .TP 8 \fBextglob\fP Se impostata, le caratteristiche di corrispondenza estesa di modelli descritte .ie \n(zZ=1 in \fIbash(1)\fP .el above sotto \fBEspansione di percorso\fP, sono abilitate. .TP 8 \fBextquote\fP Se impostato, la quotatura \fB$\fP\(aq\fIstring\fP\(aq e \fB$\fP"\fIstring\fP" è effettuata all'interno delle espansioni di \fB${\fP\fIparametro\fP\fB}\fP racchiuse tra virgolette. Quest'opzione è abilitata in modo predefinito. .TP 8 \fBfailglob\fP Se impostata, i modelli che non generano nomi validi di file durante l'espansione del percorso danno come risultato un errore di espansione. .TP 8 \fBforce_fignore\fP Se impostata, i suffissi specificati dalla variabile di shell .SM \fBFIGNORE\fP fanno si che delle parole vengano ignorate quando viene effettuato il completamento delle parole anche se le parole ignorate sono i soli possibili completamenti. Si veda .SM \fBVARIABILI DELLA SHELL\fP .ie \n(zZ=1 in \fIbash(1)\fP .el above sopra per una descrizione di .SM \fBFIGNORE\fP. Quest'opzione è abilitata in modo predefinito. .TP 8 \fBglobasciiranges\fP Se impostata, le espressioni di intervallo nelle espressioni tra parentesi graffe nella ricerca di corrispondenze (si veda .SM \fBModelli di ricerca\fP .ie \n(zZ=1 in \fIbash(1)\fP) .el above) più sopra) si comportano come nella localizzazione tradizionale C quando effettuano confronti. Cioè, la sequenza di collazione della localizzazione corrente non viene presa in considerazione, cosicché \fBb\fP non collazionerà fra \fBA\fP e \fBB\fP , e i caratteri ASCII maiuscolo e minuscolo verranno collazionati insieme. .TP 8 \fBglobskipdots\fP Se impostata, l'espansione di percorso non farà mai corrispondere i nomi file \fB\*(lq.\*(rq\fP e \fB\*(lq..\*(rq\fP, nonostante il modello inizi con \fB\*(lq.\*(rq\fP. Questa opzione è attiva in maniera predefinita. .TP 8 \fBglobstar\fP Se impostata, il modello \fB**\fP usato in un contesto di espansione del nome di percorso trova tutti i file e zero o più directory e sottodirectory che soddisfano i criteri di ricerca. Se il modello è seguito da una \fB/\fP, trova solo le directory e sottodirectory che soddisfano i criteri di ricerca. .TP 8 \fBgnu_errfmt\fP Se impostata, i messaggi di errore della shell vengono scritti nel formato GNU standard dei messaggi di errore. .TP 8 \fBhistappend\fP Se impostata, l'elenco della cronologia è accodato al file indicato dalla variabile .SM \fBHISTFILE\fP all'uscita della shell, invece che sostituire il file preesistente. .TP 8 \fBhistreedit\fP Se impostata, e \fBreadline\fP è in uso, viene data l'opportunità a un utente di ripetere una sostituzione della cronologia che non ha avuto successo. .TP 8 \fBhistverify\fP Se impostata, e \fBreadline\fP è in uso, i risultati della sostituzione della cronologia non sono immediatamente passati all'analizzatore della shell. Invece, la riga risultante viene caricata nel buffer di modifica \fBreadline\fP, permettendo ulteriori modifiche. .TP 8 \fBhostcomplete\fP Se impostata, e \fBreadline\fP è in uso, \fBbash\fP tenta di effettuare il completamento del nome di host quando una parola contenente un \fB@\fP è in corso di completamento (si veda \fBCompletamento\fP in precedenza, sotto .SM \fBREADLINE\fP .ie \n(zZ=1 in \fIbash(1)\fP). .el above). Questa è abilitata in modo predefinito. .TP 8 \fBhuponexit\fP Se impostata, \fBbash\fP invia .SM \fBSIGHUP\fP a tutti i job all'uscita di una shell di login interattiva. .TP 8 \fBinherit_errexit\fP Se impostata, la sostituzione di comando eredita il valore dell'opzione \fBerrexit\fP anziché annullarla nell'ambiente della sub shell. Questa opzione è abilitata quando la \fImodalità posix\fP è abilitata. .TP 8 \fBinteractive_comments\fP Se impostata, fa sì che, se una parola inizia con \fB#\fP, quella parola e tutti i caratteri rimanenti su quella riga siano ignorati in una shell interattiva (si veda .SM \fBCOMMENTI\fP sopra). .ie \n(zZ=1 in \fIbash(1)\fP). .el above). Quest'opzione è abilitata in modo predefinito. .TP 8 \fBlastpipe\fP Se impostata, e job control non è attivo, la shell esegue l'ultimo comando di una pipeline non eseguita in background nell'ambiente di shell corrente. .TP 8 \fBlithist\fP Se impostata, e l'opzione \fBcmdhist\fP è abilitata, i comandi multiriga sono salvati nella cronologia includendo i newline, piuttosto che usando come separatori il punto e virgola, dove possibile. .TP 8 \fBlocalvar_inherit\fP Se impostato, le variabili locali ereditano il valore e gli attributi di variabili con lo stesso nome che esistono in uno scope precedente prima che sia loro assegnato qualsiasi nuovo valore. L'attributo nameref non è ereditato. .TP 8 \fBlocalvar_unset\fP Se impostata, chiamare \fBunset\fP su variabili locali dello scope precedente le marca in modo che gli utilizzi successivi la trovino annullata finché la funzione non termina. Questo è identico al comportamento di annullare una variabile locale nello scope della funzione corrente. .TP 8 \fBlogin_shell\fP La shell imposta quest'opzione se viene avviata come shell di login (si veda .SM \fBINVOCAZIONE\fP sopra). .ie \n(zZ=1 in \fIbash(1)\fP). .el above). Il valore non può essere cambiato. .TP 8 \fBmailwarn\fP Se impostata, e un file sul quale \fBbash\fP sta ricercando della posta ha avuto un accesso dall'ultima volta che è stato controllato, viene visualizzato il messagio \*(lqThe mail in \fImailfile\fP has been read\*(rq. .TP 8 \fBno_empty_cmd_completion\fP Se impostata, e \fBreadline\fP è in uso, \fBbash\fP non tenta di cercare il .SM \fBPATH\fP per possibili completamenti quando viene tentato il completamento di una riga vuota. .TP 8 \fBnocaseglob\fP Se impostata, \fBbash\fP individua i nomi\-file senza distinguere le lettere maiuscole dalle minuscole quando effettua l'espansione del percorso (si veda \fBEspansione del percorso\fP sopra). .ie \n(zZ=1 in \fIbash(1)\fP). .el above). .TP 8 \fBnocasematch\fP Se impostata, \fBbash\fP confronta modelli senza distinguere le maiuscole dalle minuscole quando ricerca corrispondenze durante l'esecuzione dei comandi condizionali \fBcase\fP o \fB[[\fP, quando effettua espansioni di parola in una sostituzione di modello, o quando filtra possibili completamenti come parte di un completamento programmabile. .TP 8 \fBnoexpand_translation\fP Se impostata, \fBbash\fP racchiude il risultato tradotto della quotatura di $"..." tra apici singoli anziché doppie virgolette. Se la stringa non è tradotta, questo non ha effetto. .TP 8 \fBnullglob\fP Se impostata, \fBbash\fP permette ai modelli che non individuano nessun file (si veda \fBEspansione del percorso\fP sopra) .ie \n(zZ=1 in \fIbash(1)\fP) .el above) di espandere come una stringa nulla, piuttosto che essere presi letteralmente. .TP 8 \fBpatsub_replacement\fP Se impostato, \fBbash\fP espande le occorrenze di \fB&\fP nella stringa di rimpiazzo durante la sostituzione di modelli al test che che corrisponde al modello, come descritto in \fBEspansione di parametri\fP .ie \n(zZ=1 in \fIbash(1)\fP. .el above. Quest'opzione è abilitata in modo predefinito. .TP 8 \fBprogcomp\fP Se impostata, i servizi di completamento programmabile (si veda \fBCompletamento programmabile\fP sopra) .ie \n(zZ=1 in \fIbash(1)\fP) .el above) vengono abilitati. Quest'opzione è abilitata in modo predefinito. .TP 8 \fBprogcomp_alias\fP Se impostato, e con il completamento programmabile attivo, \fBbash\fP tratta un nome di comando che non ha nessun completamento come un possibile alias e cerca di espanderlo. Se ha un alias, \fBbash\fP riprova il completamento programmabile usando la parola del comando risultante dall'espansione dell'alias. .TP 8 \fBpromptvars\fP Se impostata, le stringhe di prompt subiscono espansione di parametro, sostituzione di comando, espansione aritmetica e rimozione delle virgolette dopo che sono stati espansi come descritto in .SM \fBSTRINGHE DI PROMPT\fP sopra .ie \n(zZ=1 in \fIbash(1)\fP. .el above. Quest'opzione è abilitata in modo predefinito. .TP 8 \fBrestricted_shell\fP La shell imposta questa opzione se è avviata in modalità ristretta (si veda .SM \fBSHELL RISTRETTA\fP più avanti). .ie \n(zZ=1 in \fIbash(1)\fP). .el below). Il valore non può essere cambiato. Questo non viene reimpostato quando i file di avvio vengono eseguiti, permettendo ai file di avvio di accertare se una shell è ristretta o meno. .TP 8 \fBshift_verbose\fP Se impostata, il comando incorporato \fBshift\fP stampa un messaggio di errore quando il numero di comandi shift effettuati eccede il numero dei parametri posizionali. .TP 8 \fBsourcepath\fP Se impostata, il comando incorporato \fB.\fP (\fBsource\fP) usa il valore di .SM \fBPATH\fP per trovare la directory contenente il file fornito come argomento. Quest'opzione è abilitata in modo predefinito. .TP 8 \fBvarredir_close\fP Se impostata, la shell chiude automaticamente i descrittori di file assegnati usando la sintassi di ridirezione \fI{varname}\fP (vedere .SM \fBRIDIREZIONE\fP .ie \n(zZ=1 in \fIbash(1)\fP) .el above) anziché lasciarli aperti quando il comando termina. .TP 8 \fBxpg_echo\fP Se impostata, il comando incorporato \fBecho\fP espande sequenze di protezione tramite la barra inversa in modo predefinito. .RE .PD .TP \fBsuspend\fP [\fB\-f\fP] Sospende l'esecuzione di questa shell fino a che non riceve un segnale .SM \fBSIGCONT\fP. Una shell di login, o una shell che non abbia il controllo dei job attivo, non può essere sospesa; l'opzione \fB\-f\fP può essere usata per non tener conto di questo e forzare la sospensione. Lo stato di ritorno è 0 tranne quando la shell è una shell di login, o se non è attivo il controllo dei job, e non è fornito \fB\-f\fP. .TP \fBtest\fP \fIexpr\fP .PD 0 .TP \fB[\fP \fIexpr\fP \fB]\fP Ritorna uno stato di 0 (vero) o 1 (falso) a seconda del risultato della valutazione dell'espressione condizionale \fIexpr\fP. Ogni operatore e operando deve essere un argomento separato. Le espressioni sono composte dagli elementi descritti .ie \n(zZ=1 in \fIbash(1)\fP .el above in precedenza, sotto .SM \fBESPRESSIONI CONDIZIONALI\fP. \fBtest\fP non accetta opzioni, né accetta, ignorandolo, un argomento \fB\-\-\fP come indicatore di fine delle opzioni. .if t .sp 0.5 .if n .sp 1 Le espressioni possono essere combinate usando i seguenti operatori, elencati in ordine decrescente di precedenza. La valutazione dipende dal numero di argomenti; si veda più avanti. La precedenza degli operatori è usata quando ci sono cinque o più argomenti. .RS .PD 0 .TP \fB! \fP\fIexpr\fP Vero se \fIexpr\fP è falso. .TP \fB( \fP\fIexpr\fP\fB )\fP Ritorna il valore di \fIexpr\fP. Questo può essere usato per modificare la normale precedenza degli operatori. .TP \fIexpr1\fP \-\fBa\fP \fIexpr2\fP Vero se sia \fIexpr1\fP che \fIexpr2\fP sono vere. .TP \fIexpr1\fP \-\fBo\fP \fIexpr2\fP Vero se o \fIexpr1\fP o \fIexpr2\fP è vera. .PD .PP \fBtest\fP e \fB[\fP valutano espressioni condizionali usando una serie di regole basate sul numero di argomenti. .if t .sp 0.5 .if n .sp 1 .PD 0 .TP 0 argomenti L'espressione è falsa. .TP 1 argomento L'espressione è vera se e solo se l'argomento non è nullo. .TP 2 argomenti Se il primo argomento è \fB!\fP, l'espressione è vera se e solo se il secondo argomento è nullo. Se il primo argomento è uno degli operatori condizionali elencati .ie \n(zZ=1 in \fIbash(1)\fP .el above in precedenza, sotto .SM \fBESPRESSIONI CONDIZIONALI\fP, l'espressione è vera se il test unario è vero. Se il primo argomento non è un operatore condizionale unario valido, l'espressione è falsa. .TP 3 argomenti Le seguenti condizioni sono applicate nell'ordine elencato. Se il secondo argomento è uno degli operatori binari condizionali elencati .ie \n(zZ=1 in \fIbash(1)\fP .el above in precedenza, sotto .SM \fBESPRESSIONI CONDIZIONALI\fP, il risultato dell'espressione è il risultato del test binario che usa gli argomenti primo e terzo come operandi. Quando ci sono tre argomenti, \fB\-a\fP e \fB\-o\fP sono considerati operatori binari. Se il primo argomento è \fB!\fP, il valore è la negazione del test con due argomenti costituito dagli argomenti secondo e terzo. Se il primo argomento è esattamente \fB(\fP e il terzo argomento è esattamente \fB)\fP, il risultato è il test, con 1 argomento, del secondo argomento. Altrimenti, l'espressione è falsa. .TP 4 argomenti Le seguenti condizioni sono applicate nell'ordine elencato. Se il primo argomento è \fB!\fP, il valore è la negazione del test con tre argomenti costituito dagli argomenti rimanenti. Se il primo argomento è esattamente \fB(\fP e il quarto argomento è esattamente \fB)\fP, il risultato è il test a due argomenti con il secondo e terzo degli argomenti. Altrimenti l'espressione è analizzata e valutata in accordo alle precedenze secondo le regole elencate sopra. .TP 5 o più argomenti L'espressione è analizzata e valutata secondo le precedenze usando le regole elencate sopra. .if t .sp 0.5 .if n .sp 1 .LP Quando sono usati con \fBtest\fP o \fB[\fP, gli operatori \fB<\fP e \fB>\fP vengono ordinati lessicograficamente secondo l'ordinamento ASCII. .RE .PD .TP \fBtimes\fP Stampa i tempi spesi come utente e come sistema per la shell e per i processi eseguiti dalla shell. Lo stato di ritorno è 0. .TP \fBtrap\fP [\fB\-lp\fP] [[\fIarg\fP] \fIsigspec\fP ...] Il comando \fIarg\fP dev'essere letto e eseguito quando la shell riceve il segnale(i) \fIsigspec\fP. Se \fIarg\fP è assente (e c'è un singolo \fIsigspec\fP) o \fB\-\fP, ogni segnale specificato è riportato alla sua configurazione originale (il valore che aveva al momento dell'ingresso nella shell). Se \fIarg\fP è la stringa nulla il segnale specificato da ogni \fIsigspec\fP è ignorato dalla shell e dai comandi che essa invoca. Se \fIarg\fP non è presente e \fB\-p\fP è stato fornito, allora i comandi di intercettazione di segnale associati a ogni \fIsigspec\fP vengono visualizzati. Se non viene fornito alcun argomento o se è dato solo \fB\-p\fP, \fBtrap\fP stampa la lista dei comandi associati a ogni segnale. L'opzione \fB\-l\fP fa sì che la shell stampi una lista di nomi di segnale e i numeri a loro corrispondenti. Ogni \fIsigspec\fP è o un nome di segnale definito in <\fIsignal.h\fP>, o un numero di segnale. I nomi di segnale possono essere scritti sia in minuscolo che in maiuscolo e il prefisso .SM \fBSIG\fP è opzionale. .if t .sp 0.5 .if n .sp 1 Se un \fIsigspec\fP è .SM \fBEXIT\fP (0) il comando \fIarg\fP è eseguito all'uscita della shell. Se un \fIsigspec\fP è .SM \fBDEBUG\fP, il comando \fIarg\fP viene eseguito prima di ogni \fIcomando semplice\fP, comando \fIfor\fP, comando \fIcase\fP, comando \fIselect\fP, ogni comando \fIfor\fP aritmetico, e prima di eseguire il primo comando in una funzione di shell (si veda .SM \fBGRAMMATICA DELLA SHELL\fP sopra). .ie \n(zZ=1 in \fIbash(1)\fP). .el above). Fare riferimento alla descrizione dell'opzione \fBextdebug\fP del comando incorporato \fBshopt\fP per dettagli sul suo effetto nella gestione del segnale \fBDEBUG\fP. Se un \fIsigspec\fP è .SM \fBRETURN\fP, il comando \fIarg\fP viene eseguito ogni volta che una funzione di shell o uno script eseguito coi comandi incorporati \fB.\fP o \fBsource\fP completa l'esecuzione. .if t .sp 0.5 .if n .sp 1 Se un \fIsigspec\fP è .SM \fBERR\fP, il comando \fIarg\fP viene eseguito ogni volta che una pipeline (che può essere composta da un solo comando semplice), una lista o un comando semplice ha uno stato di uscita diverso da 0, tenuto conto delle seguenti condizioni. La gestione del segnale .SM \fBERR\fP non viene invocata se il comando in errore fa parte della lista di comandi immediatamente seguente la parola chiave \fBwhile\fP o \fBuntil\fP, se fa parte del test in un'istruzione \fIif\fP, se fa parte di un comando eseguito in una lista \fB&&\fP o \fB||\fP eccetto il comando seguente l'ultimo \fB&&\fP o \fB||\fP, un qualsiasi comando in una pipeline eccetto l'ultimo, o se il valore di ritorno del comando in esecuzione viene negato da un \fB!\fP. Queste sono le stesse condizioni imposte all'opzione \fBerrexit\fP (\fB\-e\fP). .if t .sp 0.5 .if n .sp 1 I segnali ignorati al momento dell'ingresso della shell non possono essere intercettati o resettati. I segnali intercettati non ignorati sono riportati al loro valore originale in una subshell o in un ambiente di subshell quando ne è stato creato uno. Lo stato di ritorno è falso se un \fIsigspec\fP non è valido; altrimenti \fBtrap\fP ritorna 0 (vero). .TP \fBtype\fP [\fB\-aftpP\fP] \fInome\fP [\fInome\fP ...] Senza opzioni, indica come dovrà essere interpretato ciascun \fInome\fP se usato come un nome di comando. Se è usata l'opzione \fB\-t\fP, \fBtype\fP stampa una stringa che è una fra \fIalias\fP, \fIkeyword\fP, \fIfunction\fP, \fIbuiltin\fP o \fIfile\fP se \fInome\fP è, rispettivamente, un alias, una parola riservata della shell, una funzione, un comando incorporato, o un file su disco. Se il \fInome\fP non è trovato, non viene stampato nulla, ed è ritornato uno stato d'uscita di falso Se viene usata l'opzione \fB\-p\fP, \fBtype\fP ritorna o il nome del file su disco che dovrebbe essere eseguito se \fInome\fP fosse specificato come nome di comando, o nulla se .if t \f(CWtype -t name\fP .if n ``type -t name'' non avesse ritornato \fIfile\fP. L'opzione \fB\-P\fP forza .SM \fBPATH\fP a ricercare ogni \fInome\fP, anche se .if t \f(CWtype -t name\fP .if n ``type -t name'' non dovesse ritornare \fIfile\fP. Se un comando è nella tabella hash, \fB\-p\fP e \fB\-P\fP stampano il valore nella tabella hash, che non necessariamente è il file che appare per primo in .SM \fBPATH\fP. Se viene usata l'opzione \fB\-a\fP, \fBtype\fP stampa tutti le posizioni che corrispondono a un eseguibile chiamato \fInome\fP. Questo include alias e funzioni, se e solo se non viene usata anche l'opzione \fB\-p\fP. La tabella hash dei comandi non è consultata quando si usa \fB\-a\fP. L'opzione \fB\-f\fP sopprime la ricerca della funzione di shell, come col comando incorporato \fBcommand\fP. \fBtype\fP ritorna 0 [vero] se tutti argomenti vengono trovati, falso se non ne viene trovato alcuno. .TP \fBulimit\fP [\fB\-HS\fP] \fB\-a\fP .PD 0 .TP \fBulimit\fP [\fB\-HS\fP] [\fB\-bcdefiklmnpqrstuvxPRT\fP [\fIlimite\fP]] .PD Fornisce controllo sulle risorse disponibili per la shell e per i processi avviati da essa, sui sistemi che consentono un tale controllo. Le opzioni \fB\-H\fP e \fB\-S\fP specificano che viene impostato il limite hard o limite soft per la data risorsa. Un limite hard non può essere aumentato da un utente comune una volta impostato; un limite soft può essere aumentato fino al valore del limite hard. Se né \fB\-H\fP né \fB\-S\fP sono specificati, vengono impostati entrambi i limiti, hard e soft. Il valore di \fIlimite\fP può essere un numero nell'unità specificata per la risorsa, o uno dei valori speciali \fBhard\fP, \fBsoft\fP o \fBunlimited\fP. che stanno rispettivamente per limite hard corrente, limite soft corrente e nessun limite. Se \fIlimite\fP è omesso, viene stampato il valore corrente del limite soft della risorsa, a meno che non venga data l'opzione \fB\-H\fP. Quando è specificata più di una risorsa, il nome del limite e l'unità, se appropriati, vengono stampati prima del valore. Le altre opzioni sono interpretate come segue: .RS .PD 0 .TP \fB\-a\fP Sono riportati tutti i limiti correnti; nessun limite viene impostato .TP \fB\-b\fP La dimensione massima del buffer del socket .TP \fB\-c\fP la dimensione massima dei file core creati .TP \fB\-d\fP la dimensione massima del segmento dati di un processo .TP \fB\-e\fP La priorità massima di schedulazione dei processi ("nice") .TP \fB\-f\fP la dimensione massima dei file scritti dalla shell e dai suoi figli .TP \fB\-i\fP Il numero massimo di segnali pendenti .TP \fB\-k\fP Il numero massimo di kqueue (code degli eventi del kernel) che possono essere allocate .TP \fB\-l\fP la dimensione massima di memoria che può essere bloccata .TP \fB\-m\fP la dimensione massima della memoria occupata (molti sistemi non rispettano questo limite) .TP \fB\-n\fP il numero massimo di descrittori di file aperti (la maggior parte dei sistemi non permette che questo valore sia cambiato) .TP \fB\-p\fP la dimensione delle pipe in blocchi da 512 byte (questo non può essere cambiato) .TP \fB\-q\fP Il numero massimo di byte nelle code dei messaggi POSIX .TP \fB\-r\fP La priorità massima di schedulazione dei processi in tempo reale .TP \fB\-s\fP la dimensione massima dello stack .TP \fB\-t\fP il massimo quantitativo di tempo macchina utilizzabile, in secondi .TP \fB\-u\fP il numero massimo di processi disponibili per un singolo utente .TP \fB\-v\fP Il massimo ammontare di memoria virtuale disponibile per la shell e, su alcunisistemi, ai suoi figli .TP \fB\-x\fP Il numero massimo di file lock .TP \fB\-P\fP Il numero massimo di pseudoterminali .TP \fB\-R\fP Il tempo massimo che un processo in real\-time può durare prima che sia bloccato, in microsecondi .TP \fB\-T\fP Il numero massimo di thread .PD .PP Se \fIlimite\fP è dato, e non viene usata l'opzione \fB\-a\fP, \fIlimite\fP è il nuovo valore della risorsa specificata. Se nessuna opzione è data, si considera impostata l'opzione \fB\-f\fP. I valori sono in multipli di 1024 byte, tranne che per \fB\-t\fP, che è in secondi, \fB\-R\fP, che è in microsecondi;\fB\-p\fP, che è in unità di blocchi da 512 byte; \fB\-P\fP, \fB\-T\fP, \fB\-b \fP, \fB\-k\fP, \fB\-n\fP e \fB\-u\fP, che sono numeri puri e , quando si è in modalità posix, \fB\-c\fP e \fB\-f\fP, che sono in multipli di 512 byte. Lo stato di ritorno è 0 tranne quando viene incontrata un'opzione o un argomento non valido, o avvenga un errore mentre si imposta un nuovo limite. .RE .TP \fBumask\fP [\fB\-p\fP] [\fB\-S\fP] [\fImodo\fP] La maschera di creazione dei file dell'utente è impostata a \fImodo\fP. Se \fImodo\fP inizia con una cifra, è interpretato come numero ottale; altrimenti è interpretato come una maschera in modalità simbolica simile a quelle accettate da \fIchmod\fP(1). Se \fImodo\fP è omesso, viene stampato il valore corrente della maschera. L'opzione \fB\-S\fP fa sì che la maschera venga stampata in formato simbolico; l'output predefinito è un numero ottale. Se viene fornita l'opzione \fB\-p\fP e \fImodo\fP è omesso, l'output è in una forma riutilizzabile come input. Lo stato di ritorno è 0 se il modo è stato cambiato con successo o se nessun argomento \fImodo\fP era stato fornito, e falso altrimenti. .TP \fBunalias\fP [\-\fBa\fP] [\fInome\fP ...] Rimuove ciascun \fInome\fP dalla lista degli alias definiti. Se si specifica \fB\-a\fP, sono rimosse tutte le definizioni di alias. Il valore di ritorno è 0 (vero) tranne quando un \fInome\fP fornito non è un alias attualmente definito. .TP \fBunset\fP [\-\fBfv\fP] [\-\fBn\fP] [\fInome\fP ...] Per ciascun \fInome\fP, rimuove la corrispondente variabile o funzione. Se è specificata l'opzione \fB\-v\fP, ogni \fInome\fP designa una variabile di shell, e quella variabile viene rimossa. Le variabili in sola lettura non possono essere rimosse. Se viene specificata \fB\-f\fP, ogni \fInome\fP designa una funzione di shell, e la definizione di funzione viene rimossa. Se è impostata l'opzione \fB\-n\fP, e \fInome\fP è una variabile con l'attributo \fInameref\fP, verrà annullata \fInome\fP piuttosto che la variabile a cui fa riferimento. \fB\-n\fP non ha nessun effetto se è impostata l'opzione \fB\-f\fP. Se non viene impostata nessuna opzione, ogni \fInome\fP fa riferimento a una variabile; se non ci sono variabili con quel nome, ogni funzione con quel nome viene annullata. Ogni variabile o funzione annullata è eliminata dall'ambiente passato ai comandi successivi. Se una qualsiasi fra .SM \fBBASH_ALIASES\fP, .SM \fBBASH_ARGV0\fP, .SM \fBBASH_CMDS\fP, .SM \fBBASH_COMMAND\fP, .SM \fBBASH_SUBSHELL\fP, .SM \fBBASHPID\fP, .SM \fBCOMP_WORDBREAKS\fP, .SM \fBDIRSTACK\fP, .SM \fBEPOCHREALTIME\fP, .SM \fBEPOCHSECONDS\fP, .SM \fBFUNCNAME\fP, .SM \fBGROUPS\fP, .SM \fBHISTCMD\fP, .SM \fBLINENO\fP, .SM \fBRANDOM\fP, .SM \fBSECONDS\fP o .SM \fBSRANDOM\fP è annullata, perde la sua speciale proprietà, anche se viene successivamente ridefinita. Lo stato d'uscita è 0 (vero) a meno che un \fInome\fP non sia in sola lettura o non l'annullamento fallisca. .TP \fBwait\fP [\fB\-fn\fP] [\fB\-p\fP \fIvarname\fP] [\fIid ...\fP] Aspetta ogni processo figlio specificato e ritorna il suo stato di completamento. Ciascun \fIid\fP può essere un ID di processo o un riferimento a un job; se è dato un riferimento a un job, si aspettano tutti i processi nella pipeline di quel job. Se \fIid\fP è omesso, si aspettano tutti i processi figli correntemente attivi e l'ultima sostituzione di processo eseguita, se il suo id di processo è lo stesso di \fB$!\fP, e lo stato di ritorno è 0. Se è specificata l'opzione \fB\-n\fP, \fBwait\fP attende che uno qualsiasi dei job indicati nell'elenco di \fIid\fP, oppure, se non viene indicato nessun \fBid\fP, attende che un job qualsiasi termini e restituisce il suo stato d'uscita. Se nessuno degli argomenti forniti è un figlio della shell, o se non sono indicati argomenti e la shell non ha figli dei quali è in attesa, il valore restituito è 127. Se viene indicata l'opzione \fB\-p\fP, l'identificato di processo o di job per il quale viene restituito il codice d'errore viene messo nella variabile \fIvarname\fP. Se è specificata l'opzione \fB\-f\fP, e il job\-control è abilitato, \fBwait\fP fa terminare \fIid\fP prima di restituire lo stato d'uscita, invece di restituirlo quando cambia stato. Se \fIid\fP specifica un processo o job non esistenti, lo stato di ritorno è 127. Se \fBwait\fP viene interrotta da un segnale, lo stato di ritorno sarà maggiore di 127, come descritto in \fBSEGNALI\fP .ie \n(zZ=1 in \fIbash(1)\fP. .el above. Altrimenti, lo stato di ritorno è lo stato d'uscita dell'ultimo processo o job di cui si è atteso il completamento. .SH "MODALITÀ COMPATIBILE DELLA SHELL" Bash\-4.0 ha introdotto il concetto di \fIlivello di compatibilità della shell\fP indicato come un insieme di opzioni del comando incorporato shopt (\fBcompat31\fP, \fBcompat32\fP, \fBcompat40\fP, \fBcompat41\fP eccetera). Attualmente c'è un solo livello di compatibilità \-\- ogni opzione è mutuamente esclusiva. Il livello di compatibilità ha lo scopo di permettere all'utente di selezionare il comportamento di una precedente versione che è incompatibile con le nuove versioni. Va usato nel periodo di transizione durante il quale si modifica lo script perché funzioni con caratteristiche e il comportamento correnti. È stato ideato come soluzione temporanea. .PP Questa sezione non menziona comportamenti che sono standard per una particolare versione (esempio, impostando \fBcompat32\fP si fa sì che mettere tra virgolette l'operando di destra di un operando di espressioni regolari, faccia il quote dei caratteri speciali nella parola, che è il comportamento predefinito di bash\-3.2 e versioni successive.) .PP Se un utente abilita ad esempio \fBcompat32\fP, può impattare il comportamento di altri livelli di compatibilità fino al livello di compatibilità corrente. L'idea è che ogni livello di compatibilità controlli il comportamento che cambiò in quella versione di \fBbash\fP, ma quel comportamento potrebbe essere stato presente anche in versioni precedenti. Ad esempio, l'utilizzo di confronti basati sulla localizzazione nel comando \fB[[\fP è stato introdotto con bash\-4.1, mentre le versioni precedenti usavano un confronto basato su ASCII; quindi abilitando \fBcompat32\fP si attiverà anche il confronto basato su ASCII. Questa granularità potrebbe non essere sufficiente per tutti gli usi, e quindi è importante che gli utenti utilizzino i livelli di compatibilità con cautela. Leggere la documentazione specifica per le varie caratteristiche per conoscere il comportamento attuale. .PP Bash\-4.3 ha introdotto una nuova variabile: .SM \fBBASH_COMPAT\fP. Il valore assegnato a questa variabile (un numero di versione decimale come 4.2, o un intero corrispondente all'opzione \fBcompat\fP\fINN\fP, come 42) determina il livello di compatibilità. .PP Da bash\-4.4, bash ha iniziato a deprecare l'utilizzo di livelli di compatibilità più vecchi. Più avanti le opzioni saranno rimosse in favore di .SM \fBBASH_COMPAT\fP. .PP Bash\-5.0 è la versione ultima per la quale esistono opzioni individuali di shopt per versioni precedenti. Gli utenti dovranno usare .SM \fBBASH_COMPAT\fP per bash\-5.0 e versioni successive. .PP La seguente tabella descrive i cambi di comportamento per ogni impostazione di livello di compatibilità. Il tag \fBcompat\fP\fINN\fP è usato come scorciatoia per indicare le impostazioni di compatibilità per il livello \fINN\fP usando uno dei seguenti meccanismi. Per versioni precedenti a bash\-5.0, il livello di compatibilità può essere impostato usando la corrispondente opzione \fBcompat\fP\fINN\fP di shopt. Per bash\-4.3 e successive versioni, è preferibile usare la variabile .SM \fBBASH_COMPAT\fP, che poi diventa obbligatorio per bash\-5.1 e versioni successive. .TP \fBcompat31\fP .PD 0 .RS .IP \(bu mettere tra virgolette l'operando a destra del comando di corrispondenza delle regexp (=~) non ha effetti speciali in \fB[[\fP .RE .PD .TP \fBcompat32\fP .PD 0 .RS .IP \(bu interrompere una lista di comandi come "a ; b ; c" causa l'esecuzione del comando successivo nella lista (in bash\-4.0 e versioni successive, la shell si comporta come se avesse ricevuto le l'interruzione e quindi interrompere un comando in una lista blocca l'esecuzione dell'intera lista) .RE .PD .TP \fBcompat40\fP .PD 0 .RS .IP \(bu gli operatori \fB<\fP e \fB>\fP del comando condizionale \fB[[\fP non considerano la localizzazione corrente nel confronto fra stringhe, ma usano l'ordinamento ASCII. Le versioni di bash precedenti a bash\-4.1 usano la collazione ASCII e \fIstrcmp\fP(3); bash\-4.1 e versioni successive usano la sequenza di collazione della localizzazione corrente e \fIstrcoll\fP(3). .RE .PD .TP \fBcompat41\fP .PD 0 .RS .IP \(bu in modalità \fIposix\fP, \fBtime\fP può essere seguito da opzioni ed essere comunque riconosciuto come una parola riservata (questa è l'interpretazione POSIX 267) .IP \(bu in modalità \fIposix\fP il parser richiede che un siano presenti un numero pari di virgolette singole nella porzione di \fIword\fP di una espansione di parametri tra virgolette doppie; e le tratta diversamente in modo che i caratteri all'interno delle virgolette singole siano considerati quotati (questa è l'interpretazione POSIX 221) .RE .PD .TP \fBcompat42\fP .PD 0 .RS .IP \(bu il testo di rimpiazzo durante la sostituzione di modelli tra virgolette doppie non sottostà alla rimozione delle virgolette, come invece fa nelle versione successive a bash\-4.2 .IP \(bu in modalità posix, le virgolette singole sono considerate speciali durante l'espansione di porzioni \fIword\fP di una espansione di parametro tra doppie virgolette, e possono essere utilizzate per virgolettare una parentesi graffa chiusa o altro carattere speciale (questo fa parte della interpretazione POSIX 221); in versioni successive, le virgolette singole non sono speciali all'interno di una espansione di parola tra doppie virgolette .RE .PD .TP \fBcompat43\fP .PD 0 .RS .IP \(bu la shell non stampa un messaggio di avvertimento se viene tentato di usare un assegnamento interno tra virgolette come argomento di declar (esempio, declare \-a foo=\(aq(1 2)\(aq). Versioni successive avvisano che quest'utilizzo è deprecato .IP \(bu errori dell'espansione di parola sono considerati non errori non fatali che causano il fallimento del comando corrente, anche in modalità posix (il comportamento predefinito è che siano errori fatali che causano la terminazione della shell) .IP \(bu durante l'esecuzione di una funzione di shell, lo stato del ciclo (while/until/etc.) non è reimpostato, quindi \fBbreak\fP o \fBcontinue\fP interni alla funzione agiranno sul ciclo del contesto invocante. Bash\-4.4 e successive reimpostano lo stato del ciclo per evitare questo comportamento .RE .PD .TP \fBcompat44\fP .PD 0 .RS .IP \(bu la shell imposta i valori usati da .SM \fBBASH_ARGV\fP e .SM \fBBASH_ARGC\fP in modo che possano essere espansi ai parametri posizionali della shell anche se la modalità di debug estesa non è attiva .IP \(bu una subshell eredita i cicli dal contesto invocante, quindi \fBbreak\fP e \fBcontinue\fP faranno uscire la subshell. Bash\-5.0 e successiva reimpostano lo stato del ciclo per evitare questa uscita .IP \(bu assegnamenti di variabile precedenti a comandi interni quali \fBexport\fP e \fBreadonly\fP che impostano attributi avranno effetti sulle variabili con lo stesso nome dell'ambiente invocante anche se la shell non è in modalità posix .RE .PD .TP \fBcompat50\fP .PD 0 .RS .IP \(bu Bash\-5.1 ha cambiato il modo nel quale .SM \fB$RANDOM\fP è generato e introduce un po' più di aleatorietà. Se ilvello di compatibilità della shell è impostato a 50 e precedente, la shell utilizza il metodo di bash\-5.0 e versioni precedenti, quindi impostando un seme per il generatore assegnandolo alla variabile .SM \fBRANDOM\fP produrrà la stessa sequenza di bash\-5.0 .IP \(bu Se la tabella hash dei comandi è vuota, le versioni di bash precedenti a bash\-5.1 stampavano un messaggio informativo, anche durante la produzione di output che potesse essere riusato come input. Bash\-5.1 sopprime questo messaggio quando viene fornita l'opzione \fB\-l\fP. .RE .PD .TP \fBcompat51\fP .PD 0 .RS .IP \(bu Il comando interno \fBunset\fP tratta i tentativi di annullare gli indici di vettore \fB@\fP e \fB*\fP diversamente a seconda se il vettore sia indicizzato o associativo, e diversamente rispetto alle precedenti versioni. .RE .PD .if \n(zZ=1 .ig zZ .\" bash_builtins .SH "SHELL RISTRETTA" .\" rbash.1 .zY .PP Se \fBbash\fP è avviata col nome \fBrbash\fP, o l'opzione \fB\-r\fP viene fornita all'invocazione, la shell diventa ristretta. Una shell ristretta è usata per impostare un ambiente più controllato di quello della shell standard. Si comporta identicamente a \fBbash\fP con l'eccezione che quel che segue è o non permesso o non effettuato: .IP \(bu cambiare le directory con \fBcd\fP .IP \(bu impostare o rimuovere i valori di .SM \fBSHELL\fP, .SM \fBPATH\fP, .SM \fBHISTFILE\fP, .SM \fBENV\fP o .SM \fBBASH_ENV\fP .IP \(bu specificare nomi di comando contenenti una \fB/\fP .IP \(bu specificare un nome di file contenente una \fB/\fP come argomento al comando incorporato \fB.\fP .IP \(bu specificare un nome\-file contenente una barra obliqua come argomento al comando incorporato \fBhistory\fP .IP \(bu specificare un nome di file contenente una barra [/] come argomento all'opzione \fB\-p\fP del comando incorporato \fBhash\fP .IP \(bu importare definizioni di funzione dall'ambiente della shell all'avvio .IP \(bu analizzare il valore di .SM \fBSHELLOPTS\fP dall'ambiente di shell all'avvio .IP \(bu ridirigere l'output usando gli operatori di ridirezione >, >|, <>, >&, &> e >> .IP \(bu usare il comando incorporato \fBexec\fP per sostituire la shell con un altro comando .IP \(bu aggiungere o eliminare comandi incorporati con le opzioni \fB\-f\fP e \fB\-d\fP del comando incorporato \fBenable\fP .IP \(bu usare il comando incorporato \fBenable\fP per abilitare comandi incorporati della shell che sono disabilitati .IP \(bu specificare l'opzione \fB\-p\fP al comando incorporato \fBcommand\fP .IP \(bu disattivare la modalità ristretta con \fBset +r\fP o \fBshopt \-u restricted_shell\fP. .PP Queste restrizioni sono imposte dopo aver letto eventuali file di avvio. .PP .ie \n(zY=1 When a command that is found to be a shell script is executed, .el \{ When a command that is found to be a shell script is executed (see .SM .B "COMMAND EXECUTION" above), \} \fBrbash\fP rimuove ogni restrizione nella shell creata dalla shell genitrice per eseguire lo script. .if \n(zY=1 .ig zY .\" end of rbash.1 .SH "VEDERE ANCHE" .PD 0 .TP \fIBash Reference Manual\fP, Brian Fox e Chet Ramey .TP \fIThe Gnu Readline Library\fP, Brian Fox e Chet Ramey .TP \fIThe Gnu History Library\fP, Brian Fox e Chet Ramey .TP \fIPortable Operating System Interface (POSIX) Part 2: Shell and Utilities\fP, IEEE \-\- http://pubs.opengroup.org/onlinepubs/9699919799/ .TP http://tiswww.case.edu/~chet/bash/POSIX \-\- una descrizione della modalità posix .TP \fIsh\fP(1), \fIksh\fP(1), \fIcsh\fP(1) .TP \fIemacs\fP(1), \fIvi\fP(1) .TP \fIreadline\fP(3) .PD .SH FILE .PD 0 .TP .FN /bin/bash L'eseguibile \fBbash\fP .TP .FN /etc/profile Il file di inizializzazione generale di sistema, eseguito per le shell di login .TP .FN ~/.bash_profile Il file di inizializzazione personale, eseguito per le shell di login .TP .FN ~/.bashrc Il file di inizializzazione individuale per ogni shell interattiva .TP .FN ~/.bash_logout Il file di pulizia della shell di login individuale, eseguito quando una shell di login termina .TP .FN ~/.bash_history Il valore predefinito di \fBHISTFILE\fP, il file nel quale bash salva la cronologia dei comandi .TP .FN ~/.inputrc Il file di inizializzazione individuale per \fIreadline\fP .PD .SH AUTORI Brian Fox, Free Software Foundation .br bfox@gnu.org .PP Chet Ramey, Case Western Reserve University .br chet.ramey@case.edu .SH "NOTIFICA DEI \(dqBUG\(dq" Se trovate un "bug" in \fBbash\fP, dovreste segnalarlo. Ma prima, dovreste assicurarvi che sia veramente un "bug", e che appaia nella versione più recente di \fBbash\fP. L'ultima versione è sempre disponibile da \fIftp://ftp.gnu.org/pub/gnu/bash/\fP e \fIhttp://git.savannah.gnu.org/cgit/bash.git/snapshot/bash\-master.tar.gz\fP. .PP Una volta determinato che avete individuato realmente un "bug", usate il comando \fIbashbug\fP per inviare una notifica del "bug". Se avete una correzione, siete invitati a inviare anche quella! Suggerimenti e rapporti su "bug" 'filosofici' possono essere inviati a \fIbug\-bash@gnu.org\fP o inviati al newsgroup su Usenet \fBgnu.bash.bug\fP. .PP TUTTI i rapporti sui "bug" dovranno includere: .PP .PD 0 .TP 20 Il numero di versione di \fBbash\fP .TP L'hardware e il sistema operativo .TP Il compilatore usato per compilare .TP Una descrizione del comportamento anomalo .TP Un breve script o `ricetta' che produca il "bug" .PD .PP \fIbashbug\fP inserisce le prime tre voci automaticamente nel modello che fornisce per compilare una notifica di "bug". .PP Commenti e notifiche su "bug" riguardanti questa pagina di manuale dovranno essere indirizzati a \fIchet.ramey@case.edu\fP. .SH BUG È troppo grande e troppo lenta. .PP Vi sono alcune sottili differenze tra \fBbash\fP e le versioni tradizionali di \fBsh\fP, soprattutto per via delle specifiche .SM \fBPOSIX\fP. .PP In alcuni casi gli alias possono essere causa di confusione. .PP Comandi incorporati della shell e funzioni non sono sospendibili/riavviabili. .PP Comandi composti e sequenze di comandi nella forma di `a ; b ; c' non sono trattati in modo completamente corretto quando viene richiesta la sospensione di un processo. Quando un processo viene sospeso, la shell esegue immediatamente il comando che lo segue immediatamente. Basta mettere una sequenza di comandi fra parentesi per forzarla in una subshell, che può essere sospesa come se fosse un'unica entità. .PP Le variabili vettore non possono essere esportate (per il momento). .PP Ci può essere solo un coprocesso attivo alla volta. .zZ .zY .PP .SH TRADUZIONE La traduzione italiana di questa pagina di manuale è stata creata da Augusto Lenardi , Antonio Giovanni Colombo , Silvano Sallese , Marco Curreli e Giuseppe Sacco . .PP Questa traduzione è documentazione libera; leggere la .UR https://www.gnu.org/licenses/gpl-3.0.html GNU General Public License Versione 3 .UE o successiva per le condizioni di copyright. Non ci assumiamo alcuna responsabilità. .PP Per segnalare errori nella traduzione di questa pagina di manuale inviare un messaggio a .MT pluto-ildp@lists.pluto.it .ME .