back to top

UNIX: concetti base

UNIX non è un semplice sistema operativo, è il Sistema Operativo, il papà di ogni altro OS esistente, da Dos a Linux, da MacOS a Windows, anche se non tutte le software house sono disposte ad ammettere di aver preso più di uno spunto da UNIX nella concezione dei loro sistemi operativi.

Ma cos’è un sistema operativo? Detto in parole semplici non è altro che un software che mette in comunicazione un computer con gli applicativi e le periferiche (i puristi mi perdoneranno..). Un OS consente di accedere a funzionalità di base e mette a disposizione un file system nel quale installare programmi, driver per le periferiche e "montare" supporti esterni.

Breve storia di Unix

Scrivere una cronistoria di UNIX sarebbe forse poco interessante per coloro che sono alla ricerca di nozioni da applicare in sede di lavoro, ma lasciateci dire almeno che questo sistema operativo nacque negli anni ’70 ad opera dei ricercatori Ken Thompson e Dennis Ritchie (niente meno che l’inventore del linguaggio C) i quali ripresero con successo un progetto chiamato Multics abbandonato dai laboratori Bell nel 1965.

Originariamente UNIX venne scritto in Assembly per poi essere riscritto in C nel 1973; grazie alla sua nuova versione, nel 1977 fu possibile trasferire l’OS su altre macchine diverse dalla PDP originale utilizzando un processo chiamato porting porting.

Alla fine degli anni ’70, la casa di distribuzione di UNIX, chiamata AT&T, subì una sentenza che la estrometteva dal partecipare al mercato informatico; a suo modo questo incidente fù una fortuna per il mondo degli OS, infatti la AT&T fu costretta per sopravvivere a vendere licenze del sistema a basso prezzo ai laboratori universitari e ai college; fu così che dalle licenze economiche di UNIX nacquero sistemi operativi come Minix versione archetipa del famosissimo Linux la cui Shell funziona ancora oggi sulla base di un dialetto UNIX Like (molto like).

Dallo UNIX originario sono nate due versioni: System V, proprietà degli Unix System Laboratories (USL) e la Berkeley Software Distribution (BSD).

Unix non è open-source!

Prima che le affinità con Linux possano generare false illusioni, è bene dire che UNIX non è un OS Open Source, nè tanto meno un software gratuito. Per coloro che però vogliono ugualmente imparare ad utilizzare questo sistema operativo esistono diverse opzioni: una di queste è per esempio utilizzare una distribuzione di Linux da interfaccia testuale, molte istruzioni da linea di comando infatti coincidono; una seconda possibilità è quella di utilizzare versioni gratuite derivate da quelle commerciali, come per esempio la FreeBSD.

Caratteristiche principali di UNIX

Fondamentalmente UNIX possiede tre caratteristiche principali: è un sistema operativo multi utente, è multi tasking e pre-emptive. Non conoscete il significato di queste definizioni? Nessun problema, andremo ora a spiegarle una per volta:

  1. multi utente: un OS multi utente non è altro che un sistema operativo sul quale possono agire contemporaneamente più utenti; ognuno di essi potrà accedere alla propria sessione di lavoro tramite una personale procedura di login basata su un proprio nome utente ed una relativa password; il lavoro di un utente non influirà sul lavoro degli altri, a meno chè non si decida di costituire gruppi raccolti attorno ad un determinato progetto. Ogni utente potrà creare file e cartelle che possono essere rese inaccessibili agli altri utenti, sarà necessario soltanto rispettare lo spazio ad esso riservato (detto quota) oltre il quale non si potrà eccedere.
  2. multi tasking (o anche multi processo): è possibile definire un sistema operativo come multi tasking quando esso consente di svolgere contemporaneamente più operazioni (processi) indipendenti l’una dall’altra; per un utente sarà quindi possibile utilizzare più programmi contemporaneamente, nello stesso modo più utenti potranno utilizzare in simultanea differenti programmi. Le operazioni riguardanti l’ottimizzazione delle risorse sono a carico del sistema operativo stesso.
  3. pre-emptive: tutti conosciamo le famose schermate blue di Windows (scaricamento della memoria fisica, errore irreversibile…), quando ciò accade non rimane altra soluzione che riavviare il sistema, magari con un reset. In UNIX vi sono diverse operazioni possibili prima di dover spegnere la propria macchina quando un’applicazione provoca un errore, per questo viene definito come un sistema operativo pre-emptive. Del resto un OS multi utente e multi tasking non potrebbe funzionare altrimenti, immaginate cosa succederebbe se dieci utenti dovessero lavorare con la paura che uno degli altri blocchi inesorabilmente il sistema?

