OVH Cloud OVH Cloud

Vider la corbeille d'un seul volume

7 réponses
Avatar
herve.nospam
Bonjour,

Pour vider la corbeille pour un seul volume monté (par exemple une
clef USB), il faut si je ne m'abuse taper dans le terminal :
cd /Volumes/nom_de_la_clef
sudo rm -R .Trash
(merci de me corriger le cas échéant).

Peut-on faire la même chose depuis le Finder ?

Merci d'avance,

Hervé

7 réponses

Avatar
Nicolas.MICHEL
herve wrote:

Bonjour,

Pour vider la corbeille pour un seul volume monté (par exemple une
clef USB), il faut si je ne m'abuse taper dans le terminal :
cd /Volumes/nom_de_la_clef
sudo rm -R .Trash


euh, un truc du genre, à moins que ce ne soit ".Trashes"

(merci de me corriger le cas échéant).

Peut-on faire la même chose depuis le Finder ?


Oui, probablement, avec pseudo et RBrowser lite par ex.
(ouvrir RBrowser avec les droits root grâce à pseudo puis afficher les
dossiers cachés et poubeliser le /Volumes/stickUSB/.Trashes)
--
S'il n'y a pas de solutions, c'est qu'il n'y a pas de problèmes
iChat/AIM : michelnicolas

Avatar
blanc
herve wrote:

Peut-on faire la même chose depuis le Finder ?


Peut-être avec OnMyCommandCM ?
<http://free.abracode.com/cmworkshop/on_my_command.html>

JPaul.
--
/==/==- Jean-Paul BLANC
/ /--/--// quelque-part (somewhere)
|/| L | en (in)
/|| = ||| FRANCE

Avatar
herve.nospam
(Nicolas MICHEL) wrote in message news:<1gjwnke.9csaks19agy5yN%...
Pour vider la corbeille pour un seul volume monté (par exemple une
clef USB), il faut si je ne m'abuse taper dans le terminal :
cd /Volumes/nom_de_la_clef
sudo rm -R .Trash


euh, un truc du genre, à moins que ce ne soit ".Trashes"


J'ai testé, ça marche mais c'est un peu violent : ça supprime la
corbeille, pas seulement son contenu. Donc ensuite si on veut mettre
un fichier à la corbeille sur le volume en question, on a droit à un
message du genre "l'élément XXX sera supprimé immédiatement. Etes-vous
sur de vouloir continuer ?", logique puisqu'il n'y a plus de
corbeille.
Il serait plus sage de supprimer juste le contenu, mais je n'y arrive
pas :

Si je fais par exemple :
sudo rm -R /Volumes/Navette/.Trashes/*
j'obtiens :
rm: /Volumes/Navette/.Trashes/*: No such file or directory

or :
sudo ls -al /Volumes/Navette/.Trashes
me répond :
total 0
d-wx-wx-wt 4 root unknown 136 Oct 6 19:09 .
drwxr-xr-x 6 root unknown 204 Oct 6 19:10 ..
drwx------ 4 root unknown 136 Oct 7 09:30 501
drwx------ 2 root unknown 68 Oct 6 19:09 502

donc il y a bien qq chose dans .Trashes.
Pourquoi mon rm ne marche-t-il pas, alors que celui-ci marche :
sudo rm -R /Volumes/Navette/.Trashes/502

L'étoile ne marche pas pour effacer d'un coup tout le contenu d'un
répertoire ?

Autre truc que je ne comprends pas :
rm -R /Volumes/Navette/.Trashes/501 (non précédé de sudo)
efface le répertoire 501, alors que celui-ci appartient à root et que
ses permissions sont drwx------
Ne devrai-je pas avoir un "permission denied" ?

Enfin, après avoir supprimé /Volumes/Navette/.Trashes/501 je me rends
compte que ce n'est pas non plus un bon plan : même topo que
ci-dessus, plus de corbeille.
L'idéal serait de supprimer le contenu des répertoires 501, 502, etc.
mais pas les répertoires eux mêmes. Comment dit-on en unix "supprimer
le contenu de tous les sous répertoires du répertoire
/Volumes/Navette/.Trashes/ sans supprimer ces sous-répertoires" ?

Je n'ai pas trouvé la réponse dans man rm.

Merci d'avance,

Hervé


Avatar
Stephane Dupille
J'ai testé, ça marche mais c'est un peu violent : ça supprime la
corbeille, pas seulement son contenu. Donc ensuite si on veut mettre
un fichier à la corbeille sur le volume en question, on a droit à un
message du genre "l'élément XXX sera supprimé immédiatement. Etes-vous
sur de vouloir continuer ?", logique puisqu'il n'y a plus de
corbeille.


Oui, à éviter.

Il serait plus sage de supprimer juste le contenu, mais je n'y arrive
pas :
Si je fais par exemple :
sudo rm -R /Volumes/Navette/.Trashes/*
j'obtiens :
rm: /Volumes/Navette/.Trashes/*: No such file or directory
or :
sudo ls -al /Volumes/Navette/.Trashes
me répond :
total 0
d-wx-wx-wt 4 root unknown 136 Oct 6 19:09 .
drwxr-xr-x 6 root unknown 204 Oct 6 19:10 ..
drwx------ 4 root unknown 136 Oct 7 09:30 501
drwx------ 2 root unknown 68 Oct 6 19:09 502


Normal. * est remplacé par ce qui va bien directement dans la ligne
de commande par le shell. Or le shell est lancé avec l'utilisateur
courant (donc pas root). Comme il n'a pas le droit de lire le contenu
du répertoire, il ne peut pas faire la substitution, et donc laisse
l'*, comme il n'y a pas de fichier "*" à supprimer, le rm ne fait
rien.

Tips : pour savoir exactement quelle est la commande lancée, et
connaître les substitutions effectuées par le shell, précédez la
commande par "echo", comme :
$ echo sudo rm -R /Volumes/Navette/.Trashes/*

donc il y a bien qq chose dans .Trashes.
Pourquoi mon rm ne marche-t-il pas, alors que celui-ci marche :
sudo rm -R /Volumes/Navette/.Trashes/502


Parce que là, le shell ne fait pas de substitution, la commande est
exécutée par root, le rep existe, ça marche.

L'étoile ne marche pas pour effacer d'un coup tout le contenu d'un
répertoire ?


Non.

Autre truc que je ne comprends pas :
rm -R /Volumes/Navette/.Trashes/501 (non précédé de sudo)
efface le répertoire 501, alors que celui-ci appartient à root et que
ses permissions sont drwx------
Ne devrai-je pas avoir un "permission denied" ?


Pour effacer un fichier, on doit avoir le droit d'écriture dans le
rep qui contient le fichier. Là, tout le monde a le droit d'écriture
dans le rep .Trashes, donc vous pouvez supprimer sans devenir root.

Enfin, après avoir supprimé /Volumes/Navette/.Trashes/501 je me rends
compte que ce n'est pas non plus un bon plan : même topo que
ci-dessus, plus de corbeille.
L'idéal serait de supprimer le contenu des répertoires 501, 502, etc.
mais pas les répertoires eux mêmes. Comment dit-on en unix "supprimer
le contenu de tous les sous répertoires du répertoire
/Volumes/Navette/.Trashes/ sans supprimer ces sous-répertoires" ?


# find /Volumes/Navette/.Trashes/ -type f -print | xargs rm -iv
à lancer sous root évidemment, et je déconseille les sudo quand on
manipule des pipes sous root (c'est trop facile de se planter), il est
à mon avis plus sécure d'ouvrir un shell root (eh oui !).

Je n'ai pas trouvé la réponse dans man rm.


Parce que ce n'est pas la bonne commande à utiliser pour faire ça.
La bonne commande, c'est find. Bienvenu dans le monde merveilleux
d'Unix ! :))

Merci d'avance,


Ah mais de rien !

--
il y a quatre mots dans votre phrase et si vous ne décelez pas les
conséquences rhétoriques de vos propres paroles, c'est facheux et vous
conduira sans doute à d'autres difficultés d'ordre communicationnelles!
-+- PG in <http://www.le-gnu.net> : C'est cela, oui. -+-

Avatar
Patrick Stadelmann
In article ,
(herve) wrote:

Si je fais par exemple :
sudo rm -R /Volumes/Navette/.Trashes/*
j'obtiens :
rm: /Volumes/Navette/.Trashes/*: No such file or directory

or :
sudo ls -al /Volumes/Navette/.Trashes
me répond :
total 0
d-wx-wx-wt 4 root unknown 136 Oct 6 19:09 .
drwxr-xr-x 6 root unknown 204 Oct 6 19:10 ..
drwx------ 4 root unknown 136 Oct 7 09:30 501
drwx------ 2 root unknown 68 Oct 6 19:09 502

donc il y a bien qq chose dans .Trashes.
Pourquoi mon rm ne marche-t-il pas, alors que celui-ci marche :
sudo rm -R /Volumes/Navette/.Trashes/502

L'étoile ne marche pas pour effacer d'un coup tout le contenu d'un
répertoire ?


Si, le problème est que le shell essaye de remplacer l'étoile avant
d'appeler sudo, et comme la lecture de .Trashes est normalement
interdite, ça ne marche pas. Par contre :

sudo -s
rm -R /Volumes/Navette/.Trashes/*
exit

devrait fonctionner. Il doit bien y avoir un moyen de repousser le
remplacement de * après l'appel de sudo, mais je ne connais pas le truc.

Autre truc que je ne comprends pas :
rm -R /Volumes/Navette/.Trashes/501 (non précédé de sudo)
efface le répertoire 501, alors que celui-ci appartient à root et que
ses permissions sont drwx------
Ne devrai-je pas avoir un "permission denied" ?


En effet, c'est bizarre. Le sticky bit est activé sur .Trashes et donc
d'après le man :

A file in a sticky directory may only be removed or renamed
by a user if the user has write permission for the directory
and the user is the owner of the file, the owner of the
directory, or the super-user.

ce qui n'est pas le cas ici...

L'idéal serait de supprimer le contenu des répertoires 501, 502, etc.
mais pas les répertoires eux mêmes. Comment dit-on en unix "supprimer
le contenu de tous les sous répertoires du répertoire


rm -r .Trashes/*/*
rm -r .Trashes/*/.*

Attention avec rm et * on fait vite des dégats !

Patrick
--
Patrick Stadelmann

Avatar
blanc
Patrick Stadelmann wrote:

Autre truc que je ne comprends pas :
rm -R /Volumes/Navette/.Trashes/501 (non précédé de sudo)
efface le répertoire 501, alors que celui-ci appartient à root et que
ses permissions sont drwx------
Ne devrai-je pas avoir un "permission denied" ?


En effet, c'est bizarre. Le sticky bit est activé sur .Trashes et donc
d'après le man :

A file in a sticky directory may only be removed or renamed
by a user if the user has write permission for the directory
and the user is the owner of the file, the owner of the
directory, or the super-user.

ce qui n'est pas le cas ici...


La commande supprime-t-elle vraiment le répertoire 501, ou seulement son
contenu ?
Car il n'y a pas de sticky bit sur 501.

JPaul.
--
/==/==- Jean-Paul BLANC
/ /--/--// quelque-part (somewhere)
|/| L | en (in)
/|| = ||| FRANCE


Avatar
Patrick Stadelmann
In article <1glarmr.pg6hux1pf0n2yN%,
(JPaul) wrote:

Patrick Stadelmann wrote:

Autre truc que je ne comprends pas :
rm -R /Volumes/Navette/.Trashes/501 (non précédé de sudo)
efface le répertoire 501, alors que celui-ci appartient à root et que
ses permissions sont drwx------
Ne devrai-je pas avoir un "permission denied" ?


En effet, c'est bizarre. Le sticky bit est activé sur .Trashes et donc
d'après le man :

A file in a sticky directory may only be removed or renamed
by a user if the user has write permission for the directory
and the user is the owner of the file, the owner of the
directory, or the super-user.

ce qui n'est pas le cas ici...


La commande supprime-t-elle vraiment le répertoire 501, ou seulement son
contenu ?
Car il n'y a pas de sticky bit sur 501.

JPaul.


Elle efface le répertoire 501 et son contenu.

Patrick
--
Patrick Stadelmann