[successivo] [precedente] [inizio] [fine] [indice generale] [indice ridotto] [indice analitico] [volume] [parte]


Capitolo 27.   Contenuti

La navigazione all'interno delle directory, alla cieca, come visto negli esempi dell'esercitazione precedente, è una cosa possibile ma insolita: normalmente si accompagna con l'analisi dei contenuti di directory e file.

27.1   Contenuto delle directory

Le directory si esplorano con il comando ls

ls /bin[Invio]

arch           dd             gzip           nisdomainname  tar
ash            df             hostname       ping           touch
awk            dmesg          kill           ps             true
basename       dnsdomainname  ln             pwd            umount
bash           doexec         login          rm             uname
bsh            domainname     ls             rmdir          vi
cat            echo           mail           rpm            view
chgrp          egrep          mkdir          sed            vim
chmod          ex             mknod          sh             ypdomainname
chown          false          more           sleep          zcat
cp             fgrep          mount          sort
cpio           gawk           mt             stty
csh            grep           mv             su
date           gunzip         netstat        sync

Il comando ls /bin visualizza il contenuto della directory /bin/. I nomi che vengono elencati rappresentano file di qualunque tipo (sottodirectory incluse).

Una visualizzazione più espressiva del contenuto delle directory può essere ottenuta utilizzando l'opzione -l.

ls -l /bin[Invio]

-rwxr-xr-x   1 root     root         2712 Jul 20 03:15 arch
-rwxrwxrwx   1 root     root        56380 Apr 16  1997 ash
lrwxrwxrwx   1 root     root            4 Oct 21 11:15 awk -> gawk
-rwxr-xr-x   1 root     root        18768 Apr 18  1997 basename
-rwxrwxrwx   1 root     root       412516 Jul 17 21:27 bash
lrwxrwxrwx   1 root     root            3 Oct 21 11:15 bsh -> ash
-rwxr-xr-x   1 root     root        22164 Mar 14  1997 cat
-rwxr-xr-x   1 root     root        23644 Feb 25  1997 chgrp
-rwxr-xr-x   1 root     root        23960 Feb 25  1997 chmod
-rwxr-xr-x   1 root     root        23252 Feb 25  1997 chown
-rwxr-xr-x   1 root     root        61600 Feb 25  1997 cp
-rwxr-xr-x   1 root     root       296728 Apr 23  1997 cpio
...

In questo caso, è stato ottenuto un elenco più dettagliato che in particolare consente di distinguere il tipo di file, i permessi e l'appartenenza all'utente e al gruppo.

In precedenza è stato spiegato che ogni directory contiene due riferimenti convenzionali rappresentati da un punto singolo e da due punti in sequenza (. e ..). Negli esempi appena visti, questi non sono apparsi. Ciò accade perché i file il cui nome inizia con un punto non vengono presi in considerazione quando non si fa riferimento a loro in modo esplicito.

cd[Invio]

ls[Invio]

La directory personale di un utente potrebbe sembrare vuota, utilizzando il comando ls appena visto. Con l'opzione -a si visualizzano anche i file che iniziano con un punto (si osservi che in precedenza non sono apparsi i riferimenti alle voci . e ..).

ls -a[Invio]

.                .bash_profile    .riciclaggio
..               .bashrc          .screenrc
.Xdefaults       .fvwm2rc95       .twmrc
.bash_history    .mc.ext          .xfm
.bash_logout     .mc.ini          .xinitrc

27.2   Contenuto dei file

Anche il contenuto dei file può essere analizzato, entro certi limiti, soprattutto quando si tratta di file di testo. Per visualizzare il contenuto di file di testo si utilizzano generalmente i comandi cat e more.

cat /etc/fstab[Invio]

/dev/hda3       /               ext3            defaults        1  1
/dev/hda2       none            swap            sw
proc            /proc           ignore
/dev/hda1       dos             vfat            quiet,umask=000
/dev/hdc        /mnt/cdrom      iso9660         ro,user,noauto
/dev/fd0        /mnt/floppy     vfat            user,noauto,quiet

Con il comando appena indicato si ottiene la visualizzazione del contenuto del file /etc/fstab, che ovviamente cambia a seconda della configurazione del proprio sistema operativo.

Il comando cat, usato così, non si presta alla visualizzazione di file di grandi dimensioni. Per questo si preferisce usare more, oppure il più raffinato less.

more /etc/services[Invio]

# /etc/services:
# $Id: services,v 1.4 1997/05/20 19:41:21 tobias Exp $
#
# Network services, Internet style
#
# Note that it is presently the policy of IANA to assign a single well-known
# port number for both TCP and UDP; hence, most entries here have two entries
# even if the protocol doesn't support UDP operations.
# Updated from RFC 1700, ``Assigned Numbers'' (October 1994).  Not all ports
# are included, only the more common ones.

tcpmux          1/tcp                           # TCP port service multiplexer
echo            7/tcp
echo            7/udp
discard         9/tcp           sink null
discard         9/udp           sink null
systat          11/tcp          users
daytime         13/tcp
daytime         13/udp
netstat         15/tcp
qotd            17/tcp          quote
msp             18/tcp                          # message send protocol
msp             18/udp                          # message send protocol
--More--(5%)

[barra spaziatrice]

chargen         19/tcp          ttytst source
chargen         19/udp          ttytst source
ftp-data        20/tcp
ftp             21/tcp
fsp             21/udp          fspd
ssh             22/tcp                          # SSH Remote Login Protocol
ssh             22/udp                          # SSH Remote Login Protocol
telnet          23/tcp
# 24 - private
smtp            25/tcp          mail
# 26 - unassigned
time            37/tcp          timserver
time            37/udp          timserver
rlp             39/udp          resource        # resource location
nameserver      42/tcp          name            # IEN 116
whois           43/tcp          nicname
re-mail-ck      50/tcp                          # Remote Mail Checking Protocol
re-mail-ck      50/udp                          # Remote Mail Checking Protocol
domain          53/tcp          nameserver      # name-domain server
domain          53/udp          nameserver
mtp             57/tcp                          # deprecated
bootps          67/tcp                          # BOOTP server
bootps          67/udp
--More--(9%)

Come mostrato, per passare alla schermata successiva, basta premere la [barra spaziatrice]. Per terminare, anche se non è stato visualizzato tutto il file, basta usare la lettera «q».

[q]

Il comando less funziona in modo analogo, con la differenza che si può scorrere il file anche all'indietro, usando intuitivamente la tastiera.

I comandi more e less sono descritti meglio nella sezione 43.1.

27.3   Determinazione del tipo

Il contenuto dei file può essere determinato attraverso il comando file, senza doverne visualizzare il contenuto. Ciò è molto importante, specialmente nelle situazioni in cui visualizzare un file è inopportuno (si pensi a cosa accadrebbe tentando di visualizzare un file eseguibile binario).

Il comando file si basa su una serie di stringhe di riconoscimento chiamate magic number (una sorta di «impronta»), definite in base alla tradizione dei sistemi Unix.

file /etc/*[Invio]

/etc/DIR_COLORS:       English text
/etc/HOSTNAME:         ASCII text
/etc/X11:              directory
/etc/adjtime:          ASCII text
/etc/aliases:          English text
/etc/aliases.db:       Berkeley DB Hash file (Version 2, Little Endian,...
/etc/at.deny:          ASCII text
/etc/bashrc:           ASCII text
/etc/cron.daily:       directory
/etc/cron.hourly:      directory
/etc/cron.monthly:     directory
/etc/cron.weekly:      directory
/etc/crontab:          ASCII text
/etc/csh.cshrc:        ASCII text
/etc/dosemu.conf:      English text
/etc/dosemu.users:     ASCII text
...

Il comando indicato come esempio visualizza l'elenco dei file contenuti nella directory /etc/, dove a fianco di ogni file appare la definizione del tipo a cui questo appartiene.

Questo metodo di riconoscimento dei dati non è infallibile, ma è comunque di grande aiuto.

27.4   Spazio utilizzato e spazio disponibile

Per controllare lo spazio disponibile nel disco (o nei dischi) si utilizza il comando df.

df[Invio]

Il risultato del comando potrebbe essere qualcosa di simile a quanto segue.

Filesystem         1024-blocks  Used Available Capacity Mounted on
/dev/hda4             648331  521981    92860     85%   /
/dev/hda1              41024   38712     2312     94%   /dos

Per controllare lo spazio utilizzato in una directory si può usare il comando du.

du /bin[Invio]

3168    /bin

In questo caso, si determina che la directory /bin/ contiene file per un totale di 3 168 Kibyte.

27.5   Conclusione

L'analisi del contenuto di directory e file è un'operazione elementare, ma essenziale per la determinazione delle azioni da compiere in funzione di quanto si rivela in questo modo.

Appunti di informatica libera 2007.02 --- Copyright © 2000-2007 Daniele Giacomini -- <daniele (ad) swlibero·org>


Dovrebbe essere possibile fare riferimento a questa pagina anche con il nome contenuti.htm

[successivo] [precedente] [inizio] [fine] [indice generale] [indice ridotto] [indice analitico]

Valid ISO-HTML!

CSS validator!