Salida de un script

Para coger la salida de un script, se hace con el signo flecha (>) y doble flecha (»)

  - > Crea el fichero de nuevo. Si existe, lo borra
  - >> Añade al final del fichero la salida

Ejemplo:

# ls
fichero1.txt  fichero2.txt  fichero3.txt  fichero4.txt

Lo redirejimos:

# ls > ls.txt
#
# cat ls.txt
fichero1.txt
fichero2.txt
fichero3.txt
fichero4.txt
ls.txt

Hay otra salida que es el error. Es decir, si hacemos ls de un fichero que no existe nos dará error:

# ls jur.txt
ls: cannot access 'jur.txt': No such file or directory

Si hacemos la redirección, nos aparece en pantalla y no lo graba en el fichero. El fichero ls.log está vacio:

# ls jur.txt > ls.log
ls: cannot access 'jur.txt': No such file or directory

# cat ls.log
#

La salida error (stderr) es la 2 y la salida estándar (stdout) es la 1. Podemos redirigir la salida de error a otro fichero:

# ls jur.txt > ls.log 2>ls_error.log
#
# cat ls_error.log
ls: cannot access 'jur.txt': No such file or directory

Para juntar todo en el mismo log:

# ls jur.txt > ls.log 2>&1
#

# cat ls.log
ls: cannot access 'jur.txt': No such file or directory

Nombre de Ficheros Una buena idea es poner fecha en las líneas de código o en un los nombres. Con date:

date +%Y%m%d_%H%M%S
20210222_101819

Crontab

El crontab usa path relativos, variables de entornos propias y a veces no sabemos porque falla. Es interesante redirigir toda la salida a un fichero de log al principio para controlarlo:

crontab -l
*/1  *  *  *  *  script.sh >> /home/usuario/crontab.log 2>&1