Skip to main content

Linux - Comando Unix: bash

Command Line V/s GUI - Linux Tutorial (Aprile 2025)

Command Line V/s GUI - Linux Tutorial (Aprile 2025)
Anonim

Il comando di Linux bash è unsh-compatibile interprete del linguaggio di comando che esegue comandi letti dallo standard input o da un file.bash incorpora anche funzioni utili dai gusci Korn e C (ksh ecsh).

Opzioni di Bash

Oltre alle opzioni di shell a carattere singolo documentate nella descrizione delimpostato comando incorporato,bash interpreta le seguenti opzioni quando viene invocato:

  • -c stringa: Se la-c l'opzione è presente, quindi i comandi vengono letti da stringa . Se ci sono argomenti dopo il stringa , vengono assegnati ai parametri posizionali, a partire da$0.
  • -io: Se la-io l'opzione è presente, la shell è interattivo .
  • -l: Renderebash agire come se fosse stato invocato come shell di login.
  • -r: Se la-r l'opzione è presente, la shell diventa limitato.
  • -S: Se la-S l'opzione è presente, o se non rimangono argomenti dopo l'elaborazione dell'opzione, i comandi vengono letti dallo standard input. Questa opzione consente di impostare i parametri posizionali quando si richiama una shell interattiva.
  • -D: Un elenco di tutte le stringhe con doppie virgolette precedute da$ è stampato sullo standard output. Queste sono le stringhe che sono soggette alla traduzione della lingua quando la locale corrente non lo èC oPOSIX. Ciò implica il -n opzione; nessun comando verrà eseguito.
  • - + O shopt_option : shopt_option è una delle opzioni della shell accettata dashopt incorporato. Se shopt_option è presente,-O imposta il valore di tale opzione, e+ O lo disattiva. Se shopt_option non viene fornito, i nomi e i valori delle opzioni della shell accettati dashopt sono stampati sullo standard output. Se l'opzione di chiamata è + O, l'output viene visualizzato in un formato che può essere riutilizzato come input.
  • --: UN-- segnala la fine delle opzioni e disabilita l'ulteriore elaborazione delle opzioni. Qualsiasi argomento dopo il-- sono trattati come nomi di file e argomenti. Una discussione di- è equivalente a--.

bash interpreta anche un numero di opzioni multi-carattere. Queste opzioni devono apparire sulla riga di comando prima che le opzioni a carattere singolo vengano riconosciute:

  • --dump-po-strings: Equivalente a-D, ma l'uscita è nella GNU gettext Po (oggetto portatile) in formato file.
  • --dump-stringhe: Equivalente a-D.
  • --Aiuto: Visualizza un messaggio di utilizzo sullo standard output ed esce correttamente.
  • --init file: file e --rcfile file : Esegui comandi da file invece del file di inizializzazione personale standard ~ / .Bashrc se la shell è interattiva
  • --accesso: Equivalente a-l.
  • --noediting: Non usare GNUlinea di lettura libreria per leggere le righe di comando quando la shell è interattiva.
  • --noprofile: Non leggere il file di avvio del sistema / Etc / profile o uno qualsiasi dei file di inizializzazione personali ~ / .Bash_profile , ~ / .Bash_login , o ~ / .Profile . Di default,bash legge questi file quando è invocato come shell di login.
  • --norc: Non leggere ed eseguire il file di inizializzazione personale ~ / .Bashrc se la shell è interattiva Questa opzione è attiva per impostazione predefinita se la shell è invocata comesh.
  • --posix: Modifica il comportamento dibash dove l'operazione predefinita differisce dallo standard POSIX per corrispondere allo standard ( modalità posix ).
  • --limitato: Il guscio diventa limitato.
  • --rpm-richiede: Produce l'elenco dei file necessari per l'esecuzione dello script della shell. Ciò implica "-n" ed è soggetto alle stesse limitazioni del controllo del controllo degli errori in fase di compilazione; I backtick, i test e le valute non vengono analizzati in modo da poter perdere alcune dipendenze.
  • --verbose: Equivalente a-v.
  • --versione: Mostra le informazioni sulla versione per questa istanza dibash sullo standard output e uscire con successo.

argomenti

Se gli argomenti rimangono dopo l'elaborazione dell'opzione e nessuno dei due-c né il-S l'opzione è stata fornita, si presuppone che il primo argomento sia il nome di un file contenente comandi di shell. Se bash è invocato in questo modo,$0 è impostato sul nome del file e i parametri posizionali sono impostati sugli argomenti rimanenti.bash legge ed esegue i comandi da questo file; poi esce.bashLo stato di uscita è lo stato di uscita dell'ultimo comando eseguito nello script. Se non vengono eseguiti comandi, lo stato di uscita è 0. Viene prima tentato di aprire il file nella directory corrente e, se non viene trovato alcun file, la shell cerca nelle directory inSENTIERO per la sceneggiatura.

Invocazione

UN shell di login è uno il cui primo carattere dell'argomento zero è a-, o uno iniziato con il--accesso opzione.

Un interattivo shell è uno avviato senza argomenti non-option e senza il-c opzione il cui input e output standard sono entrambi collegati ai terminali come determinato da isatty (3), o uno iniziato con il-io opzione.PS1 è impostato e $- include se bash è interattivo, consentendo uno script di shell o un file di avvio per testare questo stato.

I paragrafi seguenti descrivono comebash esegue i suoi file di avvio. Se uno dei file esiste ma non può essere letto,bash segnala un errore. Le tilde sono espanse nei nomi dei file come descritto in Tilde Expansion.

quandobash viene invocato come shell di login interattiva o come shell non interattiva con--accesso opzione, prima legge e esegue i comandi dal file / Etc / profile , se quel file esiste. Dopo aver letto quel file, cerca ~ / .Bash_profile , ~ / .Bash_login , e ~ / .Profile , in questo ordine, legge ed esegue i comandi dal primo esistente ed è leggibile. Il--noprofile opzione può essere utilizzata quando viene avviata la shell per inibire questo comportamento.

Quando esce una shell di login,bash legge ed esegue i comandi dal file ~ / .Bash_logout se esiste

