Ecco il primo, di tanti articoli, dedicati alla conoscenza delle basi di linux…
Linux…cosi come mamma t’ha fatto
I sistemi operativi linux si compongono, ad oggi, di 4 parti principali:
- Il kernel: Il cuore del sistema operativo, la parte che più di tutte lavora a basso livello con il pc, gestisce i file, i dischi, la rete, e tutte le funzionalità di base
- I programmi applicativi: Come ogni sistema operativo, anche linux ha i suoi programmi, migliaia di programmi, che ci consentono di manipolare file, elaborare testi, calcolo matematico, audio, video, programmazione, crittografia, masterizzazione, e qualsiasi altra cosa è possibile fare con il pc.
- La shell: E’ l’interfaccia utente per l’inserimento, l’esecuzione e la visualizzazione dei comandi. Ne esistono vari tipi: Bourne Shell, Korn Shell (non è stata inventata dal gruppo rock se ve lo state chiedendo
), C Shell, ecc ecc ecc… Normalmente di default sui sistemi linux troviamo la shell bash che sta per Bourne Again Shell. - Il sistema X: Chiamato anche Server X è quel sistema che ci consente di interagire con il sistema operativo tramite una interfaccia grafica, ci fornisce quindi le finestre, i menu, le icone, il supporto per il mouse e in generale tutti gli elementi tipici di una GUI (Graphical User Interface) cioè un interfaccia grafica; KDE e GNOME sono stati scritti partendo da un sistema X per l’appunto.
I comandi, questi sconosciuti
Come abbiamo detto, anche linux si compone di programmi e comandi, ma cosa sono esattamente i comandi? Un comando quasi sempre si consiste in un nome di programma (per richiamare il programma grep da terminale digitiamo appunto grep
), seguito spesso da opzioni ed argomenti.
Il nome del programma si riferisce ad un file che risiede fisicamente nel filesystem, file che la shell troverà ed eseguirà. Le opzioni normalmente vengono inserite dopo il comando e sono precedute dal segno meno (-), ed influenzano il modo di operare del comando, mentre gli argomenti rappresentano i dati input e/o di output. Per esempio nel comando per contare il numero di righe presenti in un file:
$ wc -l miofile
vediamo appunto wc, il nome dle programma, l’opzione (-l), che indica di contare le righe di un argomento (miofile), che indica quale file leggere.
N.B. Il carattere $ è il prompt della shell, ed indica che la stessa è pronta a ricevere un istruzione, inoltre il simbolo $ indica un comando eseguibile con il nostro user, mentre taluni comandi, come vedremo in seguito, necessitano dei privilegi speciali, in tali comandi vedremo il prompt con un cancelletto (#).
Le opzioni possono essere date individualmente:
$ mioprogramma -a -b -c miofile
oppure, ma non sempre, raggruppate:
$ mioprogramma -abc miofile
come già detto questa alternativa non è possibile effettuarla sempre e comunque, in quanto alcuni programmi si comportano in modo particolare, non riconoscendo questa sintassi.
I comandi possono essere anche più complicati, e non avere il solo fine di eseguire se stessi:
- Possono essere eseguiti uno dopo l’altro in sequenza, o, tramite una pipe (|), interconnetterli tra loro di modo che l’output del primo sia l’input del secondo, e cosi via.
- Le opzioni non sono standardizzate, Quello che vuole dire una determinata opzione per un programma, può voler dire tutta un altra cosa per un altro programma ancora. Per esempio in wc significa “conta le righe”, ma in ls significa “visualizza l’output utilizzando un formato esteso”. E’ anche vero il contrario, per diversi programmi, diverse opzioni, possono voler dire la stessa cosa.
- Anche gli argomenti non sono standardizzati, generalmente rappresentano nomi di file da prendere in input o da scrivere in output, ma possono anche rappresentare intere directory o espressioni regolari.
- La shell mette a disposizione un vero e proprio linguaggio di programmazione. Un comando quindi, invece di rappresentare semplicemente “esegui questo programma” può anche significare, “se oggi è martedi, esegui questo programma, altrimenti esegui quest’altro comando per sei volte e per ciascun file il cui nome finisce in .txt”
Utenti e superutenti: Sudo e i privilegi in linux
Linux è un sistema multiutente, ciò significa che su un dato computer, ogni utente che ne ha diritto all’accesso, è identificato in maniera univoca da uno username, come “rossi” o “morfeus”, ed ogni utente possiede un area in un certo senso, privata, in cui salvare il proprio lavoro.
Esiste poi un utente speciale chiamato root o superutente, che è l’amministratore del computer in questione e ha i privilegi per poter fare tutto ciò che vuole. Gli utenti normali hanno infatti delle restrizioni, sebbene possano eseguire la maggior parte dei programmi, possono modificare solo i loro file. L’utente root al contrario, può leggere, eseguire e modificare tutti i file presenti sul sistema.
Nei sistemi linux in generale, per eseguire un programma con i privilegi di root, non è necessario effettuare il logout
| |