Accedere ad un sistema UNIX

Passeremo ora ad argomenti dai risvolti più pratici relativi alle sessioni di lavoro; sono però necessarie alcune avvertenze preliminari riguardanti la digitazione delle istruzioni da riga di comando:

  1. UNIX, a differenza di altri OS come Dos e Windows, è un sistema operativo case sensitive; ciò significa che distingue tra caratteri maiuscoli e caratteri minuscoli. Quindi, scrivere "COMANDO" non significa la stessa cosa che scrivere "comando".
  2. E’ molto importante inserire i dovuti spazi nella digitazione dei diversi comandi. Quindi, scrivere "Comando A" non significa la stessa cosa di "ComandoA".

Un computer in cui è installato UNIX in genere rimane sempre acceso, non stiamo parlando di PC casalinghi ma di terminali di lavoro come quelli che per esempio tengono in piedi la Rete di una laboratorio universitario o aziendale dove UNIX è molto diffuso.

Quindi, avvicinandovi ad un computer su cui è installato UNIX lo schermo sarà plausibilmente in stand-by; clickiamo un tasto qualunque in modo da poter accedere al monitor; dovremmo visualizzare una schermata con poche righe di testo tipo tra cui quella che ci interessa è:

login:

Digitiamo il nostro nome utente (Pippo? No.. Pippo no) e clicchiamo su [Invio], se siete stati capaci di scrivere il vostro nome (utente) verrà visualizzata una laconica richiesta della vostra chiave di accesso:

password:

Per motivi di sicurezza la password non sarà visibile mentre la digitate, quindi attenzione a non sbagliare e soprattutto ricordiamoci che la maiuscole e le minuscole per UNIX non sono equivalenti. Un errore nella digitazione della password determina una notifica dal parte del sistema:

login incorrect

e dovremo ricominciare la procedura di login. Diversamente, se abbiamo operato correttamente potremo accedere alla nostra interfaccia per la digitazione dei comandi:

/home/perfavorenonpippo >

Tanto per imparare subito qualcosa possiamo digitare il comando utile a chiudere la nostra sessione di lavoro:

exit

Con esso si ritorna alla schermata di login e il sistema attende l’autenticazione di un nuovo utente.

Rudimenti sul file system UNIX

I sistemi operativi si differenziano tra di loro sulla base di un file system, in ognuno di essi è presente una diversa organizzazione e distribuzione dei contenuti di sistema e di quelli creati dagli utenti (i programmi vanno qui, i documenti là, i file e le directory di sistema in un’altra cartella ancora e così via..).

In UNIX, ma chi conosce Linux ha già affrontato questo discorso, tutto il file system parte della directory radice "/" e si dirama da esso proseguendo una struttura gerarchica ad albero.

Supponiamo che la directory "Roma" si trovi all’interno della directory "Lazio" e che quest’ultima sia a sua volta una sub-directory di "Italia" posizionata nella directory radice; all’interno del file system, per giungere alla cartella chiamata "Roma" avremo un percorso come il seguente:

/Italia/Lazio/Roma

Se nella cartella "Roma" salvassimo un file di testo chiamato per esempio "esempio.txt", potremmo raggiungerlo seguendo questa path:

/Italia/Lazio/Roma/esempio.txt

Per visualizzare i file e le cartelle contenute in una determinata directory, in UNIX si utilizza il comando ls (diminutivo di list, "elenca" ); quindi, se ci troviamo nella cartella del nostro utente avremo:

/home/perfavorenonpippo> ls

premendo [Invio], visualizzeremo i nomi dei documenti e delle cartelle presenti in questo percorso, niente di più, l’unico particolare da segnalare è che il sistema differenzia le directory dai file ponendo davanti ad esse un "/", quindi:

nome_file /nome_directory

Se desiderassimo ricevere un output un pò più particolareggiato accompagneremmo il comando ls all’opzione -l, in questo modo:

/home/perfavorenonpippo> ls -l

Riceveremmo quindi informazioni sul tipo dei file, privilegi d’accesso, nome del proprietario (owner), spazio disco occupato, date di creazione e modifica, nomi etc. Nel prossimo capitolo scenderemo ulteriormente nei particolari.

Struttura del file system UNIX

Il file system di UNIX è detto anche Filesystem tree in quanto la sua struttura ricorda quella di un albero rovesciato, si parte dalla directory radice (detta root, ma non ha niente a che vedere con l’utente amministratore anch’esso chiamato root), per poi seguire diverse diramazioni che portano alle più profonde sub-directory del sistema.

Di seguito proponiamo una sintesi di quella che può essere una struttura base del file system UNIX:

  • /bin: directory per l’allocazione dei file binari, in pratica i file eseguibili;
  • /dev: directory destinata a contenere i device drivers delle unità hardware istallate all’interno del sistema (floppy drive, Cd rom, DVD rom, supporti rimuovibili..)
  • /etc: directory per i file di configurazione e di amministrazione del sistema;
  • /home: directory in cui sono allocate le home directory appartenenti agli utenti del sistema;
  • /lib: directory per l’allocazione delle librerie di base;
  • /proc: directory dei riferimenti ai processi attivi e delle informazioni utili per l’accesso ad essi, in questo caso i file di riferimento non si trovano realmente nella directory ma sono residenti in memoria ("file illusori");
  • /tmp: directory per i file temporanei, questi contenuti vengono eliminati nel momento in cui il sistema viene riattivato;
  • /usr: directory per il file system degli utenti, tra questi ultimi ve ne sono anche alcuni creati dal sistema e non riconducibili ad utenti "fisicamente esistenti".

Le ulteriori diramazioni di /user assumono un particolare interesse in quanto questa directory si presenta come un vero e proprio sub – file system:

  • /usr/bin: come la /bin principale contiene file binari destinati all’esecuzione.
  • /usr/lib: directory per le librerie dei software e dei linguaggi per la programmazione;
  • /usr/man: directory del manuale di supporto in linea.

Le directory sono trattate da UNIX come se fossero dei file destinati a contenere altri file o sub-directory invece che dati; questo modo di vedere i contenuti identifica file e cartelle in entità dette i-node in cui i descriptor (nome, proprietà, permessi..) sono separati dall’informazione allocata (un dato, una sub-directory, l’elenco dei file contenuti).

Attraverso l’utilizzo di link simbolici (file che contengono al loro interno soltanto nomi di altri file), è possibile che uno stesso i-node venga condiviso da diversi elementi del file system.

Come UNIX vede file e directory

L’istruzione ls -l ci mostra numerosi particolari riguardanti il contenuto di una directory. Ora, immaginiamo di avere all’interno di una cartella una sub-directory (chiamata per esempio "cartella") e un file (chiamato per esempio "documento"), possono esserci naturalmente tanti altri contenuti ma noi ci concentreremo su quelli indicati. L’output generato in seguito al lancio del comando ls -l potrebbe essere simile al seguente:

drwx--x--- 5 nome_utente nome_gruppo 272 May 15 15:46 cartella
-rw-r--r-- 3 nome_utente nome_gruppo 214 May 18 17:28 documento

Il risultato ottenuto, si manifesta come un elenco ordinato che analizza uno ad uno i diversi contenuti e ne elenca le caratteristiche. In particolare, possiamo notare come il comando restituisca 9 colonne ognuna destinata ad un particolare tipo di informazione.

Nella prima colonna vengono visualizzati i permessi di lettura, scrittura ed esecuzione relativi ad ogni contenuto; riprenderemo tra breve questo argomento nello specifico, per ora basti notare come le directory vengano indicate dalla lettera "d" posta all’inizio della riga, i file sono invece indicati da un trattino "".