Quando viene avviata una shell interattiva che non è una shell di login,bash legge ed esegue i comandi da ~ / .Bashrc , se quel file esiste. Questo può essere inibito usando il--norc opzione. Il--rcfile file l'opzione forzeràbash leggere ed eseguire comandi da file invece di ~ / .Bashrc .

quandobash viene avviato in modo non interattivo: per eseguire uno script di shell, ad esempio, cerca la variabileBASH_ENV nell'ambiente, espande il suo valore se appare lì e utilizza il valore espanso come nome di un file da leggere ed eseguire.bash si comporta come se il seguente comando fosse eseguito:

if -n "$ BASH_ENV"; poi . "$ BASH_ENV"; fi

ma il valore delSENTIERO la variabile non viene utilizzata per cercare il nome del file.

Sebash è invocato con il nomesh, prova a simulare il comportamento di avvio delle versioni storiche dish il più vicino possibile, pur essendo conforme allo standard POSIX. Quando invocato come shell di login interattiva o shell non interattiva con--accesso opzione, tenta innanzitutto di leggere ed eseguire comandi da / Etc / profile e ~ / .Profile , in questo ordine. Il--noprofile l'opzione può essere utilizzata per inibire questo comportamento. Quando invocato come shell interattiva con il nome sh, bash cerca la variabileENV, espande il suo valore se è definito e utilizza il valore espanso come nome di un file da leggere ed eseguire. Poiché una shell ha invocato comesh non tenta di leggere ed eseguire comandi da altri file di avvio, il--rcfile l'opzione non ha alcun effetto. Una shell non interattiva invocata con il nomesh non tenta di leggere altri file di avvio. Quando invocato comesh, bash entra posix modalità dopo la lettura dei file di avvio.

quandobash è iniziato in posix modalità, come con il--posix opzione della riga di comando, segue lo standard POSIX per i file di avvio. In questa modalità, le shell interattive espandono ilENV variabile e comandi vengono letti ed eseguiti dal file il cui nome è il valore espanso. Nessun altro file di avvio viene letto.

bash tenta di determinare quando viene eseguito dal daemon della shell remota, di solito rshd . Se bash determina che viene gestito da rshd , legge ed esegue comandi da ~ / .Bashrc , se quel file esiste ed è leggibile. Non lo farà se invocato comesh. Il--norc opzione può essere usata per inibire questo comportamento, e il--rcfile opzione può essere utilizzata per forzare un altro file da leggere, ma rshd generalmente non richiama la shell con queste opzioni o consente di specificarle.

Se la shell viene avviata con l'id utente effettivo (gruppo) non uguale all'id utente reale (gruppo), e il-p opzione non viene fornita, nessun file di avvio viene letto, le funzioni della shell non sono ereditate dall'ambiente, ilSHELLOPTS variabile, se appare nell'ambiente, viene ignorata e l'ID utente effettivo è impostato sull'id utente reale. Se la-p l'opzione viene fornita al richiamo, il comportamento all'avvio è lo stesso, ma l'ID utente effettivo non viene ripristinato.

definizioni

Le seguenti definizioni sono usate nel resto di questo documento:

  • vuoto: Uno spazio o una scheda.
  • parola: Una sequenza di caratteri considerata come una singola unità dalla shell. Inoltre conosciuto come a gettone.
  • Nome: UN parola composto solo da caratteri alfanumerici e caratteri di sottolineatura e che inizia con un carattere alfabetico o un trattino basso. Anche indicato come unidentificatore.
  • metacarattere: Un carattere che, quando non quotato, separa le parole. Uno dei seguenti:| &; () <> scheda spazio
  • Operatore di controllo: A gettone che esegue una funzione di controllo. È uno dei seguenti simboli: || & && ; ;; ( ) |

Parole riservate

Parole riservate sono parole che hanno un significato speciale per la shell. Le seguenti parole sono riconosciute come riservate quando non quotate né la prima parola di un semplice comando o la terza parola di aAstucciooper comando:

! caso fatto elif else esac fi per la funzione se in select then until while {} time

Shell Grammar: semplici comandi

UN comando semplice è una sequenza di assegnazioni di variabili opzionali seguite davuoto-parole separate e reindirizzamenti terminati da a operatore di controllo . La prima parola specifica il comando da eseguire e viene passato come argomento zero. Le parole rimanenti vengono passate come argomenti al comando invocato.

Il valore di ritorno di a comando semplice è il suo stato di uscita, o 128+ n se il comando è terminato dal segnale n .

Condotte

UN conduttura è una sequenza di uno o più comandi separati dal carattere|. Il formato per una pipeline è tempo -p ! comando | comando2 … .

L'output standard di comando è collegato tramite una pipe all'ingresso standard di comando2 . Questa connessione viene eseguita prima di qualsiasi reindirizzamento specificato dal comando.

Se la parola riservata! precede una pipeline, lo stato di uscita di quella pipeline è il NOT logico dello stato di uscita dell'ultimo comando. Altrimenti, lo stato della pipeline è lo stato di uscita dell'ultimo comando. La shell attende che tutti i comandi nella pipeline terminino prima di restituire un valore.

Se latempo la parola riservata precede una pipeline, il tempo trascorso e il tempo di sistema e utente consumati dalla sua esecuzione vengono segnalati al termine della pipeline. Il-p opzione cambia il formato di output in quello specificato da POSIX. IlFORMATO ORARIO la variabile può essere impostata su una stringa di formato che specifica come devono essere visualizzate le informazioni di temporizzazione.

Ogni comando in una pipeline viene eseguito come processo separato (ad esempio in una subshell).

elenchi

UN elenco è una sequenza di una o più condotte separate da uno degli operatori;, &, &&, o||e facoltativamente terminato da uno di;, &, o.

Di questi operatori di elenchi,&& e|| avere uguale precedenza, seguito da; e&, che hanno uguale precedenza.

Una sequenza di uno o più newline può apparire in a elenco invece di un punto e virgola per delimitare i comandi.

Se un comando è terminato dall'operatore di controllo&, la shell esegue il comando nel file sfondo in una sottotitola. La shell non attende il completamento del comando e lo stato di ritorno è 0. Comandi separati da a; sono eseguiti sequenzialmente; la shell attende che ciascun comando termini a turno. Lo stato di ritorno è lo stato di uscita dell'ultimo comando eseguito.

