Comment supprimeriez-vous un dossier appelé * in / from bash?

8

Disons que j'avais un dossier nommé *sous /. Je sais que les commandes courantes comme rm -rf * ne fonctionneront pas. De l'aide?

user160936
la source
2
Techniquement, rm *cela fonctionnerait pour supprimer ce dossier.
Colonel Panic,

Réponses:

7

utilisez cette courte commande:

rm /\*
Serge
la source
1
Cela ne fonctionnera pas - c'est un répertoire.
naught101
1
Utilisez ensuite 'rmdir / \ *' à la place. L'autre option consiste à utiliser 'rm -rf / \ *'. Mais faire ce dernier est dangereux si vous faites une erreur.
Serge
14

Vous pouvez citer des arguments entre guillemets simples pour empêcher le traitement par le shell.

rm -r '/*'

Testez-le en toute sécurité en utilisant ls(dans des dossiers contenant des fichiers):

$ ls '*'
ls: *: No such file or directory

Dans ce cas, les guillemets doubles fonctionneraient également, mais s'il y en avait un $, ils ne le feraient pas, car le shell supposerait qu'il s'agit d'une variable:

$ ls "foo$bar"
ls: foo: No such file or directory
$ ls 'foo$bar'
ls: foo$bar: No such file or directory

Pour GNU rm, vous pouvez également ajouter --avant les arguments de nom de fichier pour les empêcher d'être analysés en tant qu'arguments. Cela vous permettra de supprimer des fichiers nommés -rfsans problème.

Daniel Beck
la source
Non requis. Vous pouvez simplement échapper au '*' afin qu'il ne soit pas étendu par le shell comme l'a répondu Serge.
darnir
5
@darnir Vous n'avez pas besoin de l'utiliser si vous ne l'aimez pas. Mais vous devez savoir quels personnages échapper lors de l'utilisation de l'approche de Serge (considérer &) et les échapper individuellement, ce qui peut facilement devenir plus d'effort qu'une citation une fois. Je considère donc que la fuite individuelle est inférieure et j'ai publié cette alternative.
Daniel Beck
3
@Serge Je ne dis pas que ta réponse est mauvaise. Il fait le travail et a été accepté . Cependant, s'il existe plusieurs façons (raisonnablement différentes) de réaliser quelque chose avec des avantages et des inconvénients différents, n'hésitez pas à les énumérer toutes. Ils peuvent ne pas fonctionner dans toutes les situations, il est donc bon d'avoir des alternatives à choisir. Veuillez également noter que les utilisateurs ayant des problèmes similaires (pas identiques) peuvent arriver à une question de Google. C'est aussi une bonne idée d' élargir la portée si cela conduit à des questions qui peuvent aider plus de gens. La rédaction de réponses de portée plus large est un début.
Daniel Beck
1
Je n'avais aucun but pour que toutes mes réponses soient acceptées et avec la plus grande douleur. Je passe quelques jours (ce week-end) avec certains de ces sites. La première impression était que je peux partager avec les gens mes connaissances, c'est pourquoi j'ai commencé à apporter des réponses. SO SO j'ai obtenu 760 points en trois jours. Oui, certaines de mes réponses n'étaient pas de qualité haut de gamme à différents points. Mais tous avaient raison. Mais maintenant, je vois que la plupart des gens qui posent des questions ici - sont des lycéens qui ne veulent pas passer une seconde pour trouver une solution eux-mêmes. Pourquoi vais-je passer mon temps?
Serge
1
@Serge Vous ne savez pas sur quoi portent vos commentaires. D'après ce que j'ai vu après l'avoir mentionné, vous avez commencé de manière impressionnante à contribuer aux sites. S'il y a quelque chose que je peux vous aider à utiliser les sites, ou autre chose dont vous souhaitez discuter, n'hésitez pas à me cingler sur le chat. Je suis en UTC + 2, donc vous ne recevrez peut-être pas de réponse très bientôt. Concernant les questions "débutant": Gardez à l'esprit que certaines informations ne sont pas facilement détectables. La lecture de la bashpage de manuel complète prend un certain temps si vous ne savez pas quoi rechercher.
Daniel Beck