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.
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.
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
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. 😀
Interessant. Gràcies als teus tutorials és que m'està agradant Bash molt més.
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ó.
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
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é»
Doncs jo no m'he enterao de ná
Jaja doncs està explicat prou bé, ¿què no has entès?