Home > GNU/Linux, newbie > Guida per principianti a GNU/Linux: le utility e le librerie

Guida per principianti a GNU/Linux: le utility e le librerie

Tralasciamo per un attimo i programmi che usiamo giornalmente: Firefox, OpenOffice.org, Pidgin, ecc. e pensiamo, per un attimo, a cosa facciamo con il sistema operativo “nudo”.

Una delle operazioni più comuni è copiare i file da un posto all’altro. Ad esempio dal nostro hard disk ad una penna usb. Oltre a copiare, possiamo cancellare e rinominare i file.

Per compiere queste operazioni di solito ci serviamo di un apposito programma del sistema operativo, il file manager. Su Gnome è Nautilus, su Kde abbiamo Konqueror e Dolphin, su Windows c’è Explorer.

Se invece usiamo l’interfaccia testuale, daremo dei comandi. Per copiare un file useremo cp (copy), per cancellarlo useremo rm (remove), per cambiare nome o spostarlo ci serviremo di mv. Esamineremo in dettaglio questi comando in una prossima puntata.

Sia che usiamo l’interfaccia grafica o quella testuale, insomma, avremo bisogno di strumenti per manipolare i file. Ma avremo bisogno anche di strumenti di base per modificarli. Uno di questi è l’editor di testo che ci permette ad esempio di modificare i file di configurazione del sistema oppure di scrivere degli appunti, o anche un programma. Quando diamo il comando:

gedit /etc/X11/xorg.conf

per cambiare qualcosa nel file di configurazione del server grafico (ad esempio a causa di una risoluzione sballata) non sitamo facendo altro che aprire un file di testo (xorg.conf, appunto) tramite un editor (gedit). E’ quindi fondamentale che il sistema ci metta a disposizione questo strumento.

Questi programmi utili e basilari si chiamano utility. Tutti i sistemi operativi ce le hanno perché altrimenti ci potremmo fare ben poco. Più che operativi, sarebbero sistemi inoperativi🙂

Torniamo ora al piccolo programma che avevamo visto nel primo post sui sistemi operativi.

#include <stdio.h>
int main () {
    printf("Ecco il mio primo programma\n");
    return 0;
}

Avevamo esaminato cosa fa printf e cosa fa return. Rimane da spiegare il resto.

Soprattutto cosa fa

#include <stdio.h>

Questa non è una vera e propria istruzione del programma, ma è importantissima lo stesso. Essa permette di “includere” nel programma le istruzioni che concretamente realizzeranno la nostra printf. Queste istruzioni in sostanza prenderanno il primo carattere e lo manderanno al video, poi il secondo, poi il terzo, ecc. Esse sono contenute in una libreria. Dobbiamo immaginare le librerie come delle vere librerie che contengono… be’, ovviamente libri. Se abbiamo bisogno di costruire un cigno di carta cercheremo nella nostra libreria un libro dal titolo “Origami”. Lo stesso fa il nostro programma: nelle librerie del sistema operativo prenderà il volume chiamato “stdio” (ovvero: standard input/output) in cui è contenuto printf. In questo modo tutti i programmi possono condividere printf tra di loro. Basta che ognuno di essi “chiami” la libreria. La stessa cosa vale anche per operazioni più complesse, come la gestione dei file.

