# Création d'un script

**URL:** <https://www.debian-fr.org/t/creation-dun-script/84366>\
**Category:** Programmation\
**Created:** [Avril 10, 2021, 12:22 UTC](https://www.debian-fr.org/t/creation-dun-script/84366 "2021-04-10T00:22:55Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![Daher](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/d/3da27b/32.png) [@Daher](https://www.debian-fr.org/u/Daher)\
**Post date:** [Avril 10, 2021, 12:22 UTC](https://www.debian-fr.org/t/creation-dun-script/84366/1 "2021-04-10T00:22:56Z")

</div>

Bonsoir  
je suis nouveaux dans le forum et j’aimerais resoudre un petit probleme concernant cet enonce  
«&nbsp;Créer deux fichier **f1.txt** ayant comme contenu « Bonjour les amis » et **f2.txt** ayant comme contenu « du cours SE2 ». Écrire un script **fusion.sh** qui reçoit ces deux fichiers et qui va créer un troisième fichier **f3.txt** ayant comme contenu la fusion des deux premiers fichiers. Le contenu de f3.txt sera alors « Bonjour les amis du cours SE2 ». Le script affichera après le contenu du fichier f3.txt. Exécuter votre script.&nbsp;»  
j’ai obtenu ce résultat

 ![script imprime ecran](https://www.debian-fr.org/uploads/default/original/2X/d/dc5991f36d450183a9c1061a8a108d27a9eaa78f.png)  
mais il y a un espace entre les deux fichiers.

---

<div class="post-metadata">

**Author:** ![cedric058](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/c/d2c977/32.png) [@cedric058](https://www.debian-fr.org/u/cedric058)\
**Post date:** [Avril 10, 2021, 2:35 UTC](https://www.debian-fr.org/t/creation-dun-script/84366/2 "2021-04-10T02:35:41Z")

</div>

Bonjour,

Comme il est souvent dit en informatique **RTFM**.  
Parfois c’est plus ou moins complexe selon la longueur du manuel et la langue utilisée.  
Le man de la commande «&nbsp;paste&nbsp;» ne fait que quelques lignes.

`$ paste -d " " f1.txt f2.txt > f3.txt`

---

<div class="post-metadata">

**Author:** ![PengouinPdt](https://www.debian-fr.org/user_avatar/www.debian-fr.org/pengouinpdt/32/3978_2.png) [@PengouinPdt](https://www.debian-fr.org/u/PengouinPdt)\
**Post date:** [Avril 10, 2021, 9:45 UTC](https://www.debian-fr.org/t/creation-dun-script/84366/3 "2021-04-10T09:45:09Z")

</div>

Bonjour,

Sauf que l’outil le plus approprié n’est pas `paste` mais bel et bien `cat` !

```auto
$ echo "Bonjour les amis" > f1.txt
$ echo "du cours SE2" > f2.txt
$ cat f1.txt f2.txt > f3.txt
$ printf '%s\n' f3.txt

```

Et pour afficher le résultat du troisième, on utilise plutôt `echo` ou `printf` ! 😉

---

<div class="post-metadata">

**Author:** ![anon96191775](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/a/71c47a/32.png) [@anon96191775](https://www.debian-fr.org/u/anon96191775)\
**Post date:** [Avril 10, 2021, 12:58 UTC](https://www.debian-fr.org/t/creation-dun-script/84366/4 "2021-04-10T12:58:32Z")

</div>

Pour ce genre de demande d’aide, essaie de privilégier le partage de copies en texte de ton script plutôt que des images 😉

Ça nous permet entre autres de facilement copier-coller ce que tu partages pour le tester, et l’examiner dans de meilleurs conditions.

---

<div class="post-metadata">

**Author:** ![Daher](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/d/3da27b/32.png) [@Daher](https://www.debian-fr.org/u/Daher)\
**Post date:** [Avril 10, 2021, 4:06 UTC](https://www.debian-fr.org/t/creation-dun-script/84366/5 "2021-04-10T16:06:35Z")

</div>

Genial! merci cedric058 ca marche le paramètre \* -d " " \*  
juste svp sans trop vous demander, pourries-vous me passer un site qui explique bien l’utilisation de _paste_ avec des paramètres pour mon apprentissage.

---

<div class="post-metadata">

**Author:** ![Daher](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/d/3da27b/32.png) [@Daher](https://www.debian-fr.org/u/Daher)\
**Post date:** [Avril 10, 2021, 4:11 UTC](https://www.debian-fr.org/t/creation-dun-script/84366/6 "2021-04-10T16:11:23Z")

</div>

ok je suis d’accord avec toi, mais je ne sais pas  
comment le mettre. je copie direct sur la fenêtre. merci.

---

<div class="post-metadata">

**Author:** ![littlejohn75](https://www.debian-fr.org/user_avatar/www.debian-fr.org/littlejohn75/32/3840_2.png) [@littlejohn75](https://www.debian-fr.org/u/littlejohn75)\
**Post date:** [Avril 10, 2021, 4:15 UTC](https://www.debian-fr.org/t/creation-dun-script/84366/7 "2021-04-10T16:15:34Z")

</div>

> [@PengouinPdt](#):
>
> ```auto
> $ cat f1.txt f2.txt > f3.txt
> $ printf '%s\n' f3.txt
> 
> ```

Sauf que dans ce cas le fichier `f3.txt` contient deux lignes et non pas le texte demandé

> [@Daher](#):
>
> « Bonjour les amis du cours SE2 »

Une possibilité

```auto
cat f1.txt f2.txt | tr '\n' ' ' > f3.txt

```

Mais la fin de ligne est perdue. Pour la rétablir

```auto
⌁ fp2@debpacha:/tmp $ file f3.txt 
f3.txt: ASCII text, with no line terminators
⌁ fp2@debpacha:/tmp $ printf "\n" >> f3.txt 
⌁ fp2@debpacha:/tmp $ file f3.txt 
f3.txt: ASCII text
⌁ fp2@debpacha:/tmp $

```

Tout ceci est bien compliqué par rapport à la solution basée sur `paste`, d’autant plus que ce programme fait partie de `coreutils` (comme cat et printf et même `tr`)

> [@cedric058](#):
>
> Comme il est souvent dit en informatique **RTFM**.

Je dirais même plus : utilisez `debmany`

```auto
debmany coreutils

```

Cette commande vient du paquet `debian-goodies`.

Exercice : donner à 10% près le nombre de fichiers d’information affiché par la commande ci-dessus.

Cordialement,  
Regards,  
Mit freundlichen Grüßen,  
مع تحياتي الخالصة

* * *

F. Petitjean  
Ingénieur civil du Génie Maritime.

« Moi, lorsque je n’ai rien à dire, je veux qu’on le sache. » (R. Devos)

« Celui qui, parti de rien, n’est arrivé nulle part n’a de merci à dire à personne !! »  
Pierre Dac

---

<div class="post-metadata">

**Author:** ![Daher](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/d/3da27b/32.png) [@Daher](https://www.debian-fr.org/u/Daher)\
**Post date:** [Avril 10, 2021, 4:24 UTC](https://www.debian-fr.org/t/creation-dun-script/84366/8 "2021-04-10T16:24:55Z")

</div>

J’ai essaye PengouinPdt ton script mais ca ne donne pas le résultat escompte.  
mais par contre le parametre **-d " "** que cedric058 m’a propose marche correctement. merci en tous cas pour ton aide. voir l’imprime ecran

 ![cap1](https://www.debian-fr.org/uploads/default/original/2X/5/55fbcc8f2cccafd7c80fa36f8a900742a6950150.png)

---

<div class="post-metadata">

**Author:** ![anon29980398](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/a/f4b2a3/32.png) [@anon29980398](https://www.debian-fr.org/u/anon29980398)\
**Post date:** [Avril 10, 2021, 4:31 UTC](https://www.debian-fr.org/t/creation-dun-script/84366/9 "2021-04-10T16:31:35Z")

</div>

Bonjour

```nohighlight
michel@debT450:~$ echo -n "Bonjour les amis" > f1.txt
michel@debT450:~$ echo -n "du cours SE2" > f2.txt
michel@debT450:~$ echo -n "$(<f1.txt) $(<f2.txt)" > f3.txt
michel@debT450:~$ echo "$(<f3.txt)"
Bonjour les amis du cours SE2
michel@debT450:~$ 

```

Dans ces 3 fichiers, il n’y a que le contenu qui était demandé dans l’énoncé,  
et il n’y a donc aucun caractère retour à la ligne.

---

<div class="post-metadata">

**Author:** ![Daher](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/d/3da27b/32.png) [@Daher](https://www.debian-fr.org/u/Daher)\
**Post date:** [Avril 10, 2021, 4:36 UTC](https://www.debian-fr.org/t/creation-dun-script/84366/10 "2021-04-10T16:36:28Z")

</div>

salut littlejohn75 j’ai essaye ton script mais il y a eu un petit défaut qui est apparu  
voir imprime ecran! **fin du script** s’est glisse après la fin f3.txt[cap2|690x240](https://www.debian-fr.org/uploads/short-url/eF69POWsSmFXnJbhkAn0738VlNK.png)

---

<div class="post-metadata">

**Author:** ![Daher](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/d/3da27b/32.png) [@Daher](https://www.debian-fr.org/u/Daher)\
**Post date:** [Avril 10, 2021, 4:37 UTC](https://www.debian-fr.org/t/creation-dun-script/84366/11 "2021-04-10T16:37:00Z")

</div>

![cap2](https://www.debian-fr.org/uploads/default/original/2X/6/66c3c7ac47e48c8048fcf10f646bb5e31dea2578.png)

---

<div class="post-metadata">

**Author:** ![Daher](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/d/3da27b/32.png) [@Daher](https://www.debian-fr.org/u/Daher)\
**Post date:** [Avril 10, 2021, 4:38 UTC](https://www.debian-fr.org/t/creation-dun-script/84366/12 "2021-04-10T16:38:25Z")

</div>

merci pour ton aide

---

<div class="post-metadata">

**Author:** ![Daher](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/d/3da27b/32.png) [@Daher](https://www.debian-fr.org/u/Daher)\
**Post date:** [Avril 10, 2021, 4:45 UTC](https://www.debian-fr.org/t/creation-dun-script/84366/13 "2021-04-10T16:45:19Z")

</div>

Génial! MicP ta méthode marche aussi, je l’ai teste voir imprime écran  
Merci pour ton aide. 😀

 ![cap 3](https://www.debian-fr.org/uploads/default/original/2X/9/9eb6593509ac87493355a2ca0b79cef1b29efe88.png)

---

<div class="post-metadata">

**Author:** ![anon29980398](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/a/f4b2a3/32.png) [@anon29980398](https://www.debian-fr.org/u/anon29980398)\
**Post date:** [Avril 10, 2021, 4:50 UTC](https://www.debian-fr.org/t/creation-dun-script/84366/14 "2021-04-10T16:50:01Z")

</div>

Création du fichier **`f1.txt`** :

```bash
echo -n "Bonjour les amis" > f1.txt

```

Création du fichier **`f2.txt`** :

```bash
echo -n "du cours SE2" > f2.txt

```

* * *

Le contenu du script **`fusion.sh`** :

```bash
#!/bin/bash

echo "$(<$1) $(<$2)" | tee f3.txt

```

* * *

Lancement du script :

```nohighlight
michel@debT450:~$ ./fusion.sh f1.txt f2.txt
Bonjour les amis du cours SE2
michel@debT450:~$ 

```

---

<div class="post-metadata">

**Author:** ![Daher](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/d/3da27b/32.png) [@Daher](https://www.debian-fr.org/u/Daher)\
**Post date:** [Avril 10, 2021, 4:52 UTC](https://www.debian-fr.org/t/creation-dun-script/84366/15 "2021-04-10T16:52:40Z")

</div>

je vois qu’il y a une multitude de façon pour résoudre ce petit énoncé  
Merci 😀

---

<div class="post-metadata">

**Author:** ![Daher](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/d/3da27b/32.png) [@Daher](https://www.debian-fr.org/u/Daher)\
**Post date:** [Avril 10, 2021, 4:54 UTC](https://www.debian-fr.org/t/creation-dun-script/84366/16 "2021-04-10T16:54:00Z")

</div>

je pense qu’on peut le mettre dans un script pour exécuter un seul fois.

---

<div class="post-metadata">

**Author:** ![anon29980398](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/a/f4b2a3/32.png) [@anon29980398](https://www.debian-fr.org/u/anon29980398)\
**Post date:** [Avril 10, 2021, 4:56 UTC](https://www.debian-fr.org/t/creation-dun-script/84366/17 "2021-04-10T16:56:25Z")

</div>

Oui, mais ce n’est pas ce qui était demandé dans l’énoncé :

> [@Daher](#):
>
> …  
> Écrire un script **fusion.sh** qui reçoit ces deux fichiers et qui va créer un troisième fichier **f3.txt** ayant comme contenu la fusion des deux premiers fichiers. Le contenu de f3.txt sera alors « Bonjour les amis du cours SE2 ». Le script affichera après le contenu du fichier f3.txt.  
> …

J’avais d’ailleurs oublié de faire afficher par le script  
le contenu du fichier **f3.txt**

---

<div class="post-metadata">

**Author:** ![Daher](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/d/3da27b/32.png) [@Daher](https://www.debian-fr.org/u/Daher)\
**Post date:** [Avril 10, 2021, 5:07 UTC](https://www.debian-fr.org/t/creation-dun-script/84366/18 "2021-04-10T17:07:14Z")

</div>

```auto
michel@xubu:~$ echo $(<f1.txt)
Bonjour les amis
michel@xubu:~$ 

```

```auto
michel@xubu:~$ echo $(<f2.txt)
du cours SE2
michel@xubu:~$ 

```

donc si j’ai bien compris on fait la création de deux fichier avec écho, puis on crée le script fusion.sh

```bash
#!/bin/bash
echo "$(<$1) $(<$2)" > f3.txt
echo $(<f3.txt)

```

et la fin on reviens dans le terminal et on exécute le script on donnant les deux fichiers.

juste tu peux me dire ce que ca signifie le parametre **-n** apres **echo**

---

<div class="post-metadata">

**Author:** ![anon29980398](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/a/f4b2a3/32.png) [@anon29980398](https://www.debian-fr.org/u/anon29980398)\
**Post date:** [Avril 10, 2021, 5:10 UTC](https://www.debian-fr.org/t/creation-dun-script/84366/19 "2021-04-10T17:10:44Z")

</div>

Les commandes que tu reprends sont celles qui permettaient d’afficher le contenu des fichiers créés,  
mais j’ai modifié mon message en les remplaçant par les commandes qui permettent  
de **créer** les fichiers **`f1.txt`** et **`f2.txt`**

Dans le script, j’ai utilisé la commande **tee**  
car elle permet d’afficher le flux tout en créant le fichier.

Voir la page du **man** uel de la commande **`tee`** :

```nohighlight
man tee

```

* * *

À part la commande **`tee`**  
toutes les autres commandes utilisées (_echo_, _[pipe](https://fr.wikipedia.org/wiki/Tube_(shell))_ et les commandes de _redirection_)  
sont des commandes qui sont intégrées dans l’interpréteur de commandes **`bash`**

Tu peux lire les pages _man_ du **`bash`** :

```nohighlight
man bash

```

et lire aussi cette page web : [https://wiki.bash-hackers.org/howto/redirection\_tutorial](https://wiki.bash-hackers.org/howto/redirection_tutorial)

---

<div class="post-metadata">

**Author:** ![Zargos](https://www.debian-fr.org/user_avatar/www.debian-fr.org/zargos/32/10889_2.png) [@Zargos](https://www.debian-fr.org/u/Zargos)\
**Post date:** [Avril 10, 2021, 8:33 UTC](https://www.debian-fr.org/t/creation-dun-script/84366/20 "2021-04-10T20:33:01Z")

</div>

Juste vite fait en passant, si un exercice de ce type necessite l’installation d’un package specifique non standard (i.e.: ne faisant pas partie d’une instalaltion de base )  
C’est que ce n’est pas la bonne solution. la solution la pls simple est souvent la meilleure

[Page suivante](https://www.debian-fr.org/t/creation-dun-script/84366.md?page=2)