Gli operatori di controllo&& e|| denotano liste AND e liste OR, rispettivamente. Una lista AND ha la forma

command1 && comando2

comando2 viene eseguito se, e solo se, command1 restituisce uno stato di uscita pari a zero.

Una lista OR ha il modulo

command1 || comando2

comando2 viene eseguito se e solo se command1 restituisce uno stato di uscita diverso da zero. Lo stato di ritorno delle liste AND e OR è lo stato di uscita dell'ultimo comando eseguito nell'elenco.

Comandi composti

UN comando composto è uno dei seguenti:

(elenco) : elenco viene eseguito in una subshell. Le assegnazioni di variabili e i comandi incorporati che influiscono sull'ambiente della shell non rimangono in vigore dopo il completamento del comando. Lo stato di ritorno è lo stato di uscita di elenco .

{ elenco; } : elenco viene semplicemente eseguito nell'ambiente di shell corrente. elenco deve essere terminato con una nuova riga o punto e virgola. Questo è noto come a comando di gruppo . Lo stato di ritorno è lo stato di uscita di elenco . Si noti che a differenza dei metacaratteri( e), { e} siamo parole riservate e deve avvenire dove è consentito riconoscere una parola riservata. Dal momento che non causano un'interruzione di parole, devono essere separate da elenco da spazi bianchi.

((espressione)) : Il espressione viene valutato in base alle regole descritte in Valutazione aritmetica. Se il valore dell'espressione è diverso da zero, lo stato di ritorno è 0; altrimenti lo stato di ritorno è 1. Questo è esattamente equivalente apermettere ' espressione '.

espressione : Restituisce uno stato di 0 o 1 a seconda della valutazione dell'espressione condizionale espressione . Le espressioni sono composte dai primari descritti di seguito Espressioni condizionali. Espansione di parole e espansione del percorso non vengono eseguite sulle parole tra il e; vengono eseguite espansione tilde, espansione di parametri e variabili, espansione aritmetica, sostituzione di comando, sostituzione di processo e rimozione di quote.

Quando il== e!= gli operatori sono utilizzati, la stringa a destra dell'operatore è considerata un modello e abbinata secondo le regole descritte inPattern Matching. Il valore restituito è 0 se la stringa corrisponde o non corrisponde al modello, rispettivamente, e 1 altrimenti. Qualunque parte del modello può essere quotata per forzarla ad essere abbinata come una stringa.

Le espressioni possono essere combinate utilizzando i seguenti operatori, elencati in ordine decrescente di precedenza:

  • (espressione): restituisce il valore di espressione . Questo può essere usato per sovrascrivere la normale precedenza degli operatori.
  • ! expressio n: Vero se espressione è falso.
  • espressione1 && espressione2 : Vero se entrambi espressione1 e espressione2 sono veri
  • espressione1 || espressione2 : Vero se entrambi espressione1 o espressione2 è vero.

