Els que utilitzem habitualment el terminal, ja sigui per a treballar-hi directament o per a crear-nos les nostres shells, utilitzem sovint el redireccionament de la sortida, per mitjà del caràcter «>» per fer que aquesta se’ns escrigui en un fitxer. És a dir, executem el següent:
ordre_terminal > nom_fitxer
Per mitjà d’aquest tipus de redirecció, la sortida de l’ordre s’escriurà en el fitxer que li indiquem, però ja no se’ns mostrarà en el terminal. Però, a vegades, ens pot interessar que una shell que escrivim ens mostri pel propi terminal la sortida d’una certa ordre i que, a més, ens la deixi en un fitxer. Això ho aconseguim per mitjà de l’ordre «tee», que utilitzem d’aquesta manera:
ordre_terminal | tee nom_fitxer
En aquest cas, la sortida de l’ordre que executem es mostrarà en el terminal i també el veurem escrit en el fitxer que li indiquem. Per mitjà del «tee», la sortida s’escriurà directament sobre el fitxer, esborrant el contingut que tingués anteriorment. Si el que volem és que la sortida de l’ordre s’afegeixi al final del fitxer, només cal afegir el modificador «-a». És a dir:
ordre_terminal | tee -a nom_fitxer
Documentació | Ordres de terminal
3 comments
una comanda que no coneixia, molt util, continueu aixi
Una ordre molt útil!!! No la coneixia, tot i que sí que l’havia vista abans. Per cert, escric des de l’android al tren anant cap a Castelló!
Un problema de tee és que treballa amb la sortida estàndard d’un programa (stdout). Si volem que actuï de la mateixa manera amb els missatges d’error, caldrà redirigir els missatges d’error a stdout. És a dir:
ordre_terminal 2>&1 | tee nom_fitxer
“2>&1” indica que volem que la segona sortida (stderr) es redirigeixi a la primera (stdout) aconseguint l’efecte desitjat.