LINUX : COSA E’ LA SHELL ?

()

THE LINUX COMMAND LINE

Considerati avvisato; l’apprendimento della riga di comando non è uno sforzo casuale.

D’altra parte, imparare la riga di comando di Linux è estremamente gratificante.

Se pensi di essere un “utente esperto” ora, aspetta. Non sai ancora cos’è il vero potere. E, a differenza di molte altre abilità informatiche, la conoscenza della riga di comando è di lunga durata. Le competenze acquisite oggi saranno ancora utili tra 10 anni. La riga di comando è sopravvissuta alla prova del tempo. Si presume anche che tu non abbia esperienza di programmazione, ma non preoccuparti, inizieremo anche tu su quel percorso.

1 Ruolo del kernel

I tre componenti principali di un sistema operativo sono –  il kernel, la shell e il filesystem.

 Il kernel del sistema operativo è come un controllore del traffico aereo in un aeroporto. Il kernel determina quale programma ottiene quali pezzi di memoria, avvia e uccide i programmi e gestisce la visualizzazione del testo su un monitor. Quando un’applicazione deve scrivere su disco, deve chiedere al sistema operativo di completare l’operazione di scrittura. Se due applicazioni richiedono la stessa risorsa, il kernel decide chi lo ottiene e, in alcuni casi, uccide una delle applicazioni per salvare il resto del sistema.

Il kernel gestisce anche il passaggio tra le applicazioni. Un computer avrà un piccolo numero di CPU e una quantità finita di memoria.

Il kernel si occupa di scaricare un’attività e caricare una nuova attività se ci sono più attività che CPU.

Quando l’attività corrente è stata eseguita per un periodo di tempo sufficiente, la CPU mette in pausa l’attività in modo che un’altra possa essere eseguita. Questo si chiama multitasking preventivo.

Il multitasking significa che il computer sta eseguendo più attività contemporaneamente e la prevenzione indica che il kernel sta decidendo quando passare al focus tra le attività.

Con il rapido passaggio delle attività, sembra che il computer stia facendo molte cose contemporaneamente. Ogni applicazione può pensare di avere un grande blocco di memoria sul sistema, ma è il kernel che mantiene questa illusione, rimappando blocchi di memoria più piccoli, condividendo blocchi di memoria con altre applicazioni o addirittura sostituendo blocchi che non sono stati toccati su disco. All’avvio del computer, carica un piccolo pezzo di codice chiamato bootloader. Il compito del bootloader è caricare il kernel e avviarlo. Se hai più familiarità  con sistemi operativi come Microsoft Windows o OS X di Apple, probabilmente non vedrai mai il bootloader, ma nel mondo UNIX di solito è visibile in modo da poter modificare il modo in cui il tuo computer si avvia.

Il bootloader carica il kernel Linux e quindi trasferisce il controllo.

Linux continua quindi con l’esecuzione dei programmi necessari per rendere utile il computer, come la connessione alla rete o l’avvio di un server web.

1.1.2 Applicazioni

Come un controllore del traffico aereo, il kernel non è utile senza qualcosa da controllare.  Se il kernel è la torre, le applicazioni sono gli aeroplani. Le applicazioni inviano richieste al kernel e ricevono risorse, come memoria, CPU e disco, in cambio.  Il kernel estrae anche i dettagli dall’applicazione.  L’applicazione non sa se un blocco di disco si trova su un’unità a stato solido del produttore A, un disco rigido del produttore B o persino una condivisione di file di rete. Le applicazioni seguono semplicemente l’interfaccia di programmazione dell’applicazione (API) del  kernel e in cambio non devono preoccuparsi dei dettagli di implementazione. Quando noi, come utenti, pensiamo alle applicazioni, tendiamo a pensare a elaboratori di testi, browser Web e client di posta elettronica. Al kernel non  importa se sta eseguendo qualcosa di fronte all’utente, un servizio di rete che parla a un computer remoto o un’attività interna. Quindi, da questo otteniamo  un’astrazione chiamata processo.

Un processo è solo un’attività che viene caricata e tracciata dal kernel. Un’applicazione potrebbe anche aver bisogno di  più processi per funzionare, quindi il kernel si occupa di eseguire i processi, avviarli e arrestarli come richiesto, e distribuire risorse di sistema.

1.1.3 Ruolo dell’open source

Linux è iniziato nel 1991 come progetto hobby di Linus Torvalds. Ha reso la fonte liberamente disponibile e altri si sono uniti per dare forma a questo nascente sistema operativo. Il suo non è stato il primo sistema sviluppato da un gruppo, ma poiché si trattava di un progetto ex novo, i primi utenti avevano la capacità di influenzare la direzione del progetto e assicurarsi che gli errori di altri UNIX non fossero ripetuti.

I progetti software assumono la forma di codice sorgente, che è un insieme leggibile di istruzioni per computer. Il codice sorgente può essere scritto in una qualsiasi delle centinaia di linguaggi di programmazione diversi, Linux sembra essere scritto in C, che è un linguaggio che condivide la storia con l’UNIX originale.

Il codice sorgente non è compreso direttamente dal computer, quindi deve essere compilato nelle istruzioni della macchina da un compilatore. Il compilatore raccoglie tutti i file sorgente e genera qualcosa che può essere eseguito sul computer, come il kernel Linux. Storicamente, la maggior parte del software è stata rilasciata con una licenza di origine chiusa, il che significa che hai il diritto di utilizzare il codice macchina, ma non riesci a vedere il codice sorgente.

Spesso la licenza dice specificamente che non tenterai di decodificare il codice della macchina al codice sorgente per capire cosa fa! L’open source offre una visione del software incentrata sulla fonte. La filosofia open source è che hai il diritto di ottenere il software e di modificarlo per il tuo uso personale. Linux ha adottato questa filosofia con grande successo. Le persone hanno preso la fonte, apportato modifiche e le hanno condivise con il resto del gruppo. Accanto a questo, c’era il progetto GNU (GNU, non UNIX).

Mentre GNU (pronunciato “ga-noo”) stava costruendo il proprio sistema operativo, erano molto più efficaci nella costruzione degli strumenti che seguono con un sistema operativo UNIX, come compilatori e interfacce utente. I sorgenti erano tutti liberamente disponibili, quindi Linux era in grado di indirizzare i loro strumenti e fornire un sistema completo. Come tale, la maggior parte degli strumenti che fanno parte del sistema Linux provengono da questi strumenti GNU.Ci sono molte varianti diverse sull’open source e quelle saranno esaminate in un capitolo successivo. Tutti concordano sul fatto che dovresti avere accesso al codice sorgente, ma differiscono nel modo in cui puoi, o in alcuni casi, ridistribuire le modifiche.

1…Cos’è la Shell?

Quando parliamo della riga di comando, ci riferiamo alla shell. La shell è un programma che accetta i comandi da tastiera e li passa al sistema operativo per eseguire. Quasi tutte le distribuzioni Linux forniscono un programma shell del Progetto GNU chiamato bash. Il nome è un acronimo di bourne-again shell, un riferimento al fatto che bash è un sostituto migliorato di sh, il programma di shell Unix originale scritto da Steve Bourne.

Emulatori di terminale

Quando si utilizza un’interfaccia utente grafica (GUI), è necessario un altro programma chiamato emulatore di terminale per interagire con la shell. Se guardiamo attraverso i nostri menu del desktop, probabilmente ne troveremo uno. KDE usa konsole e GNOME usa gnome-terminal, anche se è probabilmente chiamato semplicemente Terminale nel tuo menu. Numerosi altri emulatori di terminali sono disponibili per Linux, ma fondamentalmente fanno tutti la stessa cosa: darci accesso alla shell.

Esecuzione dei primi tasti

Quindi iniziamo. Avviare l’emulatore di terminale. Una volta che viene, dovremmo vedere qualcosa del genere:

[me @ linuxbox ~] $

Questo si chiama prompt della shell e apparirà ogni volta che la shell e’ pronto ad accettare input. Sebbene possa variare in qualche modo a seconda della distribuzione, in genere includerà il tuo

nomeutente @ nomecomputer,

seguito dalla directory di lavoro corrente (ne parleremo tra poco) e un simbolo di dollaro.

Se l’ultimo carattere del prompt è un segno di cancelletto (#) anziché un simbolo di dollaro, la sessione del terminale ha i privilegi di superutente.

Ciò significa che siamo connessi come utente root o abbiamo selezionato un emulatore di terminale che fornisce i privilegi di superutente (amministrativo).

Supponendo che le cose siano andate bene finora, proviamo a digitare. Immettere un po ‘incomprensibile al prompt in questo modo:

[me @ linuxbox ~] $ kaekfjaeifj

Poiché questo comando non ha senso, la shell ce lo dice e ci dà un’altra possibilità.

bash: kaekfjaeifj: comando non trovato

[me @ linuxbox ~] $

Cronologia dei comandi

Se premiamo la freccia su, vedremo che il comando precedente inserito, kaekfjaeifj, riappare dopo il prompt. Questa si chiama cronologia dei comandi. La maggior parte delle distribuzioni Linux ricorda di default gli ultimi 1.000 comandi. stampa la freccia giù e il comando precedente scompaiono.

Movimento cursore

Richiama il comando precedente premendo nuovamente la freccia su. Se proviamo le frecce sinistra e destra, vedremo che possiamo posizionare il cursore in qualsiasi punto della riga di comando. Ciò semplifica i comandi di modifica.

Perché usare la riga di comando?

Come esseri umani, sappiamo istintivamente che l’unico modo per fare davvero qualcosa su un computer è digitando su una tastiera!

La maggior parte degli utenti di computer oggi ha familiarità solo con l’interfaccia grafica utente (GUI) e sono stati insegnati da venditori e esperti che l’interfaccia a riga di comando (CLI) è una cosa terrificante del passato. Ciò non è del tutto vero, perché una buona interfaccia a riga di comando è un modo meravigliosamente espressivo di comunicare con un computer in modo molto simile alla parola scritta per gli esseri umani.

È stato detto che “le interfacce utente grafiche rendono facili le attività, mentre le interfacce della riga di comando rendono possibili attività difficili”, e questo è ancora molto vero oggi.

Poiché Linux è modellato sulla famiglia di sistemi operativi Unix, condivide la stessa ricca eredità di strumenti a riga di comando di Unix. Unix è diventato famoso all’inizio degli anni ’80 (sebbene sia stato sviluppato per la prima volta un decennio prima), prima dell’adozione diffusa dell’interfaccia grafica utente e, di conseguenza, ha sviluppato invece una vasta interfaccia a riga di comando. In effetti, uno dei motivi più forti per cui i primi utenti di Linux lo hanno scelto, ad esempio, Windows NT è stata la potente interfaccia a riga di comando che ha reso possibili i “compiti difficili”.

Qualche parola su Mouse  e focus

Mentre la shell riguarda la tastiera, puoi anche usare un mouse con l’emulatore di terminale. Un meccanismo integrato nel sistema X Window (il motore sottostante che fa andare la GUI) supporta una rapida tecnica di copia e incolla. Se si evidenzia del testo tenendo premuto il pulsante sinistro del mouse e trascinando il mouse (o facendo doppio clic su una parola), viene copiato in un buffer gestito da X.

Premendo il pulsante centrale del mouse, il testo verrà incollato nella posizione del cursore. Provalo. Non essere tentato di usare ctrl-C e ctrl-V per eseguire copia e incolla all’interno di una finestra terminale. Non funzionano. Questi codici di controllo hanno significati diversi per la shell e sono stati assegnati molti anni prima del rilascio di Microsoft Windows.

Il tuo ambiente desktop grafico (molto probabilmente KDE o GNOME), nel tentativo di comportarsi come Windows, ha probabilmente la sua politica di messa a fuoco impostata su “fai clic per mettere a fuoco”. Ciò significa che per una finestra per ottenere lo stato attivo (diventare attivo), devi fare clic su su di essa. Ciò è in contrasto con il tradizionale comportamento X di “focus segue il mouse”, il che significa che una finestra viene messa a fuoco semplicemente passando il mouse su di essa. La finestra non verrà visualizzata in primo piano fino a quando non fai clic su di essa, ma sarà in grado di ricevere input. Impostando il criterio focus su “focus segue il mouse”, la tecnica copia e incolla sarà ancora più utile. Provalo se puoi (alcuni ambienti desktop come Unity di Ubuntu non lo supportano più). Penso che se gli dai una possibilità, la preferirai. Troverai questa impostazione nel programma di configurazione per il tuo gestore di finestre.

/ 5
Grazie per aver votato!

How useful was this post?

Click on a star to rate it!

Average rating / 5. Vote count:

No votes so far! Be the first to rate this post.

As you found this post useful...

Follow us on social media!

We are sorry that this post was not useful for you!

Let us improve this post!

Tell us how we can improve this post?