Unix / Linux - Gestione dei file

In questo capitolo, discuteremo in dettaglio sulla gestione dei file in Unix. Tutti i dati in Unix sono organizzati in file. Tutti i file sono organizzati in directory. Queste directory sono organizzate in una struttura ad albero chiamata filesystem.

Quando lavori con Unix, in un modo o nell'altro, passi la maggior parte del tuo tempo a lavorare con i file. Questo tutorial ti aiuterà a capire come creare e rimuovere file, copiarli e rinominarli, creare collegamenti ad essi, ecc.

In Unix, ci sono tre tipi fondamentali di file:

  • Ordinary Files- Un file normale è un file sul sistema che contiene dati, testo o istruzioni di programma. In questo tutorial, vedrai come lavorare con file normali.

  • Directories- Le directory memorizzano sia file speciali che normali. Per gli utenti che hanno familiarità con Windows o Mac OS, le directory Unix sono equivalenti alle cartelle.

  • Special Files- Alcuni file speciali forniscono l'accesso a hardware come dischi rigidi, unità CD-ROM, modem e adattatori Ethernet. Altri file speciali sono simili agli alias o ai collegamenti e consentono di accedere a un singolo file utilizzando nomi diversi.

File di elenco

Per elencare i file e le directory archiviati nella directory corrente, utilizzare il seguente comando:

$ls

Ecco l'output di esempio del comando precedente:

$ls

bin        hosts  lib     res.03
ch07       hw1    pub     test_results
ch07.bak   hw2    res.01  users
docs       hw3    res.02  work

Il comando ls supporta il -l opzione che ti aiuterebbe a ottenere maggiori informazioni sui file elencati -

$ls -l
total 1962188

drwxrwxr-x  2 amrood amrood      4096 Dec 25 09:59 uml
-rw-rw-r--  1 amrood amrood      5341 Dec 25 08:38 uml.jpg
drwxr-xr-x  2 amrood amrood      4096 Feb 15  2006 univ
drwxr-xr-x  2 root   root        4096 Dec  9  2007 urlspedia
-rw-r--r--  1 root   root      276480 Dec  9  2007 urlspedia.tar
drwxr-xr-x  8 root   root        4096 Nov 25  2007 usr
drwxr-xr-x  2    200    300      4096 Nov 25  2007 webthumb-1.01
-rwxr-xr-x  1 root   root        3192 Nov 25  2007 webthumb.php
-rw-rw-r--  1 amrood amrood     20480 Nov 25  2007 webthumb.tar
-rw-rw-r--  1 amrood amrood      5654 Aug  9  2007 yourfile.mid
-rw-rw-r--  1 amrood amrood    166255 Aug  9  2007 yourfile.swf
drwxr-xr-x 11 amrood amrood      4096 May 29  2007 zlib-1.2.3
$

Ecco le informazioni su tutte le colonne elencate:

  • First Column- Rappresenta il tipo di file e l'autorizzazione data sul file. Di seguito è la descrizione di tutti i tipi di file.

  • Second Column - Rappresenta il numero di blocchi di memoria presi dal file o dalla directory.

  • Third Column- Rappresenta il proprietario del file. Questo è l'utente Unix che ha creato questo file.

  • Fourth Column- Rappresenta il gruppo del proprietario. Ogni utente Unix avrà un gruppo associato.

  • Fifth Column - Rappresenta la dimensione del file in byte.

  • Sixth Column - Rappresenta la data e l'ora in cui questo file è stato creato o modificato per l'ultima volta.

  • Seventh Column - Rappresenta il nome del file o della directory.

Nel ls -l elenco di esempio, ogni riga di file inizia con un d, -, o l. Questi caratteri indicano il tipo di file elencato.

Sr.No. Prefisso e descrizione
1

-

File normale, come un file di testo ASCII, eseguibile binario o collegamento fisico.

2

b

Blocca file speciale. Blocca il file del dispositivo di input / output come un disco rigido fisico.

3

c

File speciale di caratteri. File di dispositivo di input / output non elaborato come un disco rigido fisico.

4

d

File di directory che contiene un elenco di altri file e directory.

5

l

File di collegamento simbolico. Collegamenti su qualsiasi file normale.

6

p

Pipa chiamata. Un meccanismo per le comunicazioni tra processi.

7

s

Socket utilizzato per la comunicazione tra processi.

Metacaratteri

I metacaratteri hanno un significato speciale in Unix. Per esempio,* e ?sono metacaratteri. Noi usiamo* per trovare 0 o più caratteri, un punto interrogativo (?) corrisponde a un singolo carattere.

Ad esempio -

$ls ch*.doc

Visualizza tutti i file, i cui nomi iniziano con ch e termina con .doc -

ch01-1.doc   ch010.doc  ch02.doc    ch03-2.doc 
ch04-1.doc   ch040.doc  ch05.doc    ch06-2.doc
ch01-2.doc ch02-1.doc c

Qui, *funziona come meta carattere che corrisponde a qualsiasi carattere. Se vuoi visualizzare tutti i file che terminano con solo.doc, quindi puoi utilizzare il seguente comando:

$ls *.doc

File nascosti

Un file invisibile è uno, il cui primo carattere è il punto o il punto (.). I programmi Unix (inclusa la shell) utilizzano la maggior parte di questi file per memorizzare le informazioni di configurazione.

Alcuni esempi comuni di file nascosti includono i file:

  • .profile - Lo script di inizializzazione della Bourne shell (sh)

  • .kshrc - Lo script di inizializzazione della shell Korn (ksh)

  • .cshrc - Lo script di inizializzazione della shell C (csh)

  • .rhosts - Il file di configurazione della shell remota

Per elencare i file invisibili, specificare il file -a opzione per ls -

$ ls -a

.         .profile       docs     lib     test_results
..        .rhosts        hosts    pub     users
.emacs    bin            hw1      res.01  work
.exrc     ch07           hw2      res.02
.kshrc    ch07.bak       hw3      res.03
$
  • Single dot (.) - Questo rappresenta la directory corrente.

  • Double dot (..) - Questo rappresenta la directory principale.

Creazione di file

Puoi usare il file vieditor per creare file ordinari su qualsiasi sistema Unix. Devi semplicemente dare il seguente comando:

$ vi filename

Il comando precedente aprirà un file con il nome file specificato. Ora premi il tastoiper entrare in modalità di modifica. Una volta che sei in modalità di modifica, puoi iniziare a scrivere il tuo contenuto nel file come nel seguente programma:

This is unix file....I created it for the first time.....
I'm going to save this content in this file.

Una volta che hai finito con il programma, segui questi passaggi:

  • Premi il tasto esc per uscire dalla modalità di modifica.

  • Premi due tasti Shift + ZZ insieme per uscire completamente dal file.

Ora avrai un file creato con filename nella directory corrente.

$ vi filename
$

Modifica dei file

È possibile modificare un file esistente utilizzando l'estensione vieditore. Discuteremo in breve come aprire un file esistente -

$ vi filename

Una volta aperto il file, puoi entrare in modalità di modifica premendo il tasto ie poi puoi procedere modificando il file. Se vuoi muoverti qua e là all'interno di un file, prima devi uscire dalla modalità di modifica premendo il tastoEsc. Successivamente, puoi utilizzare i seguenti tasti per spostarti all'interno di un file:

  • l tasto per spostarsi a destra.

  • h tasto per spostarsi a sinistra.

  • k chiave per spostarsi al rialzo nel file.

  • j tasto per spostare il lato negativo nel file.

Quindi, usando i tasti sopra, puoi posizionare il cursore dove vuoi modificare. Una volta posizionato, puoi usare ilichiave per entrare in modalità di modifica. Una volta terminata la modifica del file, premereEsc e infine due chiavi Shift + ZZ insieme per uscire completamente dal file.

Visualizza il contenuto di un file

Puoi usare il file catcomando per vedere il contenuto di un file. Di seguito è riportato un semplice esempio per vedere il contenuto del file creato sopra:

$ cat filename
This is unix file....I created it for the first time.....
I'm going to save this content in this file.
$

È possibile visualizzare i numeri di riga utilizzando il -b opzione insieme a cat comando come segue -

$ cat -b filename
1   This is unix file....I created it for the first time.....
2   I'm going to save this content in this file.
$

Contare le parole in un file

Puoi usare il file wccomando per ottenere un conteggio del numero totale di righe, parole e caratteri contenuti in un file. Di seguito è riportato un semplice esempio per visualizzare le informazioni sul file creato sopra:

$ wc filename
2  19 103 filename
$

Ecco il dettaglio di tutte e quattro le colonne:

  • First Column - Rappresenta il numero totale di righe nel file.

  • Second Column - Rappresenta il numero totale di parole nel file.

  • Third Column- Rappresenta il numero totale di byte nel file. Questa è la dimensione effettiva del file.

  • Fourth Column - Rappresenta il nome del file.

È possibile fornire più file e ottenere informazioni su tali file contemporaneamente. La seguente è una sintassi semplice:

$ wc filename1 filename2 filename3

Copia di file

Per fare una copia di un file usa il cpcomando. La sintassi di base del comando è:

$ cp source_file destination_file

Di seguito è riportato l'esempio per creare una copia del file esistente filename.

$ cp filename copyfile
$

Ora troverai un altro file copyfilenella directory corrente. Questo file sarà esattamente lo stesso del file originalefilename.

Rinominare i file

Per modificare il nome di un file, utilizzare il mvcomando. Di seguito è riportata la sintassi di base:

$ mv old_file new_file

Il seguente programma rinominerà il file esistente filename per newfile.

$ mv filename newfile
$

Il mvIl comando sposterà completamente il file esistente nel nuovo file. In questo caso, troverai solonewfile nella directory corrente.

Eliminazione di file

Per eliminare un file esistente, utilizzare il rmcomando. Di seguito è riportata la sintassi di base:

$ rm filename

Caution- Un file può contenere informazioni utili. Si consiglia sempre di fare attenzione durante l'utilizzoDeletecomando. È meglio usare il file-i opzione insieme a rm comando.

Di seguito è riportato l'esempio che mostra come rimuovere completamente il file esistente filename.

$ rm filename
$

È possibile rimuovere più file alla volta con il comando fornito di seguito:

$ rm filename1 filename2 filename3
$

Stream Unix standard

In circostanze normali, ogni programma Unix ha tre flussi (file) aperti all'avvio -

  • stdin- Questo è indicato come input standard e il descrittore di file associato è 0. Questo è anche rappresentato come STDIN. Il programma Unix leggerà l'input predefinito da STDIN.

  • stdout- Questo è indicato come output standard e il descrittore di file associato è 1. Questo è anche rappresentato come STDOUT. Il programma Unix scriverà l'output predefinito in STDOUT

  • stderr- Questo è indicato come errore standard e il descrittore di file associato è 2. Questo è anche rappresentato come STDERR. Il programma Unix scriverà tutti i messaggi di errore in STDERR.