Casa Audio Shell Unix / Linux 101

Shell Unix / Linux 101

Sommario:

Anonim

La riga di comando sui sistemi Unix e Linux è già molto potente, ma le shell sono uno strumento ancora più potente di quanto sembri. Puoi personalizzarli e spostarli sul contenuto del tuo cuore, purché tu sappia come.

Che cos'è una shell?

Quasi ogni manuale di Unix e Linux ha il diagramma standard di una shell che avvolge il sistema operativo, simile a una sorta di candy bar. La shell non è altro che un'interfaccia tra il sistema operativo, incluso il kernel, il file system e le varie chiamate di sistema e l'utente. Per molti anni, è stata l'unica interfaccia utente interattiva prima che le interfacce utente grafiche diventassero comuni negli anni '80. Le interfacce grafiche utente potrebbero anche essere considerate un tipo di shell, in quanto svolgono molte delle stesse funzioni: avvio di programmi, configurazione del sistema e gestione dei file.


Queste umili interfacce testuali hanno una potenza sorprendente. Per prima cosa, sono linguaggi di programmazione completi. Prima della comparsa di linguaggi di scripting ancora più potenti come Python, gli script di shell erano ideali per scrivere programmi che non necessitavano necessariamente della potenza di C. Sono ancora utili per automatizzare le attività di sistema e per la prototipazione rapida.


Hanno anche una serie di funzioni che semplificano il lavoro e la ricerca di file. Uno dei più utilizzati è "wildcarding" o "globbing". Quasi tutti gli utenti Unix e Linux hanno familiarità con il carattere jolly "*" per adattarsi a qualsiasi personaggio. Questo è in realtà il lavoro della shell. Conchiglie diverse hanno opzioni ancora più potenti.


Una delle caratteristiche distintive di Unix è la capacità di reindirizzare l'input e l'output del programma. La shell implementa questa funzionalità.


La shell è solo un altro programma, quindi è possibile per qualsiasi programmatore con le giuste competenze crearne uno. Ci sono state diverse conchiglie emerse nel corso degli anni.

Storia e una carrellata di conchiglie

Sebbene all'inizio del sistema operativo esistessero diverse shell Unix, la prima a ottenere un riconoscimento maggiore al di fuori di Bell Labs fu la Bourne Shell, che prese il nome da Stephen R. Bourne. La principale innovazione della shell è stata quella di supportare funzionalità per la programmazione strutturata, rendendo possibile per la prima volta utilizzare la shell come un vero linguaggio di programmazione. È così indispensabile che tutte le moderne versioni di Unix e Linux lo usano ancora, anche se di solito è una delle nuove shell che emulano la shell Bourne.


La shell principale successiva fu la shell C, comunemente abbreviata in "csh". Questa shell è stata sviluppata da UC Berkeley, diventando un componente importante del sapore BSD di Unix. Come suggerisce il nome, la sua sintassi è progettata per assomigliare al linguaggio di programmazione C, ma è stata davvero progettata per un uso interattivo.


Comprendeva un meccanismo di cronologia che consentiva agli utenti di tornare indietro e ripetere qualsiasi comando emesso in precedenza senza dover digitare nuovamente un'intera riga e migliorare il controllo dei lavori, semplificando l'esecuzione di più attività. (Ricorda, questo era un momento in cui la maggior parte delle persone utilizzava ancora terminali testuali.)


La prossima grande shell fu la Korn Shell, che uscì anche da Bell Labs. A proposito, la shell ha preso il nome da David Korn, non dalla band. La principale innovazione della shell Korn è l'introduzione della modifica da riga di comando, che estende ulteriormente la funzionalità della cronologia. Gli utenti possono tornare indietro e modificare i comandi digitati usando comandi simili a quelli degli editor vi o Emacs.


Delle principali conchiglie, la Bourne Again Shell, o bash, è la più popolare sin dalla sua introduzione alla fine degli anni '80. Questa shell, sviluppata nell'ambito del progetto GNU, incorpora le innovazioni delle shell C e Korn mantenendo la compatibilità con la shell Bourne, da cui il nome. È la shell "standard" sulla maggior parte delle distribuzioni Linux.


Z Shell (zsh), rilasciato per la prima volta nel 1990, è il sogno di un utente della riga di comando. Non solo ha la maggior parte delle altre caratteristiche principali che hanno le altre shell, ma è follemente personalizzabile con molte potenti funzionalità. Uno dei più potenti è il globbing ricorsivo, che consente agli utenti di abbinare i nomi dei file nelle sottodirectory durante l'emissione dei comandi anziché dei file nella directory di lavoro corrente. Gli utenti davvero avanzati possono anche personalizzare le opzioni di completamento, abbinando i file senza doverli digitare completamente. E per i dattilografi, può anche correggere l'ortografia. Questa shell è così avanzata, la sua pagina di manuale è stata suddivisa in diverse sezioni molto lunghe.

Scripting

Come accennato in precedenza, le shell non sono solo interfacce da riga di comando, ma potenti linguaggi di programmazione. Il bello dello scripting della shell è che puoi usare la stessa lingua sia nel normale uso interattivo che negli script, il che rende la curva di apprendimento molto più piatta. Le shell moderne includono tutte le solite caratteristiche del linguaggio di programmazione, inclusi controllo del flusso, funzioni e variabili. Alcuni di essi hanno persino strutture dati avanzate come array associativi.


Nonostante il loro potere, la programmazione in shell presenta alcune insidie. Il problema più grande è che è troppo facile scrivere script che dipendono da alcuni programmi che potrebbero non essere su un altro sistema o che dipendono da un particolare sapore di Unix o Linux. Ecco perché gli script di shell sono più adatti per i programmi che sai verranno eseguiti solo su un sistema. Se stai cercando di creare qualcosa di portatile e non vuoi scrivere un programma in C, la cosa migliore da fare è scrivere in un altro linguaggio di scripting come Perl o Python.

Una sbirciatina dietro la linea di comando Unix / Linux

C'è più potenza in agguato sotto la superficie della riga di comando di Unix / Linux. Questo articolo potrebbe ispirarti a dare una sbirciatina sotto il cofano della tua shell preferita per vedere cosa puoi davvero fare. Se vuoi entrare negli script di shell, potresti dare un'occhiata ai libri Unix Power Tools e Learning the Bash Shell. L'articolo originale di Stephen R. Bourne sulla sua shell è anche una buona introduzione al mondo degli script di shell, anche se è vecchio.

Shell Unix / Linux 101