Bonjour à tous,
Voici mon problème, en voulant écrire un script bash.
Je précise que je débute…
Mon but est d'insérer un exercice, disons exo.tex (qui n'a pas de préambule), à la fin d'un fichier total.tex
Si le fichier existe déjà (parce que j'y aurais déjà inséré quelques exos), je voudrais insérer mon texte juste avant la fin du fichier repérée par:
%%% fin du fichier %%%
Conclusion
\end{document}
sinon, je voudrais créer le fichier total.tex, y mettre le préambule
\documentclass{article}
différents packages
\begin{document}
insérer mon exo.tex
puis écrire la fin du fichier.
%%% fin du fichier %%%
Conclusion
\end{document}
J'ai déjà cherché des solutions un peu partout, mais j'ai beaucoup de mal à manipuler les %(pour supprimer la fin d'une chaîne), sed (je n'y comprends rien…).
Merci de votre aide et de votre compréhension
# Quelques idées
Posté par vmagnin (site web personnel) . Évalué à 3.
Pour afficher sur la sortie standard le fichier total.tex sans les trois dernières lignes :
Pour ajouter exo.tex à la fin d'un fichier total2.tex :
Plus qu'à faire la même chose avec un fichier contenant le suffixe :
En liant un peu tout ça tu devrais y arriver.
[^] # Re: Quelques idées
Posté par zurvan . Évalué à 3.
Il peut effectivement faire cela (qui fonctionnera dans le cas général, avec un autre type de fichier), ou utiliser plus simplement la commande tex "input" :
Il existe également des préprocesseur pour LaTeX, qui seront peut-être plus pratiques à manipuler.
« Le pouvoir des Tripodes dépendait de la résignation des hommes à l'esclavage. » -- John Christopher
[^] # Re: Quelques idées
Posté par vuolsicosi . Évalué à 1.
Merci pour ta réponse,
je connais \input effectivement, mais c'est seulement que c'est quelque chose que je voudrais automatiser.
Je dois faire régulièrement des automatismes en première STMG (pour les connaisseurs).
Du coup, je crée des exos rangés dans différents dossiers (evolution, derivation…), et je veux écrire ce script pour sélectionner simplement ces exos un par un, et les concaténer dans mon fichier automatisme_date.
Je trouve ça plus rapide que réécrire mon document avec son préambule, aller chercher mes exos qui sont dans différents dossiers, etc.
Et puis comme ça, ça me fait apprendre la programmation en bash, il n'est jamais trop tard :)
[^] # Re: Quelques idées
Posté par vuolsicosi . Évalué à 1.
Voilà mon code pour le moment:
Si le fichier existe déjà, ça ne bug pas, mais il ne supprime pas les 5 dernières lignes
Si le fichier n'existe pas encore, ça bug, avec le message:
$'\documentclass{beamer}
\usepackage{différents packages}
Il y a des % et des # dans ce texte, je ne sais pas
si c'est important ' : commande introuvable
[^] # Re: Quelques idées
Posté par vuolsicosi . Évalué à 1.
Bon, j'ai déjà compris une de mes bêtises.
Il ne fallait pas mettre
head -n -5 $file >> $file
mais
head -n -5 $file > $file
Il me reste le problème de la commande introuvable…
[^] # Re: Quelques idées
Posté par totof2000 . Évalué à 2.
J'ai souvenir de comportements tranges lorsque je faisais ça ….
En shell il vaut mieux éviter d'écraser un fichier en cours de traitement …
[^] # Re: Quelques idées
Posté par vmagnin (site web personnel) . Évalué à 1.
Pourquoi un double slash devant bin ?
[^] # Re: Quelques idées
Posté par vuolsicosi . Évalué à 1.
C'est une erreur de ma part, mais ici, ça ne change rien.
[^] # Re: Quelques idées
Posté par vmagnin (site web personnel) . Évalué à 1. Dernière modification le 12 mars 2020 à 10:55.
Pour éviter à la fois les problèmes liés aux éventuels espaces dans les noms de fichier et les subtilités du shell, il est conseillé d'écrire
"${file}"
plutôt que$file
. Même si ici ça marche, il vaut mieux prendre de bonnes habitudes.[^] # Re: Quelques idées
Posté par totof2000 . Évalué à 2.
Bof …
moi je ferais un truc du genre cat exo1.txt exo2.txt > total;txt.
# echoes
Posté par vmagnin (site web personnel) . Évalué à 1.
il manque le echo devant "\documentclass{beamer}
[^] # Re: echoes
Posté par vuolsicosi . Évalué à 1.
C'est ça, merci beaucoup !
J'avoue que je ne comprends pas pourquoi, je croyais que echo était là pour visualiser le contenu d'une variable, du coup, je pensais qu'en mettant une chaîne de caractère, il n'y en avait pas besoin
[^] # Re: echoes
Posté par vuolsicosi . Évalué à 1.
Ah bah non, ça ne marche pas encore…
Si le fichier n'existe pas, c'est parfait.
Si le fichier existe, il n'y a pas le préambule
[^] # Re: echoes
Posté par vuolsicosi . Évalué à 1.
Bon, désolé pour le harcèlement, je crois que j'ai trouvé:
Je ne devais pas mettre
head -n -5 $file >> $file
mais
head -n -5 $file >> file
Merci à tous pour cette aide précieuse
[^] # Re: echoes
Posté par vmagnin (site web personnel) . Évalué à 1.
Oui,
$file
désigne le contenu de la variablefile
.Et le
file
de droite est un fichier qui s'appellefile
.[^] # Re: echoes
Posté par vmagnin (site web personnel) . Évalué à 1.
Non, echo sert à afficher une ligne de texte, éventuellement contenue dans une variable.
[^] # Re: echoes
Posté par totof2000 . Évalué à 2.
Tout à fait et man est une commande qui permet de savoir ce que fait une commande (exemple de la page man d'echo ). tu peux faire man man pour savoir comment utiliser la commande man (une commande récursive … ;) ).
# Suppression de la fin d'un fichier
Posté par Asham . Évalué à 1. Dernière modification le 17 mars 2020 à 09:34.
Bonjour,
La suppression de fichier est une action qui consiste à effacer un fichier d’un système de fichiers. La plupart du temps, les fichiers sont supprimés car ils contiennent des données redondantes, inutiles, sensibles ou compromettantes. Les autres causes pouvant également mené à la suppression de fichiers sont la nécessité de libérer de l’espace ou encore une fausse manœuvre.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.