Nella seconda colonna troviamo un numero, esso indica il numero di link sombolici relativi al file o alla cartella elencati; anche se non si tratta di una rogola sempre valida, possiamo dire che in generale quando non vi sono link il valore è pari a "1" per i file e al numero di file contenuti per le directory (anche in questo caso chiedo indulgenza ai puristi..).

La terza riga indica il nome dell’utente proprietario del file, il suo owner; quindi, se il file lo avete creato voi vedrete comparire il vostro nome utente. Un utente può essere sia owner che user, ma se lo user non è anche owner non avrà altri diritti di accesso al contenuto specifico se non quelli che gli verranno riconosciuti dall’owner.

Nella quarta riga troviamo il nome del gruppo (group), cioè l’insieme di utenti a cui appartiene il file. Mettiamo di dover creare un sito internet, vi sarà un webmaster, un designer e altre figure lavorative; tutte insieme agirannò sul sito come "gruppo di lavoro".

Le righe restanti, attengono a caratteristiche immediatamente intuitive: nella quinta riga troviamo la dimensione del contenuto elencato espressa in Byte, le cartelle sono viste come dei file e la dimensione indicata non riguarda ulteriori elementi in esse contenute.

La sesta, settima e ottava riga indicano rispettivamente mese, giorno del mese e ora dell’ultima modifica subita dal contenuto elencato. Infine, abbiamo un’ultima colonna destinata a evidenziare il nome del file o della directory in lista.

I permessi su file e cartelle in UNIX

I permessi su un file o su una cartella riguardano la possibilità di agire su un determinato contenuto da parte dei diversi utenti aventi accesso ad un sistema operativo UNIX.

Dalla digitazione del comando ls -l potremmo ottenere un output simile a quello dell’esempio seguente:

drwxr-xr-x 3 nome_utente nome_gruppo 272 May 15 15:46 cartella

A noi interessa analizzare il valore espresso nella prima colonna, cioè la stringa drwxr-xr-x; per analizzarla meglio la scomporremo nelle sue 4 parti costitutive:

  1. d: stà ad indicare che il nostro contenuto è una cartella (directory), sarebbe invece sostituita da un trattino ("") se il contenuto in oggetto fosse invece un file.
  2. rwx: r indica il permesso di lettura sul contenuto (read); w indica il permesso di scrittura (write); infine, x (execute) indica il permesso di esecuzione. Un utente che, come nel nostro caso, ha associati al suo nome tutti e tre i permessi indicati, ha in pratica pieni poteri sul relativo contenuto; egli può quindi portare avanti ogni operazione che desideri eseguire, comprese quelle in grado di danneggiare o di cancellare il contenuto.
  3. r-x: indica i permessi accordati al gruppo a cui appartiene il file o la cartella; nel nostro caso il gruppo può leggere ed eseguire il contenuto, ma non ha permesso di scrivere su di esso, infatti la lettera w è sostituita da un trattino che ne indica l’assenza.
  4. il secondo r-x, indica i permessi accordati a "chiunque", cioè a tutti coloro che vorranno avere accesso al contenuto; stiamo parlando cioè di all, termine con cui UNIX gli utenti che hanno accesso al sistema anche se non sono nè owner di un determinato contenuto nè appartenenti al gruppo proprietario.

Tutti gli utenti hanno bisogno di permessi, tranne l’utente di root che sarà verosimilmente l’amministratore dell’intero sistema.

Per accordare un permesso, si utilizza il comando chmod (change mode) espresso utilizzando la seguente sintassi:

chmod [a,u,g,o] [+,-] [r,w,x] contenuto

Con [a,u,g,o] indichiamo chi sarà il destinatario del permesso, per cui a è riferito a all, u a user, g a group e o a others. [+,-] indicano l’azione che si vuole compiere, cioè l’accordare ("+") o il revocare un determinato permesso (""). [r,w,x] indica il tipo di permesso che si intende accordare o revocare all’utente o agli utenti coinvolti.

Per cui, se per esempio intendiamo assegnare a tutti gli utenti il permesso di lettura su un determinato contenuto, la nostra istruzione dovrà essere simile alla seguente:

chmod a+w nome_contenuto

Tipicamente, i compiti relativi alla gestione di utenti o dei gruppi sono affidati al root; egli potrà creare un utente o un gruppo:

