# Ajout dans un fichier en bash

**URL:** <https://www.debian-fr.org/t/ajout-dans-un-fichier-en-bash/24981>\
**Category:** Programmation\
**Created:** [Février 20, 2016, 9:34 UTC](https://www.debian-fr.org/t/ajout-dans-un-fichier-en-bash/24981 "2016-02-20T21:34:21Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![Berillions](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/b/5f8ce5/32.png) [@Berillions](https://www.debian-fr.org/u/Berillions)\
**Post date:** [Février 20, 2016, 9:34 UTC](https://www.debian-fr.org/t/ajout-dans-un-fichier-en-bash/24981/1 "2016-02-20T21:34:21Z")

</div>

Bonsoir,

Malgré ce titre peu explicite, je vais vous faire un petit topo.  
Voilà, je suis actuellement scripteur pour PlayOnLinux (-\> Vous savez ce que c’est tout de même).  
J’ai actuellement fini d’écrire les scripts pour Mass Effect ainsi que Mass Effect 2.  
Les scripts des jeux étant codés en Bash.

Le problème survient pour le script des launchers qui sont de cette forme là :

`#!/bin/bash
PATH="/home/berillions/.PlayOnLinux/WineVersions/1.1.38-ME/usr/bin/:$PATH"
export WINEPREFIX="/home/berillions/.PlayOnLinux/wineprefix/ME"
export WINEDEBUG="-all"
cd "/home/berillions/.PlayOnLinux/wineprefix/ME/drive_c/Program Files/Mass Effect/Binaries"
wine "MassEffect.exe" $@`

Il faut que j’édite ce fameux launcher lorsque je suis encore dans le script d’installation afin de rajouter une option avant “wine”. En quelque sorte, cela donnerait :

`#!/bin/bash
PATH="/home/berillions/.PlayOnLinux/WineVersions/1.1.38-ME/usr/bin/:$PATH"
export WINEPREFIX="/home/berillions/.PlayOnLinux/wineprefix/ME"
export WINEDEBUG="-all"
cd "/home/berillions/.PlayOnLinux/wineprefix/ME/drive_c/Program Files/Mass Effect/Binaries"
WINEFORCEMOUSEWARP=yes wine "MassEffect.exe" $@`

Ma question est :  
Comment coder l’édition d’un fichier bash en bash ( ![:smt005](https://www.debian-fr.org/uploads/default/original/1X/cdd45e7dd754015ac5291329b843a2851a0d4fe8.gif) ) pour rajouter une option à un certain endroit d’une certaine ligne…

PS : J’ai essayé d’être le plus clair possible… ![:mrgreen:](https://www.debian-fr.org/uploads/default/original/1X/cc83e9b583138e48ff45f96609046b06d06c7f9d.gif "Mr. Green")  
Et pour les curieux, ME et ME2 ont besoin de cette option pour enlever le problème de la souris

Merci

---

<div class="post-metadata">

**Author:** ![thuban](https://www.debian-fr.org/user_avatar/www.debian-fr.org/thuban/32/4177_2.png) [@thuban](https://www.debian-fr.org/u/thuban)\
**Post date:** [Février 20, 2016, 9:34 UTC](https://www.debian-fr.org/t/ajout-dans-un-fichier-en-bash/24981/2 "2016-02-20T21:34:22Z")

</div>

Cette option est obligatoire j’imagine? Alors pourquoi ne pas l’ajouter simplement à la ligne de commande wine? En fait, je ne comprends pas pourquoi tu dois rajouter quelque chose à ton script, si cela doit-être fait à chaque fois. Autant le mettre pour de bon, et on n’en parle plus.

---

<div class="post-metadata">

**Author:** ![Berillions](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/b/5f8ce5/32.png) [@Berillions](https://www.debian-fr.org/u/Berillions)\
**Post date:** [Février 20, 2016, 9:34 UTC](https://www.debian-fr.org/t/ajout-dans-un-fichier-en-bash/24981/3 "2016-02-20T21:34:24Z")

</div>

Si cela pouvait être si simple. En faite, cette option option est obligatoire pour ces 2 jeux MAIS pas pour tous les jeux.

```auto

```

C’est cette simple ligne qui crée le bout de code dans le script du launcher. La seule solution est donc d’éditer ce launcher après sa création.

---

<div class="post-metadata">

**Author:** ![Ashgenesis](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/a/57b2e6/32.png) [@Ashgenesis](https://www.debian-fr.org/u/Ashgenesis)\
**Post date:** [Février 20, 2016, 9:34 UTC](https://www.debian-fr.org/t/ajout-dans-un-fichier-en-bash/24981/4 "2016-02-20T21:34:24Z")

</div>

Bonsoir,

Donc si j’ai bien compris le batch est créé et tu veux le modifier.

Pourquoi ne pas parcourir le fichier et si tu rencontre la ligne que tu souhaite modifier tu la change et tu continue ton action

[commentcamarche.net/faq/5027 … -par-ligne](http://www.commentcamarche.net/faq/5027-comment-lire-un-fichier-ligne-par-ligne)

[Algo]  
Tu récupère le path du fichier  
Tu le parcours ligne par ligne  
Chaque ligne tu la colle dans un autre fichier  
Si tu tombe sur ta ligne à modifier tu la modifie  
Tu supprime le launcher  
tu le remplace par le nouveau que tu as créé ligne par ligne.  
[/Algo]

Il y a sûrement plus simple mais en attendant cela peux fonctionner.

---

<div class="post-metadata">

**Author:** ![MisterFreez](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/m/bb73d2/32.png) [@MisterFreez](https://www.debian-fr.org/u/MisterFreez)\
**Post date:** [Février 20, 2016, 9:34 UTC](https://www.debian-fr.org/t/ajout-dans-un-fichier-en-bash/24981/5 "2016-02-20T21:34:27Z")

</div>

Dans l’univers unix ou gnu, il existe des outils puissants. Puis il existe des outils qui dépassent l’entendement par leur puissance. Dans cette seconde catégorie je place des choses comme zsh, perl, awk ou bien sur sed :  
Avec sed il suffit de faire ça :

```auto

```

Il peut être raccourcis comme ça :

```auto

```

Il est possible de faire ça sur un flux si c’est plus agréable. Mais d’avis qu’il serais intéressant de revoir l’architecture pour que chaque jeu puisse déclarer ses options qui seraient intégrées au lanceur.

Ça fait plaisir d’aider à contribuer à un logiciel d’une relative envergure 🙂

---

<div class="post-metadata">

**Author:** ![Berillions](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/b/5f8ce5/32.png) [@Berillions](https://www.debian-fr.org/u/Berillions)\
**Post date:** [Février 20, 2016, 9:34 UTC](https://www.debian-fr.org/t/ajout-dans-un-fichier-en-bash/24981/6 "2016-02-20T21:34:29Z")

</div>

Merci beaucoup MisterFreez, cela fonctionne très bien 😉
