web-dev-qa-db-fra.com

Que signifie le point d'interrogation dans la commande du terminal?

Cette question ( Comment puis-je supprimer gnome d'une installation de kubuntu 12.04? ) ont les commandes avec des points d'interrogation:

Sudo apt-get remove --purge ubuntu-desktop
Sudo apt-get remove --purge unity?
Sudo apt-get remove --purge gnome?

Que signifient-ils?

11
Ooker

Celles-ci sont appelées des caractères génériques (motifs globaux)

Les caractères génériques standard (également appelés motifs globants) sont utilisés par divers utilitaires de ligne de commande pour gérer plusieurs fichiers.
Les caractères génériques standard sont utilisés par presque toutes les commandes (y compris mv, cp, rm et bien d’autres).

  • (question mark)

    cela peut représenter n'importe quel caractère. Si vous avez spécifié quelque chose à la ligne de commande comme "hd?" GNU/Linux rechercherait hda, hdb, hdc et toutes les autres lettres/chiffres compris entre a-z, 0-9.

  • *(asterisk)

    cela peut représenter un nombre quelconque de caractères (y compris zéro, en d'autres termes, zéro caractère ou plus). Si vous avez spécifié un "cd *", il utilisera "cda", "cdrom", "cdrecord" et tout ce qui commence par "cd", y compris "cd" lui-même. "m * l" pourrait par moulin, mull, ml, et tout ce qui commence par un m et se termine par un l.

  • [ ] (square brackets)

    spécifie une plage. Si vous l'avez fait, cela peut devenir: maman, maman, maman, si vous avez fait: m [a-d] m peut devenir tout ce qui commence et finit par m et a n'importe quel caractère entre deux. Par exemple, ceux-ci fonctionneraient: mam, mbm, mcm, mdm. Ce type de caractère générique spécifie une relation "ou" (il suffit d'une correspondance).

  • { } (curly brackets)

    les termes sont séparés par des virgules et chaque terme doit être le nom de quelque chose ou un caractère générique. Ce caractère générique copiera tout ce qui correspond au caractère générique, ou au nom exact (une relation "ou", l’un ou l’autre).


Par exemple, cela serait valide:

  • cp {.doc,. pdf} ~

    Cela copiera tout ce qui se termine par .doc ou .pdf dans le répertoire de base de l'utilisateur. Notez que les espaces ne sont pas autorisés après les virgules (ou ailleurs).

  • [!]

    Cette construction est similaire à la construction [], à la différence qu'au lieu de faire correspondre les caractères entre crochets, elle correspond à tous les caractères, tant qu'elle n'est pas listée entre [et]. C'est un NON logique. Par exemple, rm myfile [! 9] supprimera tous les myfiles * (c.-à-d. Myfiles1, myfiles2, etc.) mais ne supprimera pas un fichier portant le numéro 9 où que ce soit dans son nom.

  • \ (backslash)

    est utilisé comme caractère "d'échappement", c'est-à-dire pour protéger un caractère spécial ultérieur. Ainsi, "\" recherche une barre oblique inverse. Notez que vous devrez peut-être utiliser des guillemets et une barre oblique inverse.

pour plus d'exemples: visitez cette page

14
user259474

De manière générale, dans Bash, un ? est un motif global qui se développe en un caractère arbitraire.

Par exemple:

$ echo Hello1 > foo1
$ echo Hello2 > foo2
$ cat foo?
Hello1
Hello2

Il s'apparente à un *, mais un * se développe en ou plus caractères, tandis qu'un ? se développe en exactement un (arbitraire) caractère.

Dans votre cas particulier cependant, le ? dans la commande était apparemment une faute de frappe.

17
Malte Skoruppa