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 :
Ce qui marchais bien jusqu'à ce que je fasse :
date +'%FT%T%:z Je blablablablablabla' >> xxxx.txt
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 benja . Évalué à 0.
[^] # Re: Aide pour écrire lignes de texte dans un fichier.txt depuis un terminal
Posté par fearan . É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
[^] # Re: Aide pour écrire lignes de texte dans un fichier.txt depuis un terminal
Posté par fearan . Évalué à 4.
grr pb de mise en forme il faut remplacer
commande
par `commande` (raison de plus pour utiliser $(), ça passe plus facilement dans les citations, wiki, discussions…Il ne faut pas décorner les boeufs avant d'avoir semé le vent
# Merci.
Posté par arnauld . Évalué à 1.
Merci, c'est ça.
arnauld
[^] # Re: Merci.
Posté par benja . É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:
que l'on peut facilement mettre sous forme d'alias
[^] # Re: Merci.
Posté par MicP . Évalué à 2.
Bonjour
Et en utilisant le format de date qui était dans le premier message de ce fil,
ça donnerait :
… que l'on pourrait aussi écrire comme ça :
[^] # Re: Merci.
Posté par wismerhill . É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):
[^] # Re: Merci.
Posté par arnauld . Évalué à 1.
Merci.
arnauld
[^] # Re: Merci.
Posté par arnauld . É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 NBaH . É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 arnauld . É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 Gil Cot ✔ (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 Gil Cot ✔ (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 NBaH . Évalué à 1.
il est plus facile de traiter une tabulation comme un séparateur de champs que sept espaces.
[^] # Re: Merci.
Posté par Gil Cot ✔ (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 NBaH . É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 newhotsite . É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.