Il&& e|| gli operatori non valutano espressione2 se il valore di espressione1 è sufficiente per determinare il valore di ritorno dell'intera espressione condizionale.

  • per nome nel parola ; fare elenco ; fatto: L'elenco di parole seguentinel è espanso, generando un elenco di elementi. La variabile nome è impostato su ogni elemento di questa lista a turno, e elenco viene eseguito ogni volta. Se lanel parola è omesso, ilper comando eseguito elenco una volta per ogni parametro posizionale impostato. Lo stato di ritorno è lo stato di uscita dell'ultimo comando che viene eseguito. Se l'espansione degli elementi seguentinel restituisce una lista vuota, non vengono eseguiti comandi e lo stato di ritorno è 0.
  • per (( expr1 ; espr2 ; expr3 )) ; fare elenco ; fatto: In primo luogo, l'espressione aritmetica expr1 viene valutato in base alle regole descritte inValutazione aritmetica. L'espressione aritmetica espr2 viene quindi valutato ripetutamente finché non viene valutato a zero. Ogni volta espr2 valuta un valore diverso da zero, elenco viene eseguito e l'espressione aritmetica expr3 è valutato Se una qualsiasi espressione viene omessa, si comporta come se valutasse 1. Il valore restituito è lo stato di uscita dell'ultimo comando in elenco che viene eseguito o falso se una qualsiasi delle espressioni non è valida.
  • selezionare nome nel parola ; fare elenco ; fatto: La lista di parole che seguononel è espanso, generando un elenco di elementi. L'insieme di parole espanse viene stampato sull'errore standard, ciascuno preceduto da un numero. Se lanel parola è omesso, i parametri posizionali sono stampati. Il PS3 viene quindi visualizzato il prompt e una riga viene letta dallo standard input. Se la linea è composta da un numero corrispondente a una delle parole visualizzate, allora il valore di nome è impostato su quella parola. Se la linea è vuota, le parole e il prompt vengono nuovamente visualizzati. Se EOF viene letto, il comando termina. Qualsiasi altro valore letto cause nome essere impostato su null. La riga letta viene salvata nella variabileRISPONDERE. Il elenco viene eseguito dopo ogni selezione fino a arompere il comando è eseguito. Lo stato di uscita diselezionare è lo stato di uscita dell'ultimo comando eseguito in elenco o zero se nessun comando è stato eseguito.
  • Astuccio parola nel ( modello | modello : AAstuccio il comando si espande per primo parola e cerca di abbinarlo a ciascuno modello a sua volta, utilizzando le stesse regole di corrispondenza dell'espansione del percorso. Quando viene trovata una corrispondenza, la corrispondente elenco viene eseguito. Dopo la prima partita, non viene tentata alcuna corrispondenza successiva. Lo stato di uscita è zero se nessun modello corrisponde. Altrimenti, è lo stato di uscita dell'ultimo comando eseguito in elenco .
  • Se elenco ; poi elenco; e Elif elenco ; poi elenco ; … altro elenco ; fi: IlSe elenco viene eseguito. Se il suo stato di uscita è zero, ilpoi elenco viene eseguito. Altrimenti, ciascuno Elif elenco viene eseguito a sua volta e se il suo stato di uscita è zero, il corrispondentepoi elenco viene eseguito e il comando viene completato. Altrimenti, ilaltro elenco viene eseguito, se presente. Lo stato di uscita è lo stato di uscita dell'ultimo comando eseguito, oppure zero se nessuna condizione è verificata come vera.
  • mentre elenco ; fare elenco ; fatto e fino a elenco ; fare elenco ; fatto: Ilmentre comando esegue continuamente ilfare elenco finché l'ultimo comando in elenco restituisce uno stato di uscita pari a zero. Ilfino a il comando è identico almentre comando, tranne che il test è negato; ilfare elenco viene eseguito fino all'ultimo comando in elenco restituisce uno stato di uscita diverso da zero. Lo stato di uscita dimentre efino a comandi è lo stato di uscita dell'ultimofare elenco comando eseguito, o zero se nessuno è stato eseguito.
  • funzione nome () { elenco ; }: Definisce una funzione denominata nome . Il corpo della funzione è il elenco di comandi tra {e}. Questo elenco viene eseguito ogni volta nome è specificato come il nome di un comando semplice. Lo stato di uscita di una funzione è lo stato di uscita dell'ultimo comando eseguito nel corpo.

Commenti

In una shell non interattiva o in una shell interattiva in cui il interactive opzione per ilshopt builtin è abilitato, una parola che inizia con# fa sì che quella parola e tutti i restanti caratteri su quella linea vengano ignorati. Una shell interattiva senza ilinteractive l'opzione abilitata non consente commenti. Il interactive l'opzione è attiva per impostazione predefinita nelle shell interattive.

citando

citando è usato per rimuovere il significato speciale di alcuni caratteri o parole nella shell. La quotatura può essere utilizzata per disabilitare il trattamento speciale per caratteri speciali, per impedire che le parole riservate vengano riconosciute come tali e per impedire l'espansione dei parametri.

Ognuno di metacaratteri elencato sopradefinizioni ha un significato speciale per la shell e deve essere citato se deve rappresentare se stesso.

Quando vengono utilizzate le strutture di espansione della cronologia dei comandi, il espansione della storia personaggio, di solito!, deve essere citato per prevenire l'espansione della cronologia.

Esistono tre meccanismi di citazione: il personaggio di fuga , virgolette singole e doppie virgolette.

Un backslash non quotato () è il personaggio di fuga . Conserva il valore letterale del prossimo personaggio che segue ad eccezione di . Se una appare la coppia e il backslash non è esso stesso quotato, il viene considerato come una continuazione di riga (ovvero, viene rimosso dal flusso di input e effettivamente ignorato).

Racchiudere i caratteri tra virgolette singole mantiene il valore letterale di ciascun carattere tra virgolette. Una virgoletta singola non può verificarsi tra virgolette singole, anche se precedute da una barra rovesciata.

Racchiudere i caratteri tra virgolette conserva il valore letterale di tutti i caratteri all'interno delle virgolette, ad eccezione di$, ', e. I personaggi$ e' mantengono il loro significato speciale tra virgolette. Il backslash mantiene il suo significato speciale solo se seguito da uno dei seguenti caratteri:$, ', ', , o. Una virgoletta doppia può essere citata tra virgolette precedendola con una barra rovesciata.

I parametri speciali* e@ avere un significato speciale quando si trova tra virgolette.

Parole della forma$' stringa 'sono trattati appositamente. La parola si espande a stringa , con caratteri di escape backslash sostituiti come specificato dallo standard ANSI C. Le sequenze di escape di backslash, se presenti, vengono decodificate come segue:

  • un: avviso (campanello)
  • b: backspace
  • e: un personaggio di fuga
  • f: modulo di alimentazione
  • n: nuova linea
  • r: ritorno a capo
  • t: tab orizzontale
  • v: tab verticale
  • \: backslash
  • ': citazione singola
  • nnn : il carattere a otto bit il cui valore è il valore ottale nnn (da una a tre cifre)
  • X HH : il carattere a otto bit il cui valore è il valore esadecimale HH (una o due cifre esadecimali)
  • c X : un controllo X personaggio

Il risultato espanso è quotato in un'unica virgola, come se il simbolo del dollaro non fosse stato presente.

Una stringa doppia citazione preceduta da un segno di dollaro ($) causerà la traduzione della stringa in base alle impostazioni locali correnti. Se la locale corrente èC oPOSIX, il simbolo del dollaro viene ignorato. Se la stringa è tradotta e sostituita, la sostituzione è doppia citazione.

parametri

UN parametro è un'entità che memorizza i valori. Può essere un nome , un numero o uno dei caratteri speciali elencati sottoParametri speciali. Per gli scopi della shell, a variabile è un parametro indicato da a nome . Una variabile ha a valore e zero o più attributi . Gli attributi sono assegnati usando ildichiarare comando incorporato.

Un parametro è impostato se è stato assegnato un valore. La stringa nulla è un valore valido. Una volta che una variabile è impostata, può essere disattivata solo usando ilunset comando incorporato.

UN variabile può essere assegnato da una dichiarazione del modulo: nome = valore

Se valore non è dato, la variabile è assegnata alla stringa nulla. Tutti valori subisce espansione di tilde, espansione di parametri e variabili, sostituzione di comandi, espansione aritmetica e rimozione di quote. Se la variabile ha il suonumero intero insieme di attributi, quindi valore è soggetto ad espansione aritmetica anche se l'espansione $ ((…)) non viene utilizzata. La suddivisione in parole non viene eseguita, ad eccezione di'$@' come spiegato sottoParametri speciali. L'espansione del nome del percorso non viene eseguita. Le dichiarazioni di assegnazione possono anche apparire come argomenti aldichiarare, comporre, esportare, sola lettura, e Locale comandi incorporati.

Parametri posizionali

UN parametro posizionale è un parametro denotato da una o più cifre, diverso dalla singola cifra 0. I parametri posizionali vengono assegnati dagli argomenti della shell quando viene richiamato e possono essere riassegnati utilizzando ilimpostato comando incorporato. I parametri posizionali non possono essere assegnati con istruzioni di assegnazione. I parametri posizionali vengono temporaneamente sostituiti quando viene eseguita una funzione di shell.

Quando un parametro posizionale composto da più di una cifra viene espanso, deve essere racchiuso tra parentesi graffe.

Parametri speciali

La shell tratta in modo specifico alcuni parametri. Questi parametri possono essere referenziati; l'assegnazione a loro non è consentita.

  • *: Si espande ai parametri posizionali, a partire da uno. Quando l'espansione avviene tra virgolette doppie, si espande in una singola parola con il valore di ciascun parametro separato dal primo carattere delIFS variabile speciale. Questo è, "$*" è equivalente a "$1 c $2 c ", dove c è il primo carattere del valore diIFS variabile. SeIFS non è impostato, i parametri sono separati da spazi. SeIFS è nullo, i parametri vengono uniti senza separatori intermedi.
  • @: Si espande ai parametri posizionali, a partire da uno. Quando l'espansione avviene tra virgolette doppie, ciascun parametro si espande in una parola separata. Questo è, "$@" è equivalente a "$1' '$2"… Quando non ci sono parametri posizionali,"$@" e$@espandi a nulla (vengono rimossi).
  • #: Si espande al numero di parametri posizionali in decimale.
  • ?: Si espande nello stato della pipeline in primo piano eseguita più recentemente.
  • -: Si espande nei flag delle opzioni correnti come specificato durante l'invocazione, daimpostato comando incorporato o quelli impostati dalla shell stessa, come ad esempio-io opzione.
  • $: Si espande nell'ID di processo della shell. In una subshell (), si espande nell'ID di processo della shell corrente, non nella subshell.
  • !: Si espande nell'ID di processo del comando in background (asincrono) eseguito più recentemente.
  • 0: Si espande al nome della shell o dello script della shell. Questo è impostato all'inizializzazione della shell. Sebash viene invocato con un file di comandi,$0 è impostato sul nome di quel file. Sebash è iniziato con il-c opzione, quindi$0 è impostato sul primo argomento dopo la stringa da eseguire, se presente. Altrimenti, è impostato sul nome del file usato per invocarebash, come indicato dall'argomento zero.
  • _: All'avvio della shell, impostare il nome del file assoluto della shell o dello script della shell che viene eseguito come passato nell'elenco degli argomenti. Successivamente, espande l'ultimo argomento al comando precedente, dopo l'espansione. Imposta anche il nome file completo di ciascun comando eseguito e inserito nell'ambiente esportato in quel comando. Quando si controlla la posta, questo parametro contiene il nome del file di posta attualmente controllato.

Shell Variables

Le seguenti variabili sono impostate dalla shell:

BASH: Si espande al nome file completo utilizzato per richiamare questa istanza dibash.

BASH_VERSINFO: Una variabile array di sola lettura i cui membri contengono informazioni sulla versione per questa istanza di bash. I valori assegnati ai membri dell'array sono i seguenti:

  • BASH_VERSINFO 0: il numero di versione principale (il pubblicazione )
  • BASH_VERSINFO 1: il numero di versione minore (il versione )
  • BASH_VERSINFO 2: il livello di patch
  • BASH_VERSINFO 3: la versione build
  • BASH_VERSINFO 4: lo stato di rilascio ( beta1, per esempio)
  • BASH_VERSINFO 5: il valore diMACHTYPE

BASH_VERSION: Si espande in una stringa che descrive la versione di questa istanza dibash.

COMP_CWORD: Un indice in$ {} COMP_WORDS della parola contenente la posizione corrente del cursore. Questa variabile è disponibile solo nelle funzioni di shell richiamate dalle funzioni di completamento programmabili.

COMP_LINE: La riga di comando corrente. Questa variabile è disponibile solo nelle funzioni della shell e nei comandi esterni richiamati dalle funzioni di completamento programmabili.

COMP_POINT: L'indice della posizione corrente del cursore rispetto all'inizio del comando corrente. Se la posizione corrente del cursore è alla fine del comando corrente, il valore di questa variabile è uguale a$ {# COMP_LINE}. Questa variabile è disponibile solo nelle funzioni della shell e nei comandi esterni richiamati dalle funzioni di completamento programmabili.

COMP_WORDS: Una variabile di matrice costituita dalle singole parole nella riga di comando corrente. Questa variabile è disponibile solo nelle funzioni di shell richiamate dalle funzioni di completamento programmabili.

DIRSTACK: Una variabile di matrice che contiene il contenuto corrente dello stack di directory. Le directory vengono visualizzate nello stack nell'ordine in cui sono visualizzate dadirs incorporato. Assegnare ai membri di questa variabile di matrice può essere usato per modificare le directory già nello stack, ma ilpushd epopd i builtin devono essere usati per aggiungere e rimuovere le directory. L'assegnazione a questa variabile non cambierà la directory corrente. SeDIRSTACK non è impostato, perde le sue proprietà speciali, anche se viene successivamente ripristinato.

EUID: Si espande nell'ID utente effettivo dell'utente corrente, inizializzato all'avvio della shell. Questa variabile è di sola lettura.

FUNCNAME: Il nome di qualsiasi funzione di shell attualmente in esecuzione. Questa variabile esiste solo quando è in esecuzione una funzione di shell. Assegnazioni aFUNCNAME non ha alcun effetto e restituisce uno stato di errore. SeFUNCNAME non è impostato, perde le sue proprietà speciali, anche se viene successivamente ripristinato.

GRUPPI: Una variabile di matrice contenente l'elenco di gruppi di cui l'utente corrente è membro. Assegnazioni aGRUPPI non ha alcun effetto e restituisce uno stato di errore. SeGRUPPI non è impostato, perde le sue proprietà speciali, anche se viene successivamente ripristinato.

HISTCMD: Il numero di cronologia o l'indice nell'elenco cronologia del comando corrente. SeHISTCMD non è impostato, perde le sue proprietà speciali, anche se viene successivamente ripristinato.

HOSTNAME: Impostato automaticamente sul nome dell'host corrente.

HOSTTYPE: Impostato automaticamente su una stringa che descrive in modo univoco il tipo di macchina su cuibash è in esecuzione. L'impostazione predefinita dipende dal sistema.

LINENO: Ogni volta che si fa riferimento a questo parametro, la shell sostituisce un numero decimale che rappresenta il numero di linea sequenziale corrente (che inizia con 1) all'interno di uno script o di una funzione. Quando non è in uno script o in una funzione, non è garantito che il valore sostituito sia significativo. SeLINENO non è impostato, perde le sue proprietà speciali, anche se viene successivamente ripristinato.

MACHTYPE: Impostato automaticamente su una stringa che descrive completamente il tipo di sistema su cuibash è in esecuzione nello standard GNU cpu-company-system formato. L'impostazione predefinita dipende dal sistema.

OLDPWD: La precedente directory di lavoro come impostata dalCD comando.

OPTARG: Il valore dell'ultimo argomento opzione elaborato dagetopts comando incorporato.

OPTIND: L'indice dell'argomento successivo da elaborare dagetopts comando incorporato.

OSTYPE: Impostato automaticamente su una stringa che descrive il sistema operativo su cuibash è in esecuzione. L'impostazione predefinita dipende dal sistema.

PIPESTATUS: Una variabile di matrice contenente un elenco di valori di stato di uscita dai processi nella pipeline in primo piano eseguita più recentemente, che può contenere solo un singolo comando.

PPID: L'ID di processo del genitore della shell. Questa variabile è di sola lettura.

PWD: La directory di lavoro corrente impostata dalCD comando.

CASUALE: Ogni volta che si fa riferimento a questo parametro, viene generato un numero casuale compreso tra 0 e 32767. La sequenza di numeri casuali può essere inizializzata assegnando un valore a CASUALE. SeCASUALE non è impostato, perde le sue proprietà speciali, anche se viene successivamente ripristinato.

RISPONDERE: Impostare sulla riga di input letta daleggere comando incorporato quando non vengono forniti argomenti.

SECONDI: Ogni volta che si fa riferimento a questo parametro, viene restituito il numero di secondi dall'invocazione della shell. Se un valore è assegnato aSECONDI, il valore restituito su riferimenti successivi è il numero di secondi dall'assegnazione più il valore assegnato. Se SECONDI non è impostato, perde le sue proprietà speciali, anche se viene successivamente ripristinato.

SHELLOPTS: Un elenco separato da due punti di opzioni di shell abilitate. Ogni parola nella lista è un argomento valido per il-o opzione per ilimpostato comando incorporato. Le opzioni che appaiono inSHELLOPTS sono quelli riportati come sopra diimposta -o. Se questa variabile è nell'ambiente quandobash si avvia, ogni opzione della shell nella lista sarà abilitata prima di leggere qualsiasi file di avvio. Questa variabile è di sola lettura.

SHLVL: Incrementato di uno ogni volta un'istanza dibash è iniziato.

UID: Si espande nell'ID utente dell'utente corrente, inizializzato all'avvio della shell. Questa variabile è di sola lettura.

Le seguenti variabili sono usate dalla shell. In alcuni casi,bash assegna un valore predefinito a una variabile; questi casi sono noti.

BASH_ENV: Se questo parametro è impostato quandobash sta eseguendo uno script di shell, il suo valore è interpretato come un nome di file contenente comandi per inizializzare la shell, come in ~ / .Bashrc . Il valore di BASH_ENV è soggetto all'espansione dei parametri, alla sostituzione dei comandi e all'espansione aritmetica prima di essere interpretato come un nome di file.SENTIERO non è usato per cercare il nome del file risultante.

CDPATH: Il percorso di ricerca perCD comando. Questo è un elenco di directory separate da due punti in cui la shell cerca le directory di destinazione specificate daCD comando. Un valore di esempio è ".: ~: / Usr".

COLONNE: Usato dalselezionare comando incorporato per determinare la larghezza del terminale durante la stampa degli elenchi di selezione. Imposta automaticamente al ricevimento di un SIGWINCH.

COMPREPLY: Una variabile di matrice da cuibash legge i possibili completamenti generati da una funzione di shell richiamata dalla funzione di completamento programmabile.

FCEDIT: L'editor predefinito perfc comando incorporato.

FIGNORE: Un elenco di suffissi separati da due punti da ignorare quando si esegue il completamento del nome file. Un nome file il cui suffisso corrisponde a una delle voci inFIGNORE è escluso dalla lista dei nomi dei file corrispondenti. Un valore di esempio è ".o: ~".

GLOBIGNORE: Un elenco di pattern separati da due punti che definiscono l'insieme di nomi di file da ignorare con l'espansione del percorso. Se un nome file che corrisponde a un modello di espansione del nome percorso corrisponde anche a uno degli schemi inGLOBIGNORE, viene rimosso dall'elenco di partite.

HISTCONTROL: Se impostato su un valore di ignorespace , linee che iniziano con aspazio il carattere non è inserito nella lista della storia. Se impostato su un valore di ignoredups , le linee che corrispondono all'ultima riga della cronologia non vengono inserite. Un valore di ignoreboth combina le due opzioni. Se non impostato o impostato su un valore diverso da quelli precedenti, tutte le righe lette dal parser vengono salvate nell'elenco della cronologia, in base al valore diHISTIGNORE. La funzione di questa variabile è sostituita da HISTIGNORE. La seconda riga e le successive di un comando composto su più righe non vengono testate e vengono aggiunte alla cronologia indipendentemente dal valore diHISTCONTROL.

HISTFILE: Il nome del file in cui è salvata la cronologia dei comandi. Il valore predefinito è ~ / .Bash_history . Se non impostato, la cronologia dei comandi non viene salvata all'uscita di una shell interattiva.

HISTFILESIZE: Il numero massimo di righe contenute nel file di cronologia. Quando a questa variabile viene assegnato un valore, il file di cronologia viene troncato, se necessario, per contenere non più di quel numero di righe. Il valore predefinito è 500. Il file di cronologia viene anche troncato a queste dimensioni dopo averlo scritto quando una shell interattiva viene chiusa.

HISTIGNORE: Elenco di schemi separati da due punti utilizzati per decidere quali righe di comando devono essere salvate nell'elenco cronologico. Ogni modello è ancorato all'inizio della riga e deve corrispondere alla linea completa (non implicita '*'è aggiunto). Ogni modello viene testato rispetto alla linea dopo i controlli specificati daHISTCONTROL sono applicate. Oltre ai normali caratteri di corrispondenza del modello di shell, '&'corrisponde alla precedente cronologia. '&'può essere sfuggito utilizzando una barra rovesciata; il backslash viene rimosso prima di tentare una corrispondenza. La seconda riga e le successive di un comando composto su più righe non vengono testate e vengono aggiunte alla cronologia indipendentemente dal valore diHISTIGNORE.

HISTSIZE: Il numero di comandi da ricordare nella cronologia dei comandi. Il valore predefinito è 500.

CASA: La home directory dell'utente corrente; l'argomento predefinito perCD comando incorporato. Il valore di questa variabile viene anche utilizzato quando si esegue l'espansione tilde.

HOSTFILE: Contiene il nome di un file nello stesso formato di / etc / hosts che dovrebbe essere letto quando la shell deve completare un nome host. L'elenco dei possibili completamenti del nome host può essere modificato mentre la shell è in esecuzione; al successivo tentativo di completamento dell'hostname dopo la modifica del valore,bash aggiunge il contenuto del nuovo file all'elenco esistente. Se HOSTFILE è impostato, ma non ha valore,bash tenta di leggere / etc / hosts per ottenere l'elenco dei possibili completamenti del nome host. quandoHOSTFILE non è impostato, l'elenco dei nomi host viene cancellato.

IFS: Il Separatore di campo interno è usato per la divisione delle parole dopo l'espansione e per dividere le linee in parole con illeggere comando incorporato. Il valore predefinito è "''.

IGNOREEOF: Controlla l'azione di una shell interattiva al ricevimento di unEOF carattere come unico input. Se impostato, il valore è il numero di consecutiviEOF caratteri che devono essere digitati come i primi caratteri su una riga di input primabash uscite. Se la variabile esiste ma non ha un valore numerico o non ha valore, il valore predefinito è 10. Se non esiste,EOF indica la fine dell'input alla shell.

INPUTRC: Il nome del file perlinea di lettura file di avvio, sovrascrivendo il valore predefinito di ~ / .Inputrc .

LANG: Utilizzato per determinare la categoria locale per qualsiasi categoria non specificatamente selezionata con una variabile che inizia conLC_.

LC_ALL: Questa variabile sostituisce il valore diLANG e qualsiasi altroLC_ variabile che specifica una categoria locale.

LC_COLLATE: Questa variabile determina l'ordine di confronto utilizzato quando si ordinano i risultati dell'espansione del percorso e determina il comportamento delle espressioni di intervallo, delle classi di equivalenza e delle sequenze di raggruppamento all'interno dell'espansione del percorso e della corrispondenza del modello.

LC_CTYPE: Questa variabile determina l'interpretazione dei caratteri e il comportamento delle classi di caratteri all'interno dell'espansione del percorso e della corrispondenza del modello.

LC_MESSAGES: Questa variabile determina le impostazioni locali utilizzate per tradurre stringhe tra virgolette precedute da a$.

LC_NUMERIC: Questa variabile determina la categoria di impostazioni locali utilizzata per la formattazione dei numeri.

LINEE: Usato dalselezionare comando incorporato per determinare la lunghezza della colonna per la stampa degli elenchi di selezione. Imposta automaticamente al ricevimento di un SIGWINCH.

MAIL: Se questo parametro è impostato su un nome di file e ilMAILPATH la variabile non è impostata,bashinforma l'utente dell'arrivo della posta nel file specificato.

MAILCHECK: Specifica la frequenza (in secondi)bash controlla la posta Il valore predefinito è 60 secondi. Quando è il momento di controllare la posta, la shell lo fa prima di visualizzare il prompt primario. Se questa variabile non è impostata o impostata su un valore che non è un numero maggiore o uguale a zero, la shell disabilita il controllo della posta.

MAILPATH: Un elenco di nomi file separati da due punti da controllare per la posta. Il messaggio da stampare quando arriva la posta in un determinato file può essere specificato separando il nome del file dal messaggio con un '?'. Se utilizzato nel testo del messaggio,$_ si espande al nome del file di posta corrente. Esempio:

MAILPATH = '/ var / mail / bfox? "Hai mail": ~ / shell-mail? "$ _ Ha mail!"'

bash fornisce un valore predefinito per questa variabile, ma il percorso dei file di posta dell'utente che utilizza dipende dal sistema (/ var / mail /$ USER).

OPTERR: Se impostato sul valore 1,bash visualizza i messaggi di errore generati dalgetopts comando incorporato.OPTERR è inizializzato a 1 ogni volta che viene invocata la shell o viene eseguito uno script di shell.

SENTIERO: Il percorso di ricerca per i comandi. È una lista di directory separate da due punti in cui la shell cerca i comandi. Il percorso predefinito dipende dal sistema e viene impostato dall'amministratore che installabash. Un valore comune è "/ usr / gnu / bin: / usr / local / bin: / usr / ucb: / bin: / usr / bin :." ".

POSIXLY_CORRECT: Se questa variabile si trova nell'ambiente quandobash inizia, la shell entra modalità posix prima di leggere i file di avvio, come se il--posix l'opzione di invocazione era stata fornita. Se è impostato mentre la shell è in esecuzione,bash consente modalità posix come se il comando set -o posix era stato giustiziato

PROMPT_COMMAND: Se impostato, il valore viene eseguito come comando prima di emettere ciascun prompt primario.

PS1: Il valore di questo parametro viene espanso e utilizzato come stringa di prompt primaria. Il valore predefinito è " S- v $''.

PS2: Il valore di questo parametro è espanso come conPS1 e usato come stringa di prompt secondaria. L'impostazione predefinita è "> ''.

PS3: Il valore di questo parametro viene utilizzato come prompt perselezionare comando.

PS4: Il valore di questo parametro è espanso come conPS1, e il valore viene stampato prima di ogni comandobash visualizza durante una traccia di esecuzione. Il primo personaggio diPS4 viene replicato più volte, se necessario, per indicare più livelli di riferimento indiretto. L'impostazione predefinita è "+ ''.

FORMATO ORARIO: Il valore di questo parametro viene utilizzato come stringa di formato che specifica come le informazioni di temporizzazione per le pipeline hanno il prefisso contempo la parola riservata dovrebbe essere visualizzata. Il % il personaggio introduce una sequenza di escape che viene espansa in un valore temporale o altre informazioni. Le sequenze di escape e i loro significati sono i seguenti. Le parentesi graffe indicano le parti opzionali.

  • %%: Un letterale%
  • % p l R: il tempo trascorso in secondi
  • % p l U: il numero di secondi CPU impiegati in modalità utente
  • % p l S: il numero di secondi CPU trascorsi in modalità sistema
  • % P: La percentuale della CPU, calcolata come (% U +% S) /% R

L'opzionale p è una cifra che specifica il precisione , il numero di cifre frazionarie dopo un punto decimale. Un valore pari a 0 non genera alcun punto decimale o frazione. Al massimo tre posizioni dopo la virgola decimale può essere specificato; valori di p maggiori di 3 vengono cambiati in 3. Se p non è specificato, viene utilizzato il valore 3.

L'opzionalel specifica un formato più lungo, inclusi i minuti, del modulo MM m SS . FF S. Il valore di p determina se la frazione è inclusa o meno.

Se questa variabile non è impostata,bash agisce come se avesse il valore $ ' nreal t% 3lR nuser t% 3lU nsys% 3lS'. Se il valore è nullo, non viene visualizzata alcuna informazione di temporizzazione. Una nuova riga finale viene aggiunta quando viene visualizzata la stringa di formato.

TMOUT: Se impostato su un valore maggiore di zero,TMOUT viene considerato come il timeout predefinito perleggere incorporato. Ilselezionare il comando termina se l'input non arriva dopoTMOUT secondi quando l'input proviene da un terminale.In una shell interattiva, il valore viene interpretato come il numero di secondi di attesa per l'input dopo l'emissione del prompt primario.bash termina dopo aver atteso quel numero di secondi se l'input non arriva.

auto_resume: Questa variabile controlla il modo in cui la shell interagisce con l'utente e il controllo del lavoro. Se questa variabile è impostata, i comandi semplici di una sola parola senza reindirizzamenti vengono considerati candidati per la ripresa di un lavoro interrotto esistente. Non è permessa alcuna ambiguità. Se c'è più di un lavoro che inizia con la stringa digitata, viene selezionato il lavoro più recente a cui si accede. Il nome di un lavoro interrotto, in questo contesto, è la riga di comando utilizzata per avviarlo. Se impostato sul valore esatto , la stringa fornita deve corrispondere esattamente al nome di un lavoro interrotto; se impostato su sottostringa , la stringa fornita deve corrispondere a una sottostringa del nome di un lavoro interrotto. Il sottostringa valore fornisce funzionalità analoghe a%? identificatore di lavoro. Se impostato su qualsiasi altro valore, la stringa fornita deve essere un prefisso del nome di un lavoro interrotto; questo fornisce funzionalità analoghe a% identificatore di lavoro.

histchars: I due o tre caratteri che controllano l'espansione della cronologia e la tokenizzazione. Il primo personaggio è il espansione della storia carattere, il carattere che segnala l'inizio di un'espansione della cronologia, normalmente '!'. Il secondo personaggio è il sostituzione rapida carattere, che è usato come abbreviazione per rieseguire il comando precedente inserito, sostituendo una stringa con un'altra nel comando. L'impostazione predefinita è '^'. Il terzo carattere opzionale è il carattere che indica che il resto della riga è un commento quando viene trovato come il primo carattere di una parola, normalmente '#'. Il carattere del commento cronologico causa la sostituzione della cronologia per le parole rimanenti sulla riga. Non necessariamente causa il parser della shell per trattare il resto della linea come un commento.

Array

bash fornisce variabili di array unidimensionali. Qualsiasi variabile può essere usata come una matrice; il dichiarare builtin dichiarerà esplicitamente un array. Non esiste un limite massimo per le dimensioni di un array né alcun requisito che i membri vengano indicizzati o assegnati in modo contiguo. Le matrici sono indicizzate utilizzando numeri interi e sono basate su zero.

Un array viene creato automaticamente se viene assegnata una variabile all'utilizzo della sintassi nome deponente = valore . Il deponente viene trattato come un'espressione aritmetica che deve valutare un numero maggiore o uguale a zero. Per dichiarare esplicitamente un array, utilizzaredichiarare -a nome . dichiarare -a nome deponente è anche accettato; il deponente è ignorato Gli attributi possono essere specificati per una variabile di matrice usando ildichiarare e sola lettura builtins. Ogni attributo si applica a tutti i membri di un array.

Gli array sono assegnati all'utilizzo di assegnazioni composte del modulo nome =(valore 1 … valore n ), dove ciascuno valore è della forma deponente = stringa . Solo stringa è obbligatorio. Se vengono fornite le parentesi e i pedici opzionali, viene assegnato quell'indice; altrimenti l'indice dell'elemento assegnato è l'ultimo indice assegnato dall'istruzione più uno. L'indicizzazione inizia da zero. Questa sintassi è accettata anche daldichiarare incorporato. Ai singoli elementi dell'array può essere assegnato l'uso di nome deponente = valore sintassi.

Qualsiasi elemento di una matrice può essere referenziato usando $ { nome deponente }. Le parentesi sono necessarie per evitare conflitti con l'espansione del percorso. Se deponente è@ o*, la parola si espande a tutti i membri di nome . Questi pedici differiscono solo quando la parola appare tra virgolette. Se la parola è doppia citazione, $ { nome *} si espande in una singola parola con il valore di ciascun membro dell'array separato dal primo carattere delIFS variabile speciale e $ { nome @} espande ogni elemento di nome a una parola separata. Quando non ci sono membri dell'array, $ { nome @} non si espande. Questo è analogo all'espansione dei parametri speciali* e@. ${# nome deponente } si espande fino alla lunghezza di $ { nome deponente }. Se deponente è* o@, l'espansione è il numero di elementi nella matrice. Il riferimento a una variabile di matrice senza un pedice è equivalente all'elemento di rife