[successivo] [precedente] [inizio] [fine] [indice generale] [indice ridotto] [translators] [docinfo] [indice analitico] [volume] [parte]
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.
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 |
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 28.1.
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.
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.
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 2006.07.01 --- Copyright © 2000-2006 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] [translators] [docinfo] [indice analitico]