Vedremo prossimamente l’importanza di una particolare libreria, la Libreria Standard del C, un pezzo fondamentale di un sistema Unix (e quindi anche di GNU/Linux) che permette la comunicazione tra i programmi e il nucleo del sistema operativo (il famoso kernel).

  1. koteko
    21 luglio 2008 alle 22:11

    complimenti per questa serie di guide, hai uno stile molto diretto e semplice…le faro’ testare da non addetti ai lavori, per darti un feedback reale😉

  2. 21 luglio 2008 alle 22:14

    E’ sempre un casino spiegare ai nuovi arrivati quelle 5-6 righe di codice per scrivere “Hello World”. Perciò preferisco Python😀

  3. sara
    21 luglio 2008 alle 22:25

    @ Markon Ah! Hai ragione. In Python lo so fare anch’io!😀

    Guiodic sei un fiume in piena! Non riesco a starti dietro…

  4. guiodic
    22 luglio 2008 alle 2:06

    @sara: non c’è bisogno di starmi dietro…🙂 tanto con Internet siamo asincroni, leggi quando vuoi…
    Comunque ho ancora due post, poi prendo una pausa da questo argomento per qualche giorno, in cui parlerò di argomenti meno tecnici.
    Comunque è vero che sono un fiume in piena🙂 Ho già in piedi un’altra idea: le guide per fare da grafica quello che di solito si fa da terminale.

    @koteto: grazie, mi farebbe molto piacere.

  5. guiodic
    22 luglio 2008 alle 2:07

    @markon: quanto c’hai ragione🙂 ma se devi spiegare un s.o, il C è quasi d’obbligo. Certo potevo farla complicata con un paio di fork() e malloc()🙂

  6. markon
    22 luglio 2008 alle 13:17

    @guiodic:
    in verità credo che sia più complicato spiegare cosa vuol dire davvero “print Hello world” che un normale hello world in C.
    Insomma per spiegare print hello world devi dire:

    Cos’è print (una keyword per ora, dunque a cosa servono e cosa sono)
    Cos’è Hello World (una stringa, che a sua volta è un array di caratteri)
    Com’ è possibile che si possa scrivere print Hello World così al volo, e vedersi la scritta stampata a video.
    Cos’è un interprete
    Che differenza c’è tra un interprete e un compilatore.

    In C devi dire solo quello che hai detto tu nell’articolo😀

  7. Ikitt
    22 luglio 2008 alle 21:18

    Ciao, una piccola precisazione riguardo “stdio.h”: non e` questa la libreria, questo -per restare al livello di astrazione dell’articolo- e` piu` l’indice analitico della libreria stessa: questo argomento e` descritto a pagina X. In questo modo il programma sa dove cercare quando deve cercare cio` che gli serve. La libreria vera e propria e` /lib/libc.so.6 – o chi per lei –😉

  8. 22 luglio 2008 alle 22:19

    @Ikitt:
    ah, a saperlo!
    Penso che anche librerie come iostream.h (per il C++) e simili siano così vero?

  9. guiodic
    22 luglio 2008 alle 23:45

    @Ikitt: già, l’avevo scritto pure nel post ma poi l’ho tolto perché appesantiva il discorso.
    Volendo fare un paragone “stdio” è un “libro” della libreria C e stdio.h è il suo indice.
    Però l’importante è che ci siamo capiti.

  10. Ikitt
    26 luglio 2008 alle 11:05

    @Markon: con il C++ la situazione e` un po diversa; se si usano i template, a seconda dell’implementazione di questi, il file header diventa effettivamente libreria (= contiene codice, non solo dichiarazioni).

    @Guiodic: lo so che lo sai -e intuivo che avessi omesso per non appesantire la trattazione-, il problema e` che molta gente non lo sa (ha imparato male) e continua allegramente a “includere la libreria stdio”😉
    Per quello ho puntualizzato: IMHO, come principio, chiarezza non dovrebbe essere per niente a detrimento di correttezza.

  11. markon
    25 settembre 2008 alle 18:56

    Giusto per rimanere in tema. Oggi nella lezione di programmazione I (si insegna il C), il prof ha parlato di come libreria. Penso/Spero l’abbia fatto per lo stesso motivo di guiodic.
    Ciao

  12. markon
    25 settembre 2008 alle 19:14

    Scusate.. ma nel post precedente non si vede “stdio.h” eheh..

    > […] il prof ha parlato di “stdio.h” come libreria [..]

    Bye!

  13. 25 settembre 2008 alle 20:46

    Be’, sai, dipende da come vedi la cosa. In fondo stdio è uno libreria, solo che a sua volta sta dentro libc nei sistemi *nix.
    Certo, di suo, stdio.h è l’header, ma per far prima…

  14. markon
    26 settembre 2008 alle 18:07

    Ho capito…
    Però ad esempio nel Kernighan & Ritchie viene detto:

    Pagina 10 The C Programming Language (K & R):
    The first line of the program,
    #include
    tells the compiler to include information about the standard input/output library;

    Questo io non lo tradurrei come ” la linea TOT significa `includi la libreria`”, bensì come “la linea TOT dice al compilatore di includere le info. riguardo alla libreria standard I/O”.

    Dunque… noi non andiamo a includere la libreria – credo – bensì un header file.

    La libreria sarebbe quella standard, che penso sia inclusa in libc6 (vero?).

    Ciao!

  15. 26 settembre 2008 alle 20:58

    sì certo… ma penso sia un modo breve per il tuo prof.
    Del resto includere *tutta* la libreria non avrebbe senso: il bello delle librerie è proprio che puoi usarle anche solo linkandole.

  16. 27 settembre 2008 alle 10:34

    ho capito… dunque è un modo breve. meno male…😀

    eheh
    Ciao!😉

  17. 11 maggio 2013 alle 0:44

    I visited various websites but the audio feature for audio songs current
    at this site is genuinely wonderful.

  1. 24 luglio 2008 alle 11:58

Lascia un commento

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...

%d blogger cliccano Mi Piace per questo: