Linux Shell - File e cartelle

cowsayfilecartelle

Oggi vediamo come interagire con file e cartelle tramite la Shell di Linux. In particolare vedremo come copiare, spostare e rimuovere file e come creare nuove cartelle.
Prima di addentrarci nel funzionamento dei singoli comandi però, passiamo in rassegna una serie di caratteri speciali detti wildcard (metacaratteri o caratteri jolly) che fungono da selettori di file in base a pattern nel nome.

  • *
  • Seleziona i file che contengono nel nome qualsiasi carattere.

  • ?
  • Seleziona i file che contengono nel nome qualsiasi carattere singolo.

  • [char]
  • Seleziona i file che contengono nel nome qualsiasi carattere incluso in un insieme di caratteri char.

  • [!char]
  • Seleziona i file che contengono nel nome qualsiasi carattere NON incluso in un insieme di caratteri char.

  • [[:class:]]
  • Seleziona i file che contengono nel nome qualsiasi carattere incluso in una data classe class.

Le classi di caratteri sono insiemi particolari di caratteri con proprietà comuni. Ad esempio è possibile utilizzare [:alnum:] per qualsiasi carattere alfanumerico, [:alpha:] per caratteri alfabetici, [:digit:] per i numeri, [:lower:] per caratteri minuscoli e [:upper:] per caratteri maiuscoli.
Le wildcard possono ovviamente essere combinate per generare dei pattern specifici. Ad esempio per selezionare tutti i file pdf che iniziano la lettera "a" o "b" useremo [ab]*.pdf, oppure per selezionare i file che non iniziano con un numero useremo [![:digit:]]*.

Vediamo adesso come potere usare queste wildcard per lavorare con file e cartelle. I comandi che andremo ad usare sono piuttosto semplici ma essenziali per l'utilizzo quotidiano di un sistema Linux: cp per copiare file, mv per spostarli, rm per eliminarli e mkdir per creare cartelle.

  • cp: copia file o cartelle. Con il comando cp file1 file2 il file file1 verrà copiato con il nome file2, mentre con il comando cp file1 file2 file3 fileN nomecartella la lista di file specificata verrà copiata nella cartella indicata alla fine del comando. Il comando cp ammette vari flag per specificare diversi comportamenti. Alcuni sono i seguenti.
    • -a
    • effettua la copia mantenendo tutti gli attributi, come id del proprietario e permessi.

    • -i
    • chiede conferma prima di sovrascrivere eventuali file esistenti con lo stesso nome.

    • -r
    • effettua la copia ricorsiva, necessario per copiare cartelle.

    • -u
    • copia solamente i file mancanti o che sono più nuovi rispetto a quelli presenti nella cartella di destinazione.

    • -v
    • stampa informazioni durante la copia.

  • mv: sposta o rinomina file. In ogni caso il file di origine viene rimosso e spostato. Se la cartella di destinazione è la stessa di quella di partenza, l'effetto sarà quello di rinominare il file. La sintassi e molti dei flag sono identici a cp
  • rm: rimuove file secondo la sintassi rm file1 file2 fileN. I flag sono simili a quelli di cp ma vale la pena nominare anche -f che ignora file non esistenti. Ovviamente prestate molta attenzione quando utilizzate questo comando perché rischiate di fare danni seri con il minimo errore di sintassi. Consiglio di provare sempre il comando utilizzando ls e poi di usare rm solamente se i file elencati sono quelli che effettivamente si vogliono eliminare.
  • mkdir: crea una o più cartelle. La sintassi è la seguente: mkdir cartella1 cartella2 cartellaN

Per concludere vediamo come realizzare dei collegamenti a file e cartelle. I collegamenti possono essere di due tipi, hard link e symbolic link (simili ai collegamenti di Windows). Gli hard link sono tipici dei primi sistemi Unix, mentre i soft link sono stati introdotti più recentemente. Con un hard link viene creato un file che è indistinguibile dal file originale, a differenza dei link simbolici che creano un file speciale con un puntatore testuale al file originario. Ormai gli hard link non sono molto diffusi a causa delle loro limitazioni. Infatti non possono riferirsi ad un file esterno al proprio filesystem e non possono riferirsi a cartelle.
Quando un hard link viene eliminato, viene rimosso il collegamento ma il file continua ad esistere finché non vengono rimossi tutti i suoi hard link. Con i link simbolici invece, se viene eliminato il collegamento il file continua ad esistere. Analogamente se viene eliminato il file originale, il link simbolico continuerà ad esistere ma punterà ad un file inesistente (si dice in questo caso che il link è rotto).
Il comando per creare collegamenti è ln. Con il comando ln file link si crea un collegamento di tipo hard al file file, con il comando ln -s file link si crea un collegamento di tipo soft.

Federico Becattini

Dottorando in computer vision. Appassionato di informatica e elettronica fai da te, specialmente se per applicazioni futili. Tormenta i suoi amici e colleghi con idee geniali spesso non riconosciute come tali.

Linux Shell - File e cartelle ultima modifica: 2016-12-13T15:39:09+00:00 da Federico Becattini


Advertisment ad adsense adlogger