• linux-gestione-file

    Gestione dei file in Linux

    Come muoversi all’interno del file system Linux nella gestione delle directory.

    Nell’articolo dal titolo “Il file system di Linux” abbiamo preso visione delle regole per la creazione di file e directory su Linux, abbiamo esplorato il file system e la sua struttura gerarchica, abbiamo fatto la conoscenza dei comandi pwd e pwd. Nell’articolo dal titolo “Gestione delle directory in Linux” abbiamo esplorato i comandi per la gestione delle directory. Adesso andremo ad approfondire gli altri comandi per la gestione dei file.

     

    Creazione e modifica di un file di testo (o codice sorgente) con l’editor Vi

    Vi è un editor di testo con interfaccia testuale. Il nome deriva dalla più breve abbreviazione non ambigua del comando visual in ex (cioè <vi>). Questo comando commuta l’editor di linea ex in modalità visuale. Vi insieme ad Emacs è stato uno dei protagonisti della cosiddetta guerra degli editor. Si pronuncia effettuando lo spelling delle due lettere in lingua inglese: [ vi: ai ] .

    Avviare vi

    Per avviare vi, basta digitare il comando vi seguito dal nome del file che si vuole creare.

    vi nome_file

    Ad esempio, se volessi aprire il file hello.sh nella directory corrente (/home/os/script):

    Verrà mostrato lo schermo con una colonna di tilde sul lato sinistro. Vuol dire che l’editor vi è in modalità comandi: qualsiasi cosa che verrà inserito, verrà interpretato come un comando. L’editor vi ha due modalità di funzionamento: il modo comando (command) e il modo inserimento (input). In modalità inserimento ogni parola verrà inserita direttamente nel file. Entrare in modalità comando è possibile in qualsiasi momento premendo il tasto ESC, ogni lettera verrà interpretata come un comando.

    Per entrare in modalità input i due comandi di base sono:

    • i inserisce del testo a sinistra del cursore
    • a aggiunge del testo a destra del cursore

    Comandi di spostamento del cursore

    • h sposta il cursore uno spazio a sinistra
    • j sposta il cursore uno spazio verso il basso
    • k sposta il cursore uno spazio verso l’alto
    • l sposta il cursore uno spazio a destra

    Gli spostamenti possono essere effettuati anche con le frecce.

    Comandi di cancellazione del testo

    • x cancella il carattere sul cursore
    • dd cancella una linea

    Comandi per salvare

    •  :w salva (scrive su disco)
    • :w <file> salva il file con un altro nome
    • :q esce senza salvare se non ci sono state modifiche
    • :q! esce senza salvare
    • ZZ salva ed esce

    Per uscire e salvare il file base digitare :wq in modalità comando, oppure ZZ.

    Creazione e modifica di un file di testo (o codice sorgente) con l’editor Nano

    Nano è un editor di testo libero per sistemi UNIX-like, distribuito con licenza GNU GPL. È un software libero che trae ispirazione da Pico, l’editor di testo proprietario del client e-mail pine, rispetto al quale risulta migliorato. Come l’editor vi, nano è presente in quasi tutte le distribuzioni del sistema operativo, ma è più semplice e user friendly.

    Avviare nano

    Per avviare nano, basta digitare il comando nano seguito dal nome del file che si vuole creare.

    nano nome_file

    Ad esempio, se volessi aprire il file hello.sh nella directory corrente (/home/os/script):

    Sullo schermo verrà mostrato l’editor testuale con il contenuto del file. A questo punto è possibile apportare le modifiche, aggiungere o cancellare il testo.

    linux-editor-nano

     

    Comandi di spostamento del cursore

    Gli spostamenti all’interno del file possono essere effettuati con le frecce.

    Comandi per salvare e/o uscire

    • CTRL + O e poi invio salva il file (scrive su disco)
    • CTRL + O, poi modifica del nome del file e poi invio salva il file con un altro nome
    • CTRL + X esce senza salvare se non ci sono state modifiche
    • CTRL + X salva ed esce se ci sono modifiche e si risponde Y alla domanda se si vuole salvare

     

    Creazione e modifica di un file di testo (o codice sorgente) con l’editor GEdit

    GEdit è un editor di testo libero, compatibile con la codifica di caratteri UTF-8, per l’ambiente desktop GNOME. È stato progettato per avere un’interfaccia chiara e semplice, ispirata cioè agli ideali del progetto GNOME.

    Gedit è compatibile con i formati di testo puro dello standard Unix, del Notepad di Microsoft Windows e dei programmi analoghi per il Classic Mac OS. Ciò gli consente di visualizzare correttamente i file generati da tutte queste applicazioni, e di modificarli senza alterarne la compatibilità con i software con cui erano stati creati.

    Il programma include un syntax highlighting e le schede per la modifica di più file contemporaneamente.

    Avviare GEdit

    Per avviare GEdit, basta digitare il comando gedit seguito dal nome del file che si vuole creare.

    gedit nome_file

    Ad esempio, se volessi aprire il file hello.sh nella directory corrente (/home/os/script):

    Sullo schermo verrà mostrato l’editor grafico con il contenuto del file. A questo punto è possibile apportare le modifiche, aggiungere o cancellare il testo.

    linux-gedit

    L’interfaccia grafica è semplice e intuitiva.

    Copia di un file: il comando cp

    Per effettuare la copia di un file si usa il comando cp. La sintassi è la seguente:

    cp  file_di_origine file_di_destinazione

    Ad esempio, se volessi copiare il file hello.sh che si trova nella directory corrente (/home/os/script) nel file var7.sh:

    Questo comando copia il file hello.sh nel file var7.sh. Quindi avremo /home/os/script/var7.sh che conterrà lo stesso testo del file /home/os/script/hello.sh. Il comando cp non sposta il file di origine ma crea una copia identica del file con un altro nome all’interno della stessa directory

    linux-copia-file

    I due file hello.sh e var7.sh saranno identici nel contenuto e nelle dimensioni, ma non nei permessi se il file di origine ha permessi diversi da quelli standard.

    linux-esito-copia-file

    Copiare più file

    Per copiare più file contemporaneamente nella stessa directory, basta indicare l’elenco dei file da copiare e la directory di destinazione. La sintassi  è la seguente:

    cp  file1 file2 […] directory_di_destinazione

    Ad esempio, se volessi copiare i file var6.sh e var7.sh che si trovano nella directory corrente (/home/os/script) nella directory /home/os/sorgenti:

    In alternativa è possibile usare il comando cp tramite un pattern usando un carattere jolly:

    Questo comando crea una copia nella cartella /home/os/sorgenti di tutti i file che cominciano con la radice con var e finiscono con estensione .sh.

     

    Spostamento o rinomina di un file: il comando mv

    Per effettuare uno spostamento di un file si usa il comando mv. La sintassi è la seguente:

    mv [opzioni] file_di_origine file_di_destinazione

    Ad esempio, se volessi spostare il file hello.sh che si trova nella directory corrente (/home/os/script) sotto la directory /home/os/sorgenti:

    Questo comando sposta il file /home/os/script/hello.sh al percorso /home/os/sorgenti/hello.sh.

    linux-spostamento-file

     

    Per cambiare il nome di un file o di una directory sul sistema operativo Linux si utilizza il comando mv.

    Cancellazione di un file

    Per effettuare una cancellazione di un file si usa il comando rm con eventuali opzioni. La sintassi è la seguente:

    rm [opzioni] nome_file

    Le opzioni sono facoltative e sono le seguenti:

    • -r consente di cancellare tutto il contenuto di una directory in modo ricorsivo. Elimina sia la directory che il contenuto.
    • -f forza la cancellazione del file senza chiedere la conferma all’utente.

    Ad esempio, se volessi cancellare il file var8.sh:

    Cancellare più file

    Per cancellare più file contemporaneamente nella stessa directory, basta indicare l’elenco dei file da cancellare. La sintassi è la seguente:

    rm  file1 file2 […]

    Ad esempio, se volessi cancellare i file var6.sh e var7.sh che si trovano nella directory corrente (/home/os/script):

    In alternativa è possibile usare il comando rm tramite un pattern usando un carattere jolly:

    Questo comando cancella tutti i file che cominciano con la radice con var e finiscono con estensione .sh.

    Determinare il tipo di file

    Nel sistema operativo Linux c’è un comando che identifica la tipologia di un file: testo, directory, script di shell, programma, immagine, etc… . Si tratta del comando file.  La sintassi è la seguente:

    file nome_file

    Generalmente un file è riconoscibile dall’estensione. Ad esempio, spesso un file di testo è associato all’estensione “.txt” mentre un programma ha il permesso di esecuzione. Tuttavia, non è detto. Potrebbero anche esserci dei file di testo senza estensione “.txt” o con altre estensioni.

    linux-tipologia-file

     

    Visualizzare il contenuto di un file

    Per visualizzare il contenuto di un file in Linux ci sono diverse soluzioni:

    • cat
    • more
    • less
    • head
    • tail

    Cat

    Il comando cat mostra il file per intero, a meno che non venga specificato di procedere pagina per pagina.  La sintassi è la seguente:

    cat nome_file

    Ad esempio:

    linux-comando-cat

    Se il testo è molto lungo, è possibile paginare l’output:

    cat nome_file | more

    Per muoversi nella paginazione, occorre utilizzare i seguenti comandi:

    • spazio: pagina successiva
    • return: riga successiva
    • b: pagina precedente
    • q: termina la visualizzazione

    More

    Il comando more scorre il contenuto del file per pagina a partire dall’inizio.

    La sintassi  è la seguente:

    more nome_file

    Per muoversi nella paginazione, occorre utilizzare i seguenti comandi:

    • spazio: pagina successiva
    • return: riga successiva
    • b: pagina precedente
    • q: termina la visualizzazione

    Less

    Il comando less mostra il contenuto di un file di testo su di un terminale testuale, visualizzandolo una pagina per volta, permettendo di scorrerlo in avanti e all’indietro e di effettuare ricerche tramite espressioni regolari. La sintassi è la seguente:

    less nome_file

    Per muoversi nella paginazione, occorre utilizzare i seguenti comandi:

    • spazio: pagina successiva
    • return: riga successiva
    • b: pagina precedente
    • q: termina la visualizzazione

    Head

    Il comando head visualizza le prime 10 righe di un file, cioè la parte iniziale. La sintassi è la seguente:

    head nome_file

    Per vedere un numero di righe diverso, basta specificarlo con la seguente opzione mostrata nell’esempio sotto:

    head /etc/passwd -n15

    Tail

    Il comando tail visualizza le ultime 10 righe di un file, cioè la parte finale. La sintassi è la seguente:

    tail nome_file

    Per vedere un numero di righe diverso, basta specificarlo con la seguente opzione mostrata nell’esempio sotto:

    tail /etc/passwd -n15

    Il comando tail viene usato moltissimo per visualizzare l’aggiornamento delle ultime righe di un file di log mediante l’opzione -f:

    tail -f /home/os/log/info.log

    Il comando visualizza il contenuto delle ultime righe del file aggiornando la visualizzazione periodicamente. Così facendo è possibile controllare le ultime modifiche del file in tempo reale, senza dover eseguire di nuovo il comando tail. Per uscire dalla visualizzazione automatica del comando tail -f basta premere la combinazione di tasti CTRL+C.

    Occupazione spazio su disco

    Per controllare l’occupazione dello spazio sul disco (o sui dischi) si utilizza il comando df. La sintassi è la seguente:

    df [opzioni]

    Ad esempio, il comando df senza ulteriori opzioni o parametri, visualizza le partizioni presenti del disco, i blocchi totali, lo spazio su disco utilizzato e quello disponibile, la percentuale di utilizzo e i punti di montaggio su un file system:

    linux-comando-df-occupazione-spazio-disco

    Il comando df senza opzioni però mostra le informazioni in byte, che l’occhio umano legge con difficoltà. Utilizzando però le opzioni possiamo rendere l’output più immediato. Alcune tra le opzioni disponibili sono:

    • -h visualizza il dato in un formato più leggibile (K sono i KByte, M sono i MByte , G sono i GByte, etc … )
    • -T mostra il tipo di filesystem di ogni partizione (ext3, ext4, etc …)
    • –total aggiunge alla fine della lista una riga con i totali di colonna
    • -x  filtra la lista ottenuta con un solo tipo di filesystem, ad esempio ext4
    • -a visualizza  le informazioni di utilizzo disco di tutti i filesystem presenti nella macchina Linux

     

     

    Confronto tra due file

    Per effettuare il confronto tra due file sul terminale si possono utilizzare due comandi: diff e sdiff.

    Il comando diff

    Il comando diff controlla il contenuto di due file e mette in evidenza le differenze. La sintassi è la seguente:

    diff file1 file2

    Supponiamo di avere due file di shell. Il file var4.sh è il seguente:

    Il file var5.sh è il seguente:

    Proviamo a lanciare il comando diff con questi due file:

    linux-comando-diff

    Il comando diff elabora i due file e visualizza in output le differenze che trova. Nella prima riga (2c2) il comando indica rispettivamente i numeri di linea del primo e del secondo testo dove ha trovato le differenze. In pratica dice che la prima riga è identica (#!/bin/bash), mentre nella seconda c’è una differenza. Il carattere che separa i numeri può essere ‘c’ (modifica), ‘d’ (cancellazione), ‘a’ (aggiunta), a seconda del tipo di differenza tra i due file. La terza riga (read name) è identica, mentre sulla quarta c’è una differenza. Il testo che segue il simbolo < appartiene al primo file. Quello che segue il simbolo > al secondo file.

    Il comando sdiff

    Il comando sdiff mette a confronto due file, visualizzandone il contenuto di entrambi, uno accanto all’altro. La sintassi è la seguente:

    sdiff file1 file2

    Supponiamo di avere due file di shell. Il file var4.sh è il seguente:

    Il file var5.sh è il seguente:

    Proviamo a lanciare il comando sdiff con questi due file:

    linux-comando-sdiff

    Il comando sdiff analizza il contenuto dei due file e lo visualizza sul terminale. La differenza viene evidenziata dal simbolo pipe (|).

     

    Giulio Cantali – IT Consultant

    Creatore di Database Master, il primo percorso per diventare esperti di database

Lascia un commento

Se vuoi condividere la tua opinione, lascia un commento

Puoi usare questi tag e attributi: HTML:

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">