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.