Divendres de Terminal: Standard Stream

Benvinguts a un altre divendres més ...

És temps de conèixer una minúscula part de la terminal. Després de molt pensar-em vaig decidir a crear un post sobre les corrents estàndard; tot i que serà superficial, crec que és una cosa que tots han de conèixer.

Standard Stream

Standard Stream està compost per diversos canals de comunicació entre l'usuari i la terminal. Aquests «canals» Input / Output (Entrada / Sortida) mostren o capturen informació quan un comando és executat.

Diagrama ràpid sobre els standard streams.

Diagrama ràpid sobre els standard streams.

Les 3 connexions I / O són: stdin Entrada estàndard, stdout Standar output, stderr Error comú.

stdin: Standard input

L'entrada estàndard és la forma en la qual capturem informació d'un comandament, ja sigui per mitjà de canonades, redirecció, teclat, etc. El identifiquem amb el descriptor d'arxiu 0.

El descriptor és un indicador per accedir -en aquest cas- als canals d'entrada i sortida. Aquests són valors int, generalment 0, 1 i 2.

Un exemple de stdin seriosa:

sort <llistat

Pren tota la informació que es troba en llistat -en aquest cas els números escrits de manera aleatòriament, i a l'redireccionar el fitxer tal com la comanda ls, aquest ordena alfabèticament la llista numèrica. En aquest exemple els indicadors estan implícits.

stdout: Standard output

La sortida estàndard, com el seu nom indica, mostra la sortida d'una ordre per mitjà de la consola. Si escrivim ls tota la informació que ens mostra en pantalla és la sortida estàndard. És representada pel descriptor 1.

Ara intentaré exemplificar stdin i stdout amb un script escrit en bash, simplement perquè m'encanta bash hahaha. 🙂

prova.sh

#! / Bin / bash if [-t 0]; then echo "Aquestes usant stdout" elif [-t 1]; then echo "Aquestes usant stdin" else echo "Error brutal" fi

Ara una captura de pantalla que demostra com utilitzar l'script. A l'redireccionar o utilitzar un pipe amb l'script fa servir test -t per saber si només s'executa l'script stdout, i si no òbviament és stdin.

bash test.sh ls | bash test.sh bash test.sh </ etc / passwd
L'script en qüestió i les seves sortides ...

L'script en qüestió i les seves sortides ...

Recordin modificar la comanda i practicar així aprenen.

stderr: Standard error

L'Error estàndard és la manera en què els programes mostren errors o diagnòstics. És representat pel descriptor 2.

Per entendre el concepte, aquesta és la situació: quan volem guardar un error d'un comando el primer en què pensem és redireccionar la sortida a un text pla.

ls> info.txt

Això funcionaria, la informació de la comanda s'emmagatzemarà en un arxiu de text pla. Però a l'hora de guardar l'error, no ho emmagatzema, sinó que el mostra en pantalla i l'arxiu de text pla està buit.

En canvi si fem servir 2> per indicar que guardi stderr a l'arxiu:

ls foo 2> info.txt

Ara sí guardés la informació de l'error a l'arxiu de text.

La majoria de les Concha permeten emmagatzemar stderr i stdout en un sol comanda comanda amb &> on Foo és un directori inexistent

ls Descàrregues Foo &> info.txt

Aquest fitxer contindrà la informació de l'error a l'executar ls a Foo i llistarà els directoris dins de Descàrregues.

I per finalitzar ¿Que significa aquest famós 2> & 1?

Simple, redirigeix ​​stderr a stdout. Aquest & enmig de> i 1 vol dir que redireccionarà a stdout. Si no hi fos seria alguna cosa com ... «redirecciona l'error cap al fitxer 1".

I amb això és possible redireccionar:

  • stdout a un arxiu
  • stderr a un arxiu
  • stdout a stderr
  • stderr a stdout
  • stderr i stdout a un arxiu
  • entre d'altres

Això és tot per avui gent. Ens llegim i gràcies per passar. 😀


Deixa el teu comentari

La seva adreça de correu electrònic no es publicarà. Els camps obligatoris estan marcats amb *

*

*

  1. Responsable de les dades: Miguel Ángel Gatón
  2. Finalitat de les dades: Controlar l'SPAM, gestió de comentaris.
  3. Legitimació: El teu consentiment
  4. Comunicació de les dades: No es comunicaran les dades a tercers excepte per obligació legal.
  5. Emmagatzematge de les dades: Base de dades allotjada en Occentus Networks (UE)
  6. Drets: En qualsevol moment pots limitar, recuperar i esborrar la teva informació.

  1.   eliotime3000 va dir

    Interessant. Gràcies als teus tutorials és que m'està agradant Bash molt més.

  2.   Quincy Magoo va dir

    Benvolgut, interessant, però tens una errada en la següent línia:

    «I a l'redireccionar el fitxer tal com la comanda ls», hauria de ser «i a l'redireccionar el fitxer tal com la comanda sort».

    Una salutació.

  3.   Miguel va dir

    Hi ha un error a l'començament de el text, quan indiques la comanda «ls», hauria de ser «sort»:
    «Pren tota la informació que es troba en llistat -en aquest cas els números escrits de manera aleatòriament, i a l'redireccionar el fitxer tal com la comanda ls (aquí seria sort)»

    Una salutació i gràcies per compartir el teu treball

  4.   roader va dir

    Això és genial per als cron, en què vols que la sortida sigui rebutjada (/ dev / null) però els errors siguin guardats en fitxers. A més, quan faig això, sòl utilitzar la comanda date per especificar en quin moment exacte van fallar.

    Bash (sh) té aquestes eines tan desenvolupades per allò de la filosofia Unix «fes una cosa, i fes-la bé»

  5.   Lolo va dir

    Doncs jo no m'he enterao de ná

    1.    Vozidea va dir

      Jaja doncs està explicat prou bé, ¿què no has entès?