Terminal venerdì: Standard Stream

Benvenuti a un altro venerdì ...

È ora di conoscere una piccola parte del terminal. Dopo aver riflettuto a lungo ho deciso di creare un post sul flussi standard; Anche se sarà superficiale, penso che sia qualcosa che tutti dovrebbero sapere.

Stream standard

Stream standard È costituito da diversi canali di comunicazione tra l'utente e il terminale. Questi "canali" di ingresso / uscita visualizzano o acquisiscono informazioni quando viene eseguito un comando.

Diagramma rapido sui flussi standard.

Diagramma rapido sui flussi standard.

Le 3 connessioni I / O sono: stdin Input standard, stdout Uscita standard, stderr Errore standard.

stdin: input standard

L'input standard è il modo in cui acquisiamo le informazioni da un comando, tramite pipe, reindirizzamento, tastiera, ecc. Lo identifichiamo con il descrittore di file 0.

Il descrittore è un indicatore per accedere, in questo caso, ai canali di ingresso e uscita. Questi sono valori int, solitamente 0, 1 e 2.

Un esempio di stdin potrebbe essere:

sort <listato

Prende tutte le informazioni presenti nella lista - in questo caso i numeri scritti in modo casuale - e quando reindirizza il file al comando ls, ordina alfabeticamente la lista numerica. In questo esempio i flag sono impliciti.

stdout: output standard

L'output standard, come suggerisce il nome, mostra l'output di un comando tramite la console. Se scriviamo ls, tutte le informazioni che ci mostra sullo schermo sono lo standard output. È rappresentato dal descrittore 1.

Ora cercherò di istanziare stdin e stdout con uno script scritto in bash, semplicemente perché amo bash hahaha. 🙂

prova.sh

#! / bin / bash if [-t 0]; quindi echo "Stai usando stdout" elif [-t 1]; then echo "Stai usando stdin" else echo "Errore brutale" fi

Ora uno screenshot che mostra come utilizzare lo script. Quando si reindirizza o si utilizza una pipe con lo script use prova -t per sapere se viene eseguito solo lo script stdout, e in caso contrario è ovviamente stdin.

bash test.sh ls | bash test.sh bash test.sh </ etc / passwd
Lo script in questione e le sue uscite ...

Lo script in questione e le sue uscite ...

Ricorda di modificare il comando ed esercitati in modo da imparare.

stderr: errore standard

L'errore standard è il modo in cui i programmi visualizzano gli errori o la diagnostica. È rappresentato dal descrittore 2.

Per capire il concetto, questa è la situazione: quando vogliamo salvare un errore di comando, la prima cosa a cui pensiamo è reindirizzare l'output in testo normale.

ls> info.txt

Ciò funzionerebbe, le informazioni sul comando verranno archiviate in un file di testo normale. Ma quando si salva l'errore, non lo memorizza, ma lo mostra sullo schermo e il file di testo normale è vuoto.

Se invece usiamo 2> per indicare di salvare stderr nel file:

ls pippo 2> info.txt

Ora salverà le informazioni sull'errore nel file di testo.

Più Conchiglia consente di memorizzare stderr e stdout in un singolo comando comando con &> dove Foo è una directory inesistente

ls Download Foo &> info.txt

Questo file conterrà le informazioni sull'errore durante l'esecuzione di ls in Foo e elencherà le directory sotto Download.

E infine, cosa lo rende famoso 2> e 1?

Semplice, reindirizza stderr a stdout. Quello & nel mezzo di> e 1 significa che reindirizzerà a stdout. Se non fosse lì, sarebbe qualcosa come ... "reindirizza l'errore al file 1".

E con questo è possibile reindirizzare:

  • stdout in un file
  • stderr in un file
  • da stdout a stderr
  • da stderr a stdout
  • stderr e stdout in un file
  • in particolare

Questo è tutto per le persone di oggi. Leggiamo e ti ringraziamo per essere passato. 😀


Lascia un tuo commento

L'indirizzo email non verrà pubblicato. I campi obbligatori sono contrassegnati con *

*

*

  1. Responsabile dei dati: Miguel Ángel Gatón
  2. Scopo dei dati: controllo SPAM, gestione commenti.
  3. Legittimazione: il tuo consenso
  4. Comunicazione dei dati: I dati non saranno oggetto di comunicazione a terzi se non per obbligo di legge.
  5. Archiviazione dati: database ospitato da Occentus Networks (UE)
  6. Diritti: in qualsiasi momento puoi limitare, recuperare ed eliminare le tue informazioni.

  1.   eliotime3000 suddetto

    Interessante. Grazie ai tuoi tutorial, mi piace molto di più Bash.

  2.   Quincy magoo suddetto

    Gentile, interessante, tuttavia hai un errore nella riga seguente:

    "E quando si reindirizza il file al comando ls", dovrebbe essere "e quando si reindirizza il file al comando sort".

    Saluti.

  3.   Miguel suddetto

    C'è un errore all'inizio del testo, quando indichi il comando "ls", dovrebbe essere "sort":
    "Prende tutte le informazioni che sono nell'elenco -in questo caso i numeri scritti in modo casuale-, e quando reindirizza il file al comando ls (qui sarebbe sort)"

    Saluti e grazie per aver condiviso il tuo lavoro

  4.   vagabondo suddetto

    Questo è ottimo per cron, dove vuoi che l'output venga cancellato (/ dev / null) ma gli errori siano memorizzati nei file. Inoltre, quando lo faccio, di solito uso il comando date per specificare esattamente quando hanno fallito.

    Bash (sh) ha questi strumenti così sviluppati dalla filosofia Unix "fai una cosa e fallo bene"

  5.   Lolo suddetto

    Ebbene non ho scoperto niente

    1.    Voce suddetto

      Haha bene è spiegato abbastanza bene, cosa non hai capito?