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?


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

Réponses:


7

utilisez cette courte commande:

rm /\*

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.


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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.