useradd [opzioni] nome_utente
groupadd [opzioni] nomegruppo

oppure eliminarli:

userdel [opzioni] nomeutente
groupdel [opzioni] nomeutente

Sistema ottale e modifica delle proprietà dei file in UNIX

I permessi di lettura, scrittura ed esecuzione sui file e le cartelle possono essere impostati all’interno di un sistema UNIX anche attraverso l’utilizzo di opzioni numeriche, ma sempre tramite il comando chmod.

Stiamo parlando del sistema ottale, dove per i permessi di lettura sostituiamo la lettera r con il valore 4, per i permessi di scrittura sostituiamo la lettera w con il valore 2, infine, per i permessi di esecuzione sostituiamo la lettera x con il valore 1.

Quindi, ragionando in "ottali", abbiamo che r+w+x è uguale a 4+2+1, cioe 7 che corrisponde al 9 di un sistema decimale.

I tre valori utilizzati nel sistema ottale possono essere sommati tra di loro e di conseguenza generare differenti combinazioni corrispondenti ad una determinata tipologia di permessi:

  • Il valore 3, corrisponde alla combinazione wx, cioè il risultato della somma di "1+2", in questo modo si assegnano i permessi di esecuzione e scrittura.
  • La cifra 5, corrisponde alla combinazione rx, cioè il risultato della somma di "1+4", in questo modo si assegnano i permessi di esecuzione e lettura.
  • La cifra 6, corrisponde alla combinazione rw, cioè il risultato della somma di "2+4", in questo modo si assegnano i permessi di scrittura e lettura.
  • La cifra 7, corrisponde alla combinazione rwx, cioè il risultato della somma di "1+2+4", in questo modo si assegnano i permessi di esecuzione, scrittura e lettura.

Quindi, se intendessimo assegnare all’owner di un determinato file tutti e tre permessi ed esclusivamente quello di lettura al group e agli atri utenti, dovremmo digitare il seguente comando:

chmod 744 nome_file

Naturalmente, il sistema UNIX prevede la possibilità di modificare le proprietà di un determinato contenuto, il caso classico è quello relativo al "passaggio di proprietà" di un file tra un utente ed un’altro o tra un gruppo di lavoro ed un altro. In questo caso ci vegono in aiuto i comadi chown (change owner) e chgrp (change group):

chown nuovo_proprietario file
chgrp nuovo_gruppo file

Muoversi dentro UNIX

E’ possibile creare una directory all’interno della quota di spazio affidata al nostro utente attraverso il comando mkdir a cui passare come argomento il nome desiderato per la nuova cartella:

/home/perfavorenonpippo> mkdir documenti

A questo punto potremo accedere all’interno di essa tramite il comando cd (change directory) seguito sempre dal nome della directory:

/home/perfavorenonpippo> cd documenti

La cartella "documenti" diventerà la nostra directory di default, in pratica la directory corrente, quella in cui "ci troviamo" ora. Ovviamente sarà possibile creare all’interno della nuova cartella un’ulteriore sub directory, accedere a quest’ultima tramite cd e così via.

Se una volta giunti all’interno della cartella "documenti" digitiamo il comando ls -a la troveremo ovviamente vuota, potremo però notare che nell’output generato vengono elencate due righe contenenti dei puntini:

.
..

Il simbolo "." in UNIX stà ad indicare il nome della directory corrente, quindi il comando:

cd .

indica il punto del file system in cui ci si trova al momento. Digitare un comando del genere puo’ sembrare inutile, ma l’utilizzo di "." in sostituzione del nome della directory di default consente di risparmiare tempo diminuendo il numero di caratteri da digitare.

".." stà ad indicare il "genitore" della directory di default, quello che si trova uno scalino più in alto nella gerarchia del file system UNIX; quindi, se ci si trova nella sub-directory "documenti", digitare il seguente comando:

cd ..

significa risalire alla directory che la contiene, cioè "/perfavorenonpippo/" interna ad "/home/".

Il comando cd, digitato senza ulteriori argomenti, permette di accedere in qualsiasi momento alla home directory, inoltre sarà possibile conoscere l’intero percorso alla directory corrente tramite il comando pwd (print working directory) digitato senza ulteriori opzioni.

Una volta terminate le nostre operazioni su una directory, potremo eliminarla in ogni momento utilizzando il comando rmdir seguito dal nome della cartella che vogliamo cancellare:

/home/perfavorenonpippo> rmdir documenti

Operare sui file in UNIX

UNIX mette a disposizione tutti i comandi necessari per svolgere le normali operazioni di manipolazione dei file: creazione, rinomina, spostamento, copia, eliminazione e tante altre opzioni.

Vi sono numerosi modi per creare un file all’interno di un sistema UNIX, il più semplice è quello di ricorrere al comando touch seguito dal nome del documento che vogliamo creare:

/home/perfavorenonpippo> touch nome_file

touch crea un file vuoto di dimensione nulla che potrà essere modificato in un secondo momento, magari utilizzando il potente editor di testo generalmente integrato nella Shell (interfaccia testuale) di UNIX chiamato Vi.

Per copiare un file utilizzeremo il comando cp (copy) seguito dal percorso del file che vogliamo copiare e dalla path di destinazione separati da uno spazio; per cui se all’interno della directory del nostro utente abbiamo due cartelle, "doc1" e "doc2", e vogliamo spostare il file "doc" dalla prima alla seconda, il nostro comando dovrà essere digitato in questo modo:

/home/perfavorenonpippo> cp /doc1/doc /doc2

Per rinominare un file utilizzeremo il comando mv (move) utile anche per gli spostamenti di file da un percorso verso un altro; la sintassi di questo comando è molto semplice, basterà far seguire all’istruzione principale il vecchio nome (o percorso) del file che vogliamo rinominare o spostare con il nuovo nome (o percorso):

/home/perfavorenonpippo> mv /doc2/doc /doc2/doc_new

Chiaramente mv non è un comando per la copia di documenti, quindi non verrà creato un doppione del vecchio file che verrà sostituito in tutto e per tutto dal nuovo.

Per eliminare un file useremo il comando rm (remove), seguito dal nome (o percorso se il file è al di fuori della directory corrente) del documento che vogliamo eliminare:

/home/perfavorenonpippo/doc2> rm doc_new

rm può essere utilizzato anche per eliminare una directory e recorsivamente i file e le sub-directory interne ad essa, rmdir cancella infatti solo cartelle prive di contenuto; in questo caso dovremo però utilizzare anche l’opzione -r (recursive):

rm -r nome_directory

Per la lettura dei file abbiamo a disposizione il comando cat che seguito dal nome del file che vogliamo aprire ce ne visualizza il contenuto; abbiamo poi less, in alcuni aspetti analogo al precedente e less |more in grado di restituirci il contenuto impaginato di un file.

Standard di input e output in UNIX

All’interno di un sistema UNIX sono presenti e sempre disponibili tre file legati alle funzioni di raccolta degli input e cessione degli output:

  1. stdin, detto anche standard input, cioè il file da cui generalmente un applicativo acquisisce i propri input;
  2. stdout, detto anche standard output, cioè il file su cui generalmente un applicativo genera i propri output;
  3. stderr, detto anche standard error, cioè il file a cui generalmente un applicativo spedisce gli eventuali messaggi di errore.

L’azione svolta da e su questi file riguarda tutti gli applicativi presenti all’interno del sistema operativo e stanno alla base di tutte le operazioni che l’utente svolge attraverso il software disponibile.

Per fare un esempio, un input può essere generato dalla digitazione di un’istruzione attraverso la tastiera, oppure tramite l’esecuzione di un file o da un comando lanciato dall’utente.

Nello stesso modo, un output può concretizzarsi nella stampa a video di una stringa o di un grafico visualizzabile dal monitor, nella creazione di un file a seguito di un comando o all’attivazione di un determinato processo.

Quando viene eseguito un comando, non è necessario che quest’ultimo sia a conoscenza del tipo o della provenienza dell’input nè della destinazione dell’output, sarà invece il sistema stesso a stabilre i diversi collegamenti sulla base delle istruzioni digitate dall’utente.

La Shell di UNIX è perfettamente in grado di gestire gli standard input e output così da specificare la provenienza dell’input e la destinazione dell’output. Facciamo un esempio:

/home/perfavorenonpippo> comando > output

In questo caso, l’output generato dal comando viene reindirizzato all’output, se quest’ultimo non esiste allora verrà creato, diversamente verrà sovrascritto (azione di reindirizzamento). Per evitare la sovrascrittura del file di output, sarà necessario sostituire l’operatore ">" con ">>", in questo modo il risultato del comando verrà semplicemente "appeso" allo standard di output

Un’altro caso da analizzare è quello relativo all’operatore pipe o "|" (come in less |more):

/home/perfavorenonpippo> comando1 | comando2

In pratica pipe consente di spedire l’output del primo comando all’input del secondo comando, con less |more, ad esempio, il primo comando apre un file per la lettura, il secondo raccoglie l’output del primo comando e accoda il suo output, cioè l’impaginazione dei contenuti del file aperto.

stderr, lo standard error, viene utilizzato per la visualizzazione di notifiche d’errore; generalmente esse compaiono sul monitor ma possono in ogni caso subire un reindirizzamento.

Riprendendo l’operatore ">", possiamo reindirizzare gli standard output ed error verso un medesimo file; oppure, è spossibile separare i due standard in questo modo:

/home/perfavorenonpippo> ( commando > output ) >& error

Editare file in UNIX

L’ambiente "spoglio" di UNIX lo rende un contesto ideale per la programmazione. Il sistema mette a disposizione dello sviluppatore un editor testuale molto stabile e potente chiamato Vi che potremo richiamare semplicemente facendo seguire al comando vi il nome del file che desideriamo modificare:

/home/perfavorenonpippo> vi nome_file

A questo punto avremo a disposizone numerose opzioni, tra cui:

  • dd: cancella un’intera linea;
  • dw: elimina una parola;
  • cw: modifica una parola;
  • u: (undo) cancella l’ultima modifica;
  • .: ripete l’ultimo comando.

In ogni momento sarà possibile ripetere un determinato comando sulla base di un numero scritto precedentemente all’istruzione, ad esempio, 5dw permette di ripetere per 5 volte il comando per l’eliminazione delle parole.

Per l’inserimento di stringhe all’interno del documento che vogliamo modificare, sarà sufficiente digitare la lettera "i" e spostarci con il cursore all’altezza della riga su cui vogliamo operare; per uscire dalla modalità d’inserimento dovremo invece premere [ESC].

Una volta operato sul file e usciti dalla modalità d’inserimento, avremo a disposizione alcuni comandi relativi al salvataggio e alla chiusura del documento modificato:

  • :q: permette di uscire dall’editor di testo;
  • :q!: permette di uscire dall’editor di testo senza salvare le modifiche effettuate;
  • :w: permette di salvare le modifiche effettuate.
  • :w nome_file: salva il file modificato con nome.
  • :wq: salva le modifiche effettuate sul file e chiude l’editor di testo.
  • ๐Ÿ˜ก: stessa funzione di wq.

Per ogni ulteriore informazione, consigliamo al lettore di consultare il manuale in linea richiamabile tramite il comando man seguito dalla voce che desideriamo cercare.

Nel caso del nostro editor di testo dovremo quindi digitare:

man vi
Pubblicitร 
Claudio Garau
Claudio Garau
Web developer, programmatore, Database Administrator, Linux Admin, docente e copywriter specializzato in contenuti sulle tecnologie orientate a Web, mobile, Cybersecurity e Digital Marketing per sviluppatori, PA e imprese.

Leggi anche...

Linux: recuperare una partizione con GNU Parted o Gpart

A volte, nell'uso quotidiano del computer, possono capitare dei...

Differenze tra su e sudo in Linux

su e sudo, vengono considerati a torto due comandi...

Creare una lista dei programmi installati su Ubuntu (per effettuarne il ripristino)

In questo breve post vedremo come visualizzare tutto il...

Come svuotare la memoria Cache in Linux?

La memoria cache è stata creata perché, anche quando...

Installare un’interfaccia grafica su Ubuntu Server

Indipendentemente dalla versione di riferimento, il ramo principale della...

Creiamo un file server con Samba

La finalità di una rete locale di computer (LAN)...
Pubblicitร