Canali
![]() Ultime news
![]() Ultimi articoli
![]() Le ultime dal Forum |
![]() CorrelatiNoteNota [1]: i descrittori di file non devono essere confusi con le unità floppy (/dev/fd0, /dev/fd1...) in quanto hanno la loro directory esclusiva in /dev (dev/fd). Nota [2]: i loro nomi sono puramente riferiti all'utilizzo: stdin è il flusso di dati in entrata in un programma dallo stdout del processo precedente nella pipeline; stdout si riferisce ai flussi di dati in uscita, stderr raggruppa i messaggi d'errore di un programma. Nota [3]: solitamente tutti i programmi UNIX hanno un descrittore in entrata (stdin) e due descrittori in uscita (stdout e stderr). Nota [4]: è probabile che il processo in esame abbia più di un PID (Process ID, identificatore di processo), quindi se ne può prendere in considerazione uno solo con cd /proc/$(pidof <programma> | cut -d' ' -f1)/fd. Nota [5]: casomai doveste subire gli effetti del garbled terminal vi basterà invocare reset da riga di comando. Nota [6]: potete trovare un ulteriore esempio di pipe in questo articolo. Nota [7]: l'output di gzip è un archivio gzip, quindi è sensato dargli un'estensione appropriata. Ciononostante il tipo di file non è determinato dall'estensione, ma dal suo contenuto, e potete dargli l'estensione che più vi piace, ma sappiate che programmi come browser GUI di cartelle riconoscono i tipi di file dall'estensione. Nota [8]: la stessa cosa si sarebbe potuta fare con un'unica invocazione di basename, ovvero:
Così facendo basename filtra automaticamente l'estensione, mentre sed si limita a prendere tutte le stringhe (in gergo pattern) che corrispondono a .ko e le cancella. Questo può causare la cancellazione di pattern che non appartengono all'estensione. Tuttavia, usando solo basename non avremmo avuto il pipe che ci serviva per la dimostrazione... Nota [9]: il simbolo di redirezione riversa l'output in un file:
Il simbolo di redirezione >> (due "maggiore" in fila) riversa l'output nello stesso modo, ma se il file esiste il flusso di dati proveniente dall'ultimo programma viene accodato ai contenuti già presenti. Nota [10]: per chiarimenti sulla struttura di $(...) fate riferimento a questo articolo. Nota [11]: è possibile reindirizzare il contenuto di un file descriptor in un altro, usando il costrutto N>&M, dove N è il descrittore da copiare e M è il descrittore di destinazione. Il costrutto copia il contenuto del descrittore N nel descrittore M: così facendo è possibile copiare i messaggi da stderr (descrittore 2) in stdout (descrittore 1) di un programma, salvandone anche i messaggi d'errore (che comunemente viaggiano in stderr) in un file con una redirezione: programma 2>&1 >file.log L'output standard e i messaggi d'errore vengono concatenati e riversati nel file file.log per una successiva consultazione. Ciò è molto utile per confrontare errori particolari o per fare debug di un programma. In particolare, esiste una differenza tra N>&M e N&>M, ma è molto sottile ed è essenzialmente irrilevante per un utente a cui non interessino i particolari delle redirezioni. ![]() Appendice: "here documents" Segnala ad un amico |
© Copyright 2025 BlazeMedia srl - P. IVA 14742231005