# Pour en finir avec le bloc "corbeille"

**URL:** <https://www.debian-fr.org/t/pour-en-finir-avec-le-bloc-corbeille/33600>\
**Category:** Programmation\
**Created:** [Février 21, 2016, 3:10 UTC](https://www.debian-fr.org/t/pour-en-finir-avec-le-bloc-corbeille/33600 "2016-02-21T03:10:25Z")\
**Posts on this page:** 17\
**Page:** 3

<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 21, 2016, 3:11 UTC](https://www.debian-fr.org/t/pour-en-finir-avec-le-bloc-corbeille/33600/41 "2016-02-21T03:11:19Z")

</div>

[quote=“ricardo”][code][-z “$XDG\_DATA\_HOME”] && chemin\_trash="$HOME/.local/share/Trash" || chemin\_trash="$XDG\_DATA\_HOME/Trash"

corbeille="$chemin\_trash/files" [/code]

Une interrogation toutefois :  
Pas de problèmes de fonctionnement, c’est OK,  
mais on se sert sur la ligne suivante d’une variable créée en milieu de la commande du dessus.  
Ce n’est pas très joli au niveau lecture pour celui qui découvre, non ?[/quote]  
Je suis d’accord avec toi je suis pas fan, mais bash ne possède d’opérateur ternaire que pour l’arithmétique (je vois pas pourquoi d’ailleurs).

Il aurait permis d’écrire :

```auto

```

qui est, je trouve, plus compact et plus joli.

---

<div class="post-metadata">

**Author:** ![Watael](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/w/a4c791/32.png) [@Watael](https://www.debian-fr.org/u/Watael)\
**Post date:** [Février 21, 2016, 3:11 UTC](https://www.debian-fr.org/t/pour-en-finir-avec-le-bloc-corbeille/33600/42 "2016-02-21T03:11:19Z")

</div>

un peu comme ça ?`chemin_trash="${XDG_DATA_HOME:-$HOME/.local/share}/Trash"`

---

<div class="post-metadata">

**Author:** ![ricardo](https://www.debian-fr.org/user_avatar/www.debian-fr.org/ricardo/32/3864_2.png) [@ricardo](https://www.debian-fr.org/u/ricardo)\
**Post date:** [Février 21, 2016, 3:11 UTC](https://www.debian-fr.org/t/pour-en-finir-avec-le-bloc-corbeille/33600/43 "2016-02-21T03:11:21Z")

</div>

Ah oui, c’est quand même sympa comme lecture, l’un comme l’autre…  
Mais c’est possible ou pas ?  
Michel, tu sembles dire que ça ne se peut pas.  
Qu’appelles-tu un “opérateur ternaire” ?

@ Watael :  
les signes  
:-  
semblent vouloir dire :  
"ou, si le premier n’est pas bon, choisis le suivant"  
C’est ça ?  
EDIT :  
Après relecture, ça serait plustôt :  
“si le 1er ne répond pas ou est vide, choisis le second”

---

<div class="post-metadata">

**Author:** ![Watael](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/w/a4c791/32.png) [@Watael](https://www.debian-fr.org/u/Watael)\
**Post date:** [Février 21, 2016, 3:11 UTC](https://www.debian-fr.org/t/pour-en-finir-avec-le-bloc-corbeille/33600/44 "2016-02-21T03:11:21Z")

</div>

"tout à fait, t’y es Ri"cardo

[quote]${paramètre:-mot}  
Utilisation de valeur par défaut. Si le paramètre est inexistant ou vide, le développement du mot est substitué. Sinon, c’est la valeur  
du paramètre qui est substituée.[/quote]

---

<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 21, 2016, 3:11 UTC](https://www.debian-fr.org/t/pour-en-finir-avec-le-bloc-corbeille/33600/45 "2016-02-21T03:11:22Z")

</div>

> [@Watael](#):
>
> un peu comme ça ?`chemin_trash="${XDG_DATA_HOME:-$HOME/.local/share}/Trash"`

Excellent !

---

<div class="post-metadata">

**Author:** ![ricardo](https://www.debian-fr.org/user_avatar/www.debian-fr.org/ricardo/32/3864_2.png) [@ricardo](https://www.debian-fr.org/u/ricardo)\
**Post date:** [Février 21, 2016, 3:11 UTC](https://www.debian-fr.org/t/pour-en-finir-avec-le-bloc-corbeille/33600/46 "2016-02-21T03:11:22Z")

</div>

@ Watael :  
J’aimerais bien le tester celui-là mais j’aurais aussi voulu le tester avec ‘Trash’ dans ‘$XDG\_DATA\_HOME’, ce qui n’est pas le cas chez moi.  
Est-ce que je peux installer ce ‘???système???’ seulement pour un test et revenir ensuite à l’état antérieur ?  
Tu comprendras qu’un éventuel ‘oui’ ne me suffira pas 😃

---

<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 21, 2016, 3:11 UTC](https://www.debian-fr.org/t/pour-en-finir-avec-le-bloc-corbeille/33600/47 "2016-02-21T03:11:22Z")

</div>

> [@ricardo](#):
>
> Qu’appelles-tu un «&nbsp;opérateur ternaire&nbsp;» ?

L’opérateur ternaire c’est ça :

```auto
cond ? val1 : val2
```

Il s’utilise comme ça :

```auto
3>x ? "plus grand" : "plus petit"
```

L’opérateur en lui même est composé de 2 caractères ? et : et accepte 3 paramètres : une condition et deux instructions qui retournent le même type.  
C’est le seul opérateur ternaire de la majorité des langages (C, C++, Java, D, etc). C’est le seul opérateur non surchargeable en C++.

Il peut être très pratique mais je n’ai pas d’exemple. Il sert généralement pour les affectations :

```auto
std::string chaine = (x%2) ? "impaire" : "paire"; // Oui je sais ce n'est pas optimisé sauf en C++11
```

---

<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 21, 2016, 3:11 UTC](https://www.debian-fr.org/t/pour-en-finir-avec-le-bloc-corbeille/33600/48 "2016-02-21T03:11:22Z")

</div>

[quote=“ricardo”]@ Watael :  
J’aimerais bien le tester celui-là mais j’aurais aussi voulu le tester avec ‘Trash’ dans ‘$XDG\_DATA\_HOME’, ce qui n’est pas le cas chez moi.  
Est-ce que je peux installer ce ‘???système???’ seulement pour un test et revenir ensuite à l’état antérieur ?  
Tu comprendras qu’un éventuel ‘oui’ ne me suffira pas 😃[/quote]  
En principe, définis la variable $XDG\_DATA\_HOME dans ~/.profile et exporte la. Puis délogue toi, relogue toi, envoie ce que tu veux à la corbeille et tente.

---

<div class="post-metadata">

**Author:** ![ricardo](https://www.debian-fr.org/user_avatar/www.debian-fr.org/ricardo/32/3864_2.png) [@ricardo](https://www.debian-fr.org/u/ricardo)\
**Post date:** [Février 21, 2016, 3:11 UTC](https://www.debian-fr.org/t/pour-en-finir-avec-le-bloc-corbeille/33600/49 "2016-02-21T03:11:22Z")

</div>

[quote=“MisterFreez”][quote=“ricardo”]@ Watael :  
J’aimerais bien le tester celui-là mais j’aurais aussi voulu le tester avec ‘Trash’ dans ‘$XDG\_DATA\_HOME’, ce qui n’est pas le cas chez moi.  
Est-ce que je peux installer ce ‘???système???’ seulement pour un test et revenir ensuite à l’état antérieur ?  
Tu comprendras qu’un éventuel ‘oui’ ne me suffira pas 😃[/quote]  
En principe, définis la variable $XDG\_DATA\_HOME dans et exporte la. Puis délogue toi, relogue toi, envoie ce que tu veux à la corbeille et tente.[/quote]  
Et ensuite, pour retrouver l’état antérieur, je repasse par ~/.profile ?

---

<div class="post-metadata">

**Author:** ![ricardo](https://www.debian-fr.org/user_avatar/www.debian-fr.org/ricardo/32/3864_2.png) [@ricardo](https://www.debian-fr.org/u/ricardo)\
**Post date:** [Février 21, 2016, 3:11 UTC](https://www.debian-fr.org/t/pour-en-finir-avec-le-bloc-corbeille/33600/50 "2016-02-21T03:11:22Z")

</div>

```auto
Testé avant toute modif = OK
modifié ainsi :
écrit :
$XDG_DATA_HOME 
dans ~/.profile
tapé dans une console
$ export $XDG_DATA_HOME
délogué puis relogué
Vérif : Trash toujours au même endroit : ~/.local/share/Trash
J'ai l'impression que je n'ai pas fait tout ce qu'il fallait dans ~/.profile ?
quand tu écris "définis la variable", explique
```

Testé avant toute modif = OK  
modifié ainsi :  
écrit :  
$XDG\_DATA\_HOME  
dans ~/.profile  
tapé dans une console  
$ export $XDG\_DATA\_HOME  
délogué puis relogué  
Vérif : Trash toujours au même endroit : ~/.local/share/Trash  
J’ai l’impression que je n’ai pas fait tout ce qu’il fallait dans ~/.profile ?  
quand tu écris “définis la variable”, explique

---

<div class="post-metadata">

**Author:** ![syam](https://www.debian-fr.org/user_avatar/www.debian-fr.org/syam/32/2951_2.png) [@syam](https://www.debian-fr.org/u/syam)\
**Post date:** [Février 21, 2016, 3:11 UTC](https://www.debian-fr.org/t/pour-en-finir-avec-le-bloc-corbeille/33600/51 "2016-02-21T03:11:23Z")

</div>

L’export doit se faire dans .profile :

```auto

```

Edit : et il faut aussi probablement se déloguer de X, pas seulement de la console  
Peut-être aussi créer un dossier “Trash” à la main là où tu définis ton XDG\_DATA\_HOME, pour être sûr ?

---

<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 21, 2016, 3:11 UTC](https://www.debian-fr.org/t/pour-en-finir-avec-le-bloc-corbeille/33600/52 "2016-02-21T03:11:25Z")

</div>

[quote=«&nbsp;syam&nbsp;»]L’export doit se faire dans .profile :

```auto
export XDG_DATA_HOME="/chemin/vers/un/dossier"
```

Edit : et il faut aussi probablement se déloguer de X, pas seulement de la console[/quote]  
Voila

> [@syam](#):
>
> Peut-être aussi créer un dossier «&nbsp;Trash&nbsp;» à la main là où tu définis ton XDG\_DATA\_HOME, pour être sûr ?

Je ne pense pas.

---

<div class="post-metadata">

**Author:** ![eol](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/e/b782af/32.png) [@eol](https://www.debian-fr.org/u/eol)\
**Post date:** [Février 21, 2016, 3:11 UTC](https://www.debian-fr.org/t/pour-en-finir-avec-le-bloc-corbeille/33600/53 "2016-02-21T03:11:26Z")

</div>

[quote=“syam”]L’export doit se faire dans .profile :

```auto

```

Edit : et il faut aussi probablement se déloguer de X, pas seulement de la console[/quote]  
Ou bien :`$ source .profile`ou`$ . .profile`selon les shells.

---

<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 21, 2016, 3:11 UTC](https://www.debian-fr.org/t/pour-en-finir-avec-le-bloc-corbeille/33600/54 "2016-02-21T03:11:27Z")

</div>

> [@eol](#):
>
> Ou bien :`$ source .profile`ou`$ . .profile`selon les shells.

Ça m’étonnerais fortement. Oui ça export la variable d’environnement, mais ça ne fonctionne que pour les processus fils de ton shell d’une part, d’autre part, je pense que KDE ne contrôle la valeur de cette variable qu’au démarrage du bureau.

---

<div class="post-metadata">

**Author:** ![ricardo](https://www.debian-fr.org/user_avatar/www.debian-fr.org/ricardo/32/3864_2.png) [@ricardo](https://www.debian-fr.org/u/ricardo)\
**Post date:** [Février 21, 2016, 3:11 UTC](https://www.debian-fr.org/t/pour-en-finir-avec-le-bloc-corbeille/33600/55 "2016-02-21T03:11:43Z")

</div>

J’ai donc porté ça dans .profil hier soir :  
export XDG\_DATA\_HOME="$Home/Trash"  
Ce matin, après machine arrêtée la nuit, donc reboute complet, pas de trace de ce que je mets à la corbeille en cliquant sur l’icone.  
Réponse d’un essai du script :

```auto

```

Il semblerait qu’il faut quand même créer ce dossier, qui n’apparaît nulle part, hormis l’ancien dans .local…/Trash  
EDIT : j’ai créé manuellement mais pas mieux.  
Quand je mets à la corbeille un fichier, il disparait mais je ne sais pas où ?  
Est-ce que je doit entrer “export quelque chose ?”

---

<div class="post-metadata">

**Author:** ![syam](https://www.debian-fr.org/user_avatar/www.debian-fr.org/syam/32/2951_2.png) [@syam](https://www.debian-fr.org/u/syam)\
**Post date:** [Février 21, 2016, 3:11 UTC](https://www.debian-fr.org/t/pour-en-finir-avec-le-bloc-corbeille/33600/56 "2016-02-21T03:11:43Z")

</div>

[quote=“ricardo”]export XDG\_DATA\_HOME="$Home/Trash"  
ls: impossible d’accéder à /Trash/Trash/files: Aucun fichier ou dossier de ce type[/quote]

Ta variable $HOME ne semble pas prise en compte : dans l’erreur de ls, le premier “/Trash” correspond à celui cité ci-dessus (dans le .profile) et le reste ("/Trash/files") est ajouté par ton script de sauvegarde.

Question peut-être bête, mais vaut mieux vérifier avant de chercher plus loin (et pour tout dire c’est la seule idée que j’aie pour le moment) : dans le .profile, tu as écrit $Home comme recopié ici (une majuscule suivie de minuscules) ou bien $HOME comme ça devrait être ? La casse des caractères est importante, ce ne sont pas les mêmes variables ! Ça expliquerait le fait que ton XDG\_DATA\_HOME commence par “/Trash” au lieu de “/home/ricardo” : la variable $Home n’est pas censée exister.

---

<div class="post-metadata">

**Author:** ![ricardo](https://www.debian-fr.org/user_avatar/www.debian-fr.org/ricardo/32/3864_2.png) [@ricardo](https://www.debian-fr.org/u/ricardo)\
**Post date:** [Février 21, 2016, 3:11 UTC](https://www.debian-fr.org/t/pour-en-finir-avec-le-bloc-corbeille/33600/57 "2016-02-21T03:11:47Z")

</div>

Bien sûr, tu as visé juste.  
Je modifie, je retente et je donne la réponse ici.

EDIT :  
parfait ![:023](https://www.debian-fr.org/uploads/default/original/1X/3c587556c0cc11389317c03a60788d77ceebd307.gif "OK")  
erreur conne s’il en est 😒  
Je confirme donc que la ligne :

```auto
chemin_trash="${XDG_DATA_HOME:-$HOME/.local/share}/Trash"
```

convient parfaitement.  
Je modifie tuto et page wiki dans ce sens.  
La création du dossier Trash se fait automatiquement et la modification est fonctionnelle sur simple déconnexion de l’user’  
 ![:006](https://www.debian-fr.org/uploads/default/original/1X/924eb3db8bedad6a0d333b02031d3c6a9af9d9c5.gif "salut") ![:006](https://www.debian-fr.org/uploads/default/original/1X/924eb3db8bedad6a0d333b02031d3c6a9af9d9c5.gif "salut") ![:006](https://www.debian-fr.org/uploads/default/original/1X/924eb3db8bedad6a0d333b02031d3c6a9af9d9c5.gif "salut")

[Page précédente](https://www.debian-fr.org/t/pour-en-finir-avec-le-bloc-corbeille/33600.md?page=2)
