Ajouter une ligne à un fichier en script bash

Bonjour,
j’ai un cron qui tourne et j’aimerais lui dire d’à chaque fois écrire son résultat sur un log dédié.
Quel commande bash utiliser pour ouvrir un fichier et y rajouter une ligne?

echo "mon texte qui va bien">>/mon/fichier/de/log

1 J'aime

merci !

en parlant d’echo comment on vide un fichier en ligne de commande?
j’ai essayé

echo “”>>monlog.log

mais ca ne fonctionne pas

Non alors
«>>» = concaténation
«>» = remplacement

Du coup pour vider un fichier tu peux faire
echo -n >/mon/fichier/a/ecraser

Le «-n» est là pour éviter à écho de faire un retour à la ligne et donc d’avoir une ligne vide dans ton fichier.

D’ailleurs c’est la commande standard pour créer un fichier, utiliser «touch» ou «vi» est un détournement de leur utilisation normal.

1 J'aime

Tu dois utiliser “truncate” c’est fait pour ça:
$ truncate -s0 monfichier.log

michel@debg53sw:~$ ls -la aeff
-rw-r--r-- 1 michel michel 11 août  15 11:09 aeff
michel@debg53sw:~$ > aeff
michel@debg53sw:~$ ls -la aeff
-rw-r--r-- 1 michel michel 0 août  15 11:09 aeff
michel@debg53sw:~$ 

Donc, il suffit de faire :

> /mon/fichier/a/mettreAzéro

si tu veux aller plus loin pour gérer les logs, je te conseille d’utiliser les outils système. Tu peux meme packager ton outil pour faciliter son déploiement et la config des autres outils.

les outils à configurer sont:

  • Pour écrire dans syslog il y a la commande logger.
  • pour séparer le log tu peux configurer rsyslog
  • logrotate qui est pas mal pour faire tourner les logs et définir combien de temps de sauvegarde tu souhaites.
  • si tu developpe en Perl, il y a la lib syslog pour l’écriture de log ;o)

amuses toi bien ;o)

1 J'aime