Forum Linux.débutant Aide pour écrire lignes de texte dans un fichier.txt depuis un terminal

Posté par  . Licence CC By‑SA.
Étiquettes : aucune
0
10
oct.
2021

Bonsoir,

Je souhaite ajouter régulièrement une ligne de texte à un fichier .txt depuis mon terminal.

J'avais commencé avec :
echo -e date +%FT%T%:z\Je blablablablablabla" >> xxxx.txt

Mais j'obtiens :

2021-10-08T17:35:47+01:00Je blablablablablabla

Hors il me faut 7 espaces entre la date et le début du texte que j'écris.

Puis j'ai essayé avec :

date +'%FT%T%:z Je blablablablablabla' >> xxxx.txt
Ce qui marchais bien jusqu'à ce que je fasse :

date +'%FT%T%:z Cette fois j'ai choisi d'héberger mon fichier xxxx.txt sur ma machine' >> xxxx.txt

Et là j'ai une erreur :

date: extra operand ‘choisi’
Try 'date --help' for more information.

Il semble donc que je doive protéger la partie texte Cette fois j'ai choisi d'héberger mon fichier xxxx.txt sur ma machine mais comment faire ?

Merci

  • # Aide pour écrire lignes de texte dans un fichier.txt depuis un terminal

    Posté par  . Évalué à 0.

    echo "`date`" "      " "Hello arnauld's world"
    
    • [^] # Re: Aide pour écrire lignes de texte dans un fichier.txt depuis un terminal

      Posté par  . Évalué à 6.

      plutôt que les commande je préfère conseiller $(commande)

      1) je trouve ça plus lisible (et de loin!)
      2) c'est nettement plus facile à imbriquer (même si c'est rarement une bonne idée)
      3) ça ne demande pas des contorsion sur un clavier azerty et peut même être tapé avec un seul doigt!

      Il ne faut pas décorner les boeufs avant d'avoir semé le vent

  • # Merci.

    Posté par  . Évalué à 1.

    Merci, c'est ça.

    arnauld

    • [^] # Re: Merci.

      Posté par  . Évalué à 2. Dernière modification le 11 octobre 2021 à 05:48.

      Sorry je me suis trompé, echo met une espace entre chaque arguments, donc cela fait 9… Le plus simple, c'est encore:

      printf "%s%7s%s\n" "`date`" "" "ligne"
      

      que l'on peut facilement mettre sous forme d'alias

      alias pp='printf "%s%7s%s\n" "`date`" ""'
      pp "hello"
      
      • [^] # Re: Merci.

        Posté par  . Évalué à 2.

        Bonjour

        Et en utilisant le format de date qui était dans le premier message de ce fil,
        ça donnerait :

        alias pp='printf "%s%7s%s\n" "`date +'%FT%T%:z'`" ""'

        … que l'on pourrait aussi écrire comme ça :

        alias pp='printf "%s%7s%s\n" "$(date +'%FT%T%:z')" ""'
        • [^] # Re: Merci.

          Posté par  . Évalué à 5.

          Note que si tu utilise bash, sa commande interne printf (qui remplace celle installée sur le système) a une extension pour générer un datetime.
          Du coup ça donne (sous forme de fonction bash, pour pouvoir mettre tout le $* en un unique paramètre du printf):

          pp() {
            printf '%(%FT%T:z)T%7s%s\n' -1 '' "$*"
          }
        • [^] # Re: Merci.

          Posté par  . Évalué à 1.

          Merci.

          arnauld

      • [^] # Re: Merci.

        Posté par  . Évalué à 1.

        Merci. Je me demandais justement comment mettre cela dans un alias, j'ai donc rajouté dans mon .zshrc :

        alias pp='printf "%s%7s%s\n" "`date +%FT%T%:z`" "" >> twtxt.txt'

        Puis je fais un autre alias pour uploader ce fichier texte sur un serveur :

        alias twtr="rsync -a ~/twtxt.txt root@xxx.xxx.x.xx:/var/www/xxxx/www/twtxt.txt"

        C'est pour un fichier texte auquel je rajoute des lignes chaque jour.

        arnauld

        • [^] # Re: Merci.

          Posté par  . Évalué à 2.

          mais, pourquoi 7 espaces et pas une tabulation ?

          $ alias pp="date +\"%FT%T%:z%tbla bl'a\" >>/tmp/txt.txt"

          et, pourquoi un alias et pas une fonction ?

          $ pp() { date +"%FT%T%:z%t$@" >>/tmp/txt.txt;}
          $ pp "bl'a bl'a"

          • [^] # Re: Merci.

            Posté par  . Évalué à 1.

            Pourquoi ?

            Parce que je ne sais pas faire autrement, mes connaissances sont limitées !! :-)

            Je vais tenter la tabulation. Quant à la "fonction" plutôt qu'un alias, c'est quoi une fonction ?

            Merci.

            arnauld

            • [^] # Re: Merci.

              Posté par  (site web personnel, Mastodon) . Évalué à 3.

              Une fonction c'est ce qu'il a donné en exemple. L'un des avantages est que l'argument n'est pas pour la fin, comme dans l'alias. Un autre des avantages est qu'on peut passer plusieurs arguments à une fonction et faire des traitements plus conséquents, comme dans un script. (dans une fonction tu peu utiliser une structure if alors que l'alias est juste un remplacement simple.)
              Après tout va dépendre du besoin. Ici, je pense qu'un alias fait tout autant l'affaire.

              “It is seldom that liberty of any kind is lost all at once.” ― David Hume

          • [^] # Re: Merci.

            Posté par  (site web personnel, Mastodon) . Évalué à 2. Dernière modification le 19 octobre 2021 à 03:08.

            Attention que la tabulation est la tabulation, pas sept espaces… L'en ne remplace pas l'autre et ils répondent pas aux mêmes besoins…

            “It is seldom that liberty of any kind is lost all at once.” ― David Hume

            • [^] # Re: Merci.

              Posté par  . Évalué à 1.

              il est plus facile de traiter une tabulation comme un séparateur de champs que sept espaces.

              • [^] # Re: Merci.

                Posté par  (site web personnel, Mastodon) . Évalué à 2.

                Il y a beaucoup de cas professionnels (en tout cas dans le secteur bancaire, pour ce que j'en ai vu, avec des formats positionnels) où les tabulations sont proscrites/dangereuses. Dans beaucoup d'autres cas (les fichiers de logs du monde Unix) on préfère l'espace à la tabulation sans justification particulière (du moins à ma connaissance.)
                Bref, je disais juste qu'il ne faut pas généraliser et qu'il faut plus d'informations (sur son cas d'usage) pour conseiller les tabulations ou pas.

                “It is seldom that liberty of any kind is lost all at once.” ― David Hume

                • [^] # Re: Merci.

                  Posté par  . Évalué à 1.

                  "formats positionnels" comme dans "champs à longueur fixe" ?
                  alors, le nombre d'espaces est variable.

                  plus d'infos, oui.
                  c'est pourquoi j'interroge,
                  et propose un format qui sera plus facilement réutilisable.
                  j'aurais aussi pu proposer un CSV, mais vu qu'il était question d'espacer les données…

                  les journaux systèmes, c'est un m.rdier sans nom.

  • # Commentaire supprimé

    Posté par  . Évalué à 0. Dernière modification le 16 octobre 2021 à 10:17.

    Ce commentaire a été supprimé par l’équipe de modération.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.