Mentre questa è una buona prima approssimazione quando si inizia a imparare le basi dell'uso delle shell, al livello di "ecco come si esegue un programma" e "ecco come si eseguono più programmi uno dopo l'altro su una sola riga" , in realtà non è vero.
Più difficile da capire per un principiante, ma una spiegazione più corretta è che il linguaggio shell è un linguaggio informatico . Ha una sintassi . Tale sintassi comprende vari elementi lessicali tra cui (tra le altre cose) newline, operatori, parole e parole riservate.
if
, then
, else
, E fi
sono tutte parole riservate . Hanno significati particolari quando analizzano l'input che si dà a una shell, secondo la sua grammatica . Allo stesso modo, ;
è un operatore separatore .
L'input nel linguaggio shell è quindi, nel suo insieme, un programma per computer interpretato da un altro programma, un interprete , la shell. Le sue singole parti grammaticali non sono programmi. Il linguaggio shell è un modo per specificare (altri) programmi per l'esecuzione della shell.
[
non è un elemento lessicale speciale nella grammatica della shell come un operatore. È una parola ordinaria , che nomina uno di questi programmi chiamato [
. Molte shell hanno una versione integrata di questo programma, combinata nel codice del programma shell stesso, ma puoi anche trovare un programma esterno con questo nome da qualche parte come /bin/[
o /usr/bin/[
, quali programmi diversi dalle shell possono invocare. Allo stesso modo, ]
non è nemmeno uno speciale elemento lessicale della shell. È una parola normale, che diventa un argomento per il [
programma. Il [
programma richiede che il suo argomento finale, quando viene eseguito, sia ]
, che procede quindi a ignorare.
Un altro programma simile chiamato nella tua domanda è echo
. Ancora una volta, la maggior parte delle shell ha una versione integrata di questo programma. Ma ancora una volta esiste anche una versione esterna del programma, da qualche parte come /bin/echo
o /usr/bin/echo
, per invocare programmi diversi dalle shell.
Un terzo programma chiamato nella tua domanda è ls
. In genere le shell non hanno versioni integrate di questo programma, ed è un programma esterno, che si trova da qualche parte come /bin/ls
o /usr/bin/ls
.
Per la shell Bourne Again, puoi leggere ulteriori informazioni al riguardo nelle Funzionalità di base della shell della documentazione delle informazioni sulla shell GNU Bourne Again. Altre shell hanno grammatiche diverse, naturalmente. Le specifiche Unix singole descrivono una sintassi che tutte le shell conformi a POSIX (nelle loro modalità conformi a POSIX) dovrebbero aderire.
Ulteriori letture
- " Shell Grammar ". Shell Command Language . Specifiche di base Numero 7. Il gruppo aperto. IEEE 1003.1-2008. ISBN 1937218812.
test
. Utilità . Specifiche di base Numero 7. Il gruppo aperto. IEEE 1003.1-2008. ISBN 1937218812.
- " Shell Grammar ". Il manuale Z Shell . versione 5.3.1. 2017.