UNIX, e quindi Linux, riconosce due tipi diversi di dispositivi: i dispositivi a blocchi ad accesso casuale (come i dischi) ed i dispositivi a carattere (come i nastri e le linee seriali), alcuni dei quali sono seriali, altri ad accesso casuale. Ogni dispositivo supportato viene rappresentato nel filesystem come un file di device. Quando si legge o si scrive un file di device, i dati provengono o vanno al dispositivo che rappresenta. In questo modo non è necessario nessun programma speciale (e nessuna metodologia speciale per la programmazione delle applicazioni, come la cattura degli interrupt o il mandare richieste ad una porta seriale); ad esempio, per mandare un file alla stampante, basta dire
ed il contenuto del file viene stampato (il file deve, naturalmente, essere in una forma che venga riconosciuta dalla stampante). Comunque, dato che non è una buona idea avere diverse persone che inviano file usando cat contemporaneamente alla stampante, di solito si usa un programma speciale per farlo (di solito lpr ). Un programma del genere si assicura che venga stampato solo un file alla volta, e manderà gli altri file in stampa in sequenza a mano a mano che la stampante finisce il precedente. Anche per la maggior parte degli altri dispositivi serve una cosa del genere; in effetti, in genere non ci si deve preoccupare per niente di questo tipo di file.$
cat nomefile > /dev/lp1
$
Dato che i dispositivi appaiono nel filesystem (nella directory /dev ), è facile vedere quali file di device esistono usando ls o un altro comando adatto. Nell'output di ls -l , la prima colonna contiene il tipo di file ed i suoi permessi. Ad esempio, guardando un dispositivo seriale sul mio sistema appare:
Il primo carattere della prima colonna, ad esempio `c' nel crw-rw-rw- qui sopra, dice agli utenti informati il tipo del file, in questo caso un dispositivo a caratteri. Per i file ordinari il primo carattere è `-', per le directory è `d', e per i dispositivi a blocchi `b': leggete la pagina man di ls per altre informazioni.$
ls -l /dev/cua0
crw-rw-rw- 1 root uucp 5, 64 Nov 30 1993 /dev/cua0
$
Notate che di solito tutti i file di device esistono anche se il dispositivo corrispondente può non essere installato. Quindi se avete un file /dev/sda non vuol dire che avete realmente un hard disk SCSI. Avere tutti i file di device rende più semplici i programmi di installazione, ed è più facile aggiungere nuovo hardware (non c'è bisogno di trovare i parametri corretti e creare il file di device per il nuovo dispositivo).