J'exécutais un script Python qui fonctionnait mal et utilisé sudo
pour créer un fichier nommé >
.
Comment puis-je me débarrasser de ce fichier?
Bien sûr, lorsque j'essaie sudo rm >
, j'obtiens l'erreur bash: syntax error near unexpected token 'newline'
, car il pense que j'essaie de rediriger la sortie de rm
.
Ses autorisations sont -rw-r--r--
.
sudo touch >
un shell donnerait la même erreur.) Vous avez dit que c'était avec un script Python, vraisemblablement créé en passant">"
à uneos
fonction. Celasudo python <<< 'import os; os.remove(">")'
devrait donc très bien fonctionner.Réponses:
N'importe lequel de ces éléments devrait fonctionner:
Notez que les deux dernières commandes, celles qui utilisent
find
, trouveront tous les fichiers ou répertoires nommés>
dans le dossier actuel et tous ses sous-dossiers. Pour éviter cela, utilisez GNU find:la source
find
n'est pas commerm
parce qu'il est récursif et supprimera tous les fichiers nommésrm
sous votre arborescence de répertoires actuelle, quelle que soit la profondeur.rm
variantes) sont tous les mêmes. Ce n'est que trois façons différentes de protéger ce nom de fichier du shell. Il n'y a pas vraiment de raison de préférer l'un à l'autre.find(1)
? Le seul problème ici est qu'un métacaractère shell doit être cité. Il existe des millions et des programmes différents qui peuvent supprimer un fichier, mais utiliser autre chose querm(1)
masquer la réponse.sudo find . ! -name . -prune -name '>' -exec rm {} +
.find
n'ajoute rien pour répondre à la question posée.Vous pouvez également utiliser Python pour le supprimer:
Avec POSIX
find
:la source
>
la redirection de sortie.Ce que j'ai fini par faire au départ fonctionne aussi:
C'est, bien sûr, une variante du plus simple
sudo rm \>
.la source
J'ai essayé cela en tant que commentaire, mais tout est sorti sur une seule ligne
la source
Citez le caractère pour qu'il ne soit pas interprété par le shell comme une redirection:
Cependant, si vous avez d'autres fichiers avec des caractères étranges, la méthode la plus sûre consiste à ouvrir un explorateur de fichiers GUI tel que
nautilus
et à le supprimer.la source