Pour en finir avec le bloc "corbeille"

[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 :

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

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

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”

"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]

Excellent !

@ 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 :smiley:

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

Il s’utilise comme ça :

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 :

[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 :smiley:[/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.

[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 :smiley:[/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 ?

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

L’export doit se faire dans .profile :

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 ?

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

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

Je ne pense pas.

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

Edit : et il faut aussi probablement se déloguer de X, pas seulement de la console[/quote]
Ou bien :$ source .profileou$ . .profileselon 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.

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 :

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 ?”

[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.

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

EDIT :
parfait :023
erreur conne s’il en est :unamused:
Je confirme donc que la ligne :

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 :006 :006