Bash è un scripting
linguaggio:
Da wikipedia:
Un linguaggio di scripting o linguaggio di scripting è un linguaggio di programmazione che supporta la scrittura di script, programmi scritti per un ambiente software che automatizza l'esecuzione di compiti che potrebbero alternativamente essere eseguiti uno per uno da un operatore umano. [...]
Il termine script è tipicamente riservato a piccoli programmi (fino a poche migliaia di righe di codice).
Gli script sono in genere veloci e sporchi. Dì, uno script bash per semplificarti la vita. Considerando che un linguaggio di "programmazione" dovrebbe essere molto più ponderato e deliberato. La cosa con i linguaggi di "programmazione" è che di solito sono più veloci e offrono un maggiore controllo sulle cose di basso livello, se lo desideri.
i linguaggi di "programmazione" vengono generalmente utilizzati in scenari in cui il codice durerà a lungo. Se vuoi scrivere qualcosa velocemente e poi non usarlo mai più, i linguaggi di 'scripting' sono quello che ti serve.
Puoi trovare un articolo interessante qui.
Se conosci qualche comando, dì ls
, lo digiti e poi premi invio, la shell saprà dove si trova quel programma (ls), lo invocherà e ti mostrerà il risultato. Questo è l'utilizzo della shell "non script".
Ma, se ordini un paio di tali comandi in una sequenza, diciamo A, B, C, D, e poi lo metti (la sequenza) in un file eseguibile, hai un programma. Il programma ha un nome e una posizione, quindi può essere referenziato e richiamato; ha del codice, quindi può essere eseguito, un comando alla volta, dalla CPU.
(Il programma non è compilato - come, ad esempio, sarebbe stato il sorgente C - e questo lo rende uno script. Ma è comunque un programma.)
Cioè, in qualche aspetto, già a questo punto stai programmando, perché stai istruendo il computer su cosa fare.
Inoltre, sempre a un livello molto elementare, stai usando anche un linguaggio di programmazione, perché non puoi semplicemente digitare qualcosa (e aspettarti che funzioni); allo stesso tempo, qualsiasi cosa tu scriva otterrai attività dal computer che corrisponde esattamente a ciò che hai scritto.
Ci sono regole su come dovresti dire le cose, e ci sono regole su come il computer reagirà a quelle cose.
Detto questo, con la "programmazione", in genere associ un po' più di potenza espressiva rispetto al semplice accatastare i comandi uno sopra l'altro. Per lo meno, ti piacerebbe ramificare (if ... then ... else
), iterazione (loop:while
, for
, ecc.), e probabilmente anche altre cose. Ma va bene perché i linguaggi di scripting hanno queste cose e altro ancora.
Le shell hanno lingue diverse, sì, ma alcune possono sovrapporsi in larga misura per convenzione (perché cambiare un buon modo di dire qualcosa?), o per essere compatibili con versioni precedenti (o con qualche standard).