PDA

View Full Version : Alcune domande sul comando lsusb in linux che mi servono per un esame. aiuto x favore


Andre_Santarell
23-09-2008, 12:35
ciao a tutti, nell'ultimo esame che ho fatto di sistemi operativi, c'erano anche delle domande su linux, in particolare relative al comando lsusb.
Io non ho idea di quali siano le risposte
Domani ho un secondo appello, e probabilmente ci saranno domande molto simili.
Vi prego, potete aiutarmi ? Potete darmi le risposte ai seguenti quesiti ?
Grazie infinite
Andrea

ricordando che:
head -N copia sugli sntandard output le prime n righe provenienti dallo standard input
il comando tail -n N copia sullo standard output le ultime N righe provenienti dallo standard input
il comando mkfifo file crea un oggetto fifo identificato sul file system dal nome file
il comando lsusb scrive sullo standard output la lista delle periferiche usb collegate al pc
ad esempio su un certo pc l'output di lsusb è:

$lsus
bus 002 device 004: id 03f0:1200 hewlett pakard deskjet
bus 002 device 003: id 046d:c051 logitech inc
bus 002 device 002: id 06bd:0001 agfa scan
bus 002 device 001: id 0000:0000
bus 001 device 004: id 059f:0641 Lacie
bus 001 device 002: id 0ccd:005e terratec hard drive
bus 001 device 001: id 0000:0000

dove Bus bbb device ddd: ---indica che il numero di bus e di periferica sono rispettivamente aaa e bbb
Id xxxx:yyyy This is a description --- indica che il la periferica yyyy è costituita dal produttore xxxx

Domande:
1) come si consulta il manuale in linea di lsusb?
2) Cosa fa il seguente comando ?
$ grep "Bus 001" <(lsusb)
Spiegane in dettaglio la sintassi

3) Cosa fa il comando seguente?
$ A=$(lsusb | grep "Device 001"); Echo $A

3) Come di fa avisualizzare solo le ultime due device sul bus 001 ?
4) Come si fa a scrivere sul file /home/pippo/mydevices.txt la lista delle device escludendo quelle con id 0000:0000 ?
5) suppondendo che la variabile A contenga il nome di profuttore , ad esempio logitech.inc, come si ottiene la lista delle sue devices installate ?

6) descrivere la sequenza di comandi:
$ mkfifo /tmp/fifo
$lsusb >/tmp/fifo &
$ cat /tmp/fifo

7) Come si compila il seguente codice, supponendo che sia salvato nel file main.c per ottenere un eseguibile main ?

#include <stdio.h>

int main(int argc, char ** argv) aperta graffa
char c=fgetc(stdin)
while(c!=EOF) aperta graffa // while not at the end of file
fputc(c,stdout);
c=fgetc(stdin);
chiusa graffa
chiusa graffa


8) Cosa succede eseguendo il comando
$lsusb | ./main



grazie ancora
ciao
Andrea

DaRkBoDoM
24-09-2008, 07:14
Le butto là ma non garantisco per la correttezza delle risposte.

1) man lsusb
2) mostra soltanto i device USB con Bus 001.
Sintassi: lsusb viene eseguito con STDOUT reindirizzato sullo STDIN di grep. Grep in questo caso viene utilizzato per filtrare tramite l'espressione regolare "Bus 001" l'output di lsusb
3)La stessa cosa del precedente, con la differenza che viene visualizzato soltanto il Device 001. La sintassi è diversa, sta volta viene utilizzata una pipe per redirezionare lo stdout di lsusb e l'output di grep viene immagazzinato in una variabile prima di stamparlo con echo
4) lsusb | grep -m 2 "Bus 001"
5) lsusb | grep $A
6) viene creata una named pipe "/tmp/fifo", quindi si esegue lsusb redirezionando l'output sulla pipe creata e lo si pone in background. Infine la fifo viene letta con cat. Il risultato è identico a quello ottenuto eseguendo semplicemente "lsusb".
7) gcc main.c
8) La stessa cosa che succede eseguendo un semplice "lsusb"

Ciao