Guillemet inversé dans un nom de répertoire - suppression ?

Bonjour,

j’ai découvert hier un nom de répertoire commençant avec le caractère guillemet inversé ( ` ), comment faire pour supprimer ce répertoire ?

J’ai déjà essayé tous ce que j’ai trouvé sur le net mais rien n’y fait, j’ai droit à différentes erreurs; le fichier n’existe pas, je n’ai pas les droits adéquats ( en étant sous root bien sûr ), …

Ce n’est pas un problème en soi, car ce répertoire ne me gêne en rien, mais pour le principe, il faut pouvoir le détruire …

A noter que je n’ai pas idée comment ce répertoire a été créé ( ancienne commande erronée ? virus ? … )

Salut PmGs,

Essaye s’il est vide :rmdir "\`LeNomDuRépertoire\`"

Il ne devrait pas être nécessaire de l’échapper en le faisant précéder d’un \ s’il est entouré de guillemets. L’un ou l’autre devrait suffire.

Petite astuce pour agir sur un fichier ou répertoire dont le nom contient un caractère “problématique” avec le shell : remplacer ce caractère par “?”, en s’assurant d’abord (par exemple avec ls) que le motif ne correspond qu’à ce seul fichier ou répertoire.

[quote=“PascalHambourg”]Il ne devrait pas être nécessaire de l’échapper en le faisant précéder d’un \ s’il est entouré de guillemets.[/quote]C’est aussi ce que je pensais, mais :user01@workstation01:/tmp$ ll total 12 drwxrwxrwt 3 root root 4096 mai 19 17:56 ./ drwxr-xr-x 19 root root 4096 avril 28 12:06 ../ drwxrwxr-x 2 user01 user01 4096 mai 19 17:56 `test`/ user01@workstation01:/tmp$ rmdir "`test`" rmdir: échec de suppression de «»: Aucun fichier ou dossier de ce type user01@workstation01:/tmp$
C’est vrai par contre si on utilise des quotes (’) au lieu des doubles quotes/guillemets (")

Ah, ouais, même avec des guillemets doubles le shell continue à interpréter le . Il faut soit des guillemets simples soit échapper le. Aucun intérêt d’ajouter des guillemets doubles.

gestionnaire de fichier ? nautilus, thunar, pcfman devrait en venir à bout
(OK ce n’est pas la solution en ligne de commande, mais ça peut être un bon workaround)

Chez moi ces séquences fonctionnent :
– dossier vide

$ mkdir '`test`' $ ls -d \`test\` `test`/ $ rmdir \`te <tab pour autocompletion> $ rmdir \`test\` $ ls -d \`test\`
– dossier plein

$ mkdir '`test`' $ cd \`test\`/ $ touch a $ touch b $ cd .. $ ls -d \`test\` `test`/ $ rm -rf \`test\` $ ls -d \`test\`

Merci au 1er lecteurs pour s’être penché sur ma question,

… mais pour l’instant le problème reste entier!

Comme manifestement cela ne semble pas évident, ce que j’avais imaginé, j’ai écrit le petit script ci-dessus pour suivre les essais.
Vous noterez que le répertoire à détruire est /mnt/`uuu.

--------------------- le script ( avec vos propositions d’essais )
function det {
echo ---------------------------
echo $1
$1
dir /mnt/
}

echo Début des essais de destruction de /mnt/`uuu
dir /mnt
det "rm -fr /mnt/uuu"
det "rm -fr /mnt/`uuu"
det "rmdir “/mnt/`uuu”"
det "rmdir “/mnt/`uuu`”"
det "rmdir “/mnt/?uuu”"
det “rmdir “/mnt/`uuu/””

----------------------- le résultat du script
Début des essais de destruction de /mnt/uuuuuu

rm -fr /mnt/uuu
`uuu

rm -fr /mnt/uuu rm: impossible de supprimer « /mnt/uuu »: Aucun fichier ou dossier de ce type
`uuu

rmdir “/mnt/uuu" rmdir: échec de suppression de « "/mnt/uuu” »: Aucun fichier ou dossier de ce type
`uuu

rmdir "/mnt/uuu"
rmdir: échec de suppression de « “/mnt/uuu” »: Aucun fichier ou dossier de ce type
`uuu

rmdir "/mnt/?uuu"
rmdir: échec de suppression de « “/mnt/?uuu” »: Aucun fichier ou dossier de ce type
`uuu

rmdir “/mnt/uuu/" rmdir: échec de suppression de « "/mnt/uuu/” »: Aucun fichier ou dossier de ce type
`uuu


A noter que la cde directe ( sans passer par le script ) donne le résultat :
root@PmG:~# cd /mnt
root@PmG:/mnt# rmdir `uuu/
rmdir: échec de suppression de « `uuu/ »: Permission non accordée

Je suis surpris que [mono]rm -fr /mnt/uuu[/mono] ne provoque pas d’erreur.

Je confirme,

lorsque /mnt/xxx n’existe pas

root@PmG:/mnt# rm -fr xxx

ne produit aucun message ( chez moi ).

Linux PmG 3.2.0-4-686-pae #1 SMP Debian 3.2.57-3 i686 GNU/Linux

À tout hasard, que donne cette commande ?

Au temps pour moi, c’est -f qui fait ça.

root@PmG:/mnt# alias rm
bash: alias: rm : non trouvé

fallait essayé, mais ce n’est toujours pas ça …

15 ans d’utilisation de Linux, et je n’ai toujours pas d’idée, à noter que je n’ai qu’un caractère ` dans le nom du répertoire à détruire.

A suivre …

francois@hercule:/tmp$ mkdir '`gre' francois@hercule:/tmp$ ls -altr | tail -n 2 drwxr-xr-x 2 francois francois 4096 19 mai 21:31 `gre drwxrwxrwt 8 root root 36864 19 mai 21:31 . francois@hercule:/tmp$ rmdir '`gre' francois@hercule:/tmp$ ls -altr | tail -n 2 -rw-r--r-- 1 francois francois 2148163 19 mai 21:19 def.tgz drwxrwxrwt 7 root root 36864 19 mai 21:31 . francois@hercule:/tmp$ et

francois@hercule:/tmp$ mkdir '`gre' francois@hercule:/tmp$ ls -altr | tail -n 2 drwxr-xr-x 2 francois francois 4096 19 mai 21:33 `gre drwxrwxrwt 8 root root 36864 19 mai 21:33 . francois@hercule:/tmp$ ls > '`gre'/toto francois@hercule:/tmp$ rm -Rf '`gre' francois@hercule:/tmp$ ls -altr | tail -n 2 -rw-r--r-- 1 francois francois 2148163 19 mai 21:19 def.tgz drwxrwxrwt 7 root root 36864 19 mai 21:33 . francois@hercule:/tmp$

On avance un peu.

mkdir ‘`gre’ et suppression fonctionne bien dans mon répertoire.

Mais sous /mnt cela ne fonctionne pas :

root@PmG:/mnt# mkdir 'gre' mkdir: impossible de créer le répertoire «gre »: Permission non accordée

et donc le problème serait comment supprimer un sous-répertoire commençant par ` sous /mnt ?

Quelles sont les permissions de /mnt

(ls -ld /mnt)

Donne aussi le résultat de mount.

MERCI franck et à tous ceux qui m’ont aidé.

Le problème était le suivant, j’ai fait il y a qq temps, et je ne m’en souvenais plus, un essai avec ‘automout’ et j’avais les 2 fichiers de conf suivant dans /etc :

auto.master :

/mnt /etc/auto.mnt --timeout=60 --ghost

auto.mnt
`uuu -fstype=vfat,rw UUID=…

J’ai supprimé ces fichiers et tout est ok.

Comment passer cette discussion en résolu ?

PmG

Tu peux voir une coche verte sur les différents messages de cette discussion, en cliquer une marquera la discussion comme “résolue”.
L’idéal dans ce cas est de cliquer la coche présente sur le message t’ayant donné la solution à ton problème, ça aidera les prochains à passer par ici à la trouver.