# création fichier et répertoire

**URL:** <https://www.debian-fr.org/t/creation-fichier-et-repertoire/20780>\
**Category:** Programmation\
**Created:** [Février 20, 2016, 8:18 UTC](https://www.debian-fr.org/t/creation-fichier-et-repertoire/20780 "2016-02-20T20:18:44Z")\
**Posts on this page:** 10\
**Page:** 1

<div class="post-metadata">

**Author:** ![piratebab](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/p/58f4c7/32.png) [@piratebab](https://www.debian-fr.org/u/piratebab)\
**Post date:** [Février 20, 2016, 8:18 UTC](https://www.debian-fr.org/t/creation-fichier-et-repertoire/20780/1 "2016-02-20T20:18:44Z")

</div>

Attention, question très basique!  
Je voudrais faire un fichier de conf pour un script bash.  
Je fais un test si le fichier existe, ça c’est pas trop dur.  
Si il n’existe pas, je voudrais en une seule commande créer un répertoire (si il n’existe pas), et y créer le fichier de conf dedans.

j’ai essayé, touch, cat, mais je n’arrive pas à créer le répertoire + le fichier  
quelle est l’astuce ?

---

<div class="post-metadata">

**Author:** ![grigric](https://www.debian-fr.org/user_avatar/www.debian-fr.org/grigric/32/3935_2.png) [@grigric](https://www.debian-fr.org/u/grigric)\
**Post date:** [Février 20, 2016, 8:18 UTC](https://www.debian-fr.org/t/creation-fichier-et-repertoire/20780/2 "2016-02-20T20:18:44Z")

</div>

mkdir dd && touch bob

🙂

---

<div class="post-metadata">

**Author:** ![piratebab](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/p/58f4c7/32.png) [@piratebab](https://www.debian-fr.org/u/piratebab)\
**Post date:** [Février 20, 2016, 8:18 UTC](https://www.debian-fr.org/t/creation-fichier-et-repertoire/20780/3 "2016-02-20T20:18:45Z")

</div>

Le chemin complet du fichier est dans une variable, c’est ça le problème. Je n’ai pas envie de découper le chemin pour faire un mkdir et un touch.  
On ne peut pas tout faire d’un coup ?

---

<div class="post-metadata">

**Author:** ![micky979](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/m/d9b06d/32.png) [@micky979](https://www.debian-fr.org/u/micky979)\
**Post date:** [Février 20, 2016, 8:18 UTC](https://www.debian-fr.org/t/creation-fichier-et-repertoire/20780/4 "2016-02-20T20:18:45Z")

</div>

Bonjour,

Tu peux faire comme ceci mais ce n’est pas en une seule commande :

Variable TEST définit ainsi :

```auto

```

`mkdir -p $(dirname $TEST)
touch $TEST`

---

<div class="post-metadata">

**Author:** ![piratebab](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/p/58f4c7/32.png) [@piratebab](https://www.debian-fr.org/u/piratebab)\
**Post date:** [Février 20, 2016, 8:18 UTC](https://www.debian-fr.org/t/creation-fichier-et-repertoire/20780/5 "2016-02-20T20:18:46Z")

</div>

Merci, je teste ça ce soir (et je me documente sur dirname !)

---

<div class="post-metadata">

**Author:** ![piratebab](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/p/58f4c7/32.png) [@piratebab](https://www.debian-fr.org/u/piratebab)\
**Post date:** [Février 20, 2016, 8:18 UTC](https://www.debian-fr.org/t/creation-fichier-et-repertoire/20780/6 "2016-02-20T20:18:54Z")

</div>

ça marche pas:

`config_file='~/.convertlog/config.cfg'
`

```auto

```

je n’a pas de message d’erreur, mais le rep n’est pas créé.

`mkdir -v "$(dirname $config_file)"
mkdir: ne peut créer le répertoire `~/.convertlog': Le fichier existe
`

Et pourtant dans /home/moi/ je n’ai pas de .convertlog

---

<div class="post-metadata">

**Author:** ![micky979](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/m/d9b06d/32.png) [@micky979](https://www.debian-fr.org/u/micky979)\
**Post date:** [Février 20, 2016, 8:18 UTC](https://www.debian-fr.org/t/creation-fichier-et-repertoire/20780/7 "2016-02-20T20:18:54Z")

</div>

Bonjour,

Il faut pas que tu mettes de côte simple pour l’initialisation de la variable config\_file. C’est pas génial mais sinon il arrive pas à convertir la valeur de ~/

```auto

```

Edit : Si tu veux créer ton repertoire dans le home du user initialise ta variable comme ceci plutot :

```auto

```

---

<div class="post-metadata">

**Author:** ![piratebab](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/p/58f4c7/32.png) [@piratebab](https://www.debian-fr.org/u/piratebab)\
**Post date:** [Février 20, 2016, 8:18 UTC](https://www.debian-fr.org/t/creation-fichier-et-repertoire/20780/8 "2016-02-20T20:18:55Z")

</div>

Rien à faire, il ne converti pas le $HOME

```auto

```

`$config_file
bash: $HOME/.convertlog/config.cfg: Permission non accordée
`

C’est quand même bizarre qu’un truc si simple soit si compliquer à faire.

---

<div class="post-metadata">

**Author:** ![micky979](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/m/d9b06d/32.png) [@micky979](https://www.debian-fr.org/u/micky979)\
**Post date:** [Février 20, 2016, 8:18 UTC](https://www.debian-fr.org/t/creation-fichier-et-repertoire/20780/9 "2016-02-20T20:18:55Z")

</div>

Bonjour,

Il ne faut pas mettre des simple cote mais des doubles comme je l’ai mis dans mon exemple précédent.

---

<div class="post-metadata">

**Author:** ![piratebab](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/p/58f4c7/32.png) [@piratebab](https://www.debian-fr.org/u/piratebab)\
**Post date:** [Février 20, 2016, 8:18 UTC](https://www.debian-fr.org/t/creation-fichier-et-repertoire/20780/10 "2016-02-20T20:18:55Z")

</div>

ça m’avait échappé, ça marche effectivement comme ça.  
Il va falloir que je révise les double et simple quotes, c’est loin tout ça!  
merci pour le coup de main.
