Introduccion
Interprete Bash
Para entender como funcionan las ejecuciones a traves del interprete Bash vamos a ver unos conceptos basicos:
1.Codigos de retorno de ejecucion de scripts
Todos los comandos unix tienen un codigo de finalizado de ejecucion (Status), para saber el comando del ultimo comando ejecutado escribimos
es lo mismo que $ echo “hola”| echo $? El codigo 0 indica que su status es que termino correctamente.
2.Codigos de error de ejecucion de scripts
Si por ejemplo ejecutamos algo que de error, por ejemplo un comando que no exista:
Por defecto si no se indica, el output de ejecucion se hace a stdout y stderr:- El digito 1 indica que se ha escrito en stdout
- El digito 2 indica que se ha escrito en stderr
Por eso vemos que indica que se ha escrito en la consola normal y por detras tambien se ha escrito en stderr.
3.Escribiendo el output de ejecucion a un archivo
Podemos escribir el resultado de ejecucion en un archivo con >
Pero al > podemos indicar que tipo de salida queremos, por ejemplo:stdout y stderr
Como recuerdas 1 perteneces stdout y 2 perteneces a stderr
Por lo tanto sii escribimos 1> nos escribira lo que fuera a stout en el archivo output.txt
Si por el contrario lo que queremos capturar es el error usariamos 2 (sterr) El archivo esta vacio,ya que la ejecucion no escribio en sterr ya que no hubo error.4. /dev/null , ¿Que es?
/dev/null es un archivo que tienen todos los sistemas unix y que es un archivo que se descarta automaticamente su contenido.
Es muy util para leer la ejecucion de comandos (que hemos visto anteriormente)
Por ejemplo si escribo un comando propenso a error,
$ grep -r hello /sys/
grep: /sys/devices/system/clockevents/power/autosuspend_delay_ms: Error de entrada/salida
grep: /sys/devices/system/clockevents/clockevent6/unbind_device: Permiso denegado
....
....
etc..
Tambien podemos escuchar solo los resultados negativos haciendo que los resultados correctos (los que irian a stout vayan a /dev/null y asi los descartamos), por ejemplo:
Si queremos que todas las salidas (stout y sterr sean ignoradas podemos usar el wildcard $> )
Podemos probar una url sin guardar el cambio, usando la salida a /dev/null por ejemplo
No consumira espacio en disco ya que todo ira a dev/null