O que significa o ponto de interrogação no comando do terminal?

10

Esta pergunta ( Como posso remover gnome de um kubuntu 12.04 install? ) tem os comandos com question markes:

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

O que eles querem dizer?

    
por Ooker 18.03.2014 / 13:59

2 respostas

14

Esses são chamados Wildcards (padrões globbing)

  

Curingas padrão (também conhecidos como padrões globbing) são usados por vários utilitários de linha de comando para trabalhar com vários arquivos.
  Os curingas padrão são usados por praticamente qualquer comando (incluindo mv, cp, rm e muitos outros).

  • (question mark)

      

    isso pode representar qualquer caractere único. Se você especificou algo na linha de comando como "hd?" O GNU / Linux procuraria por hda, hdb, hdc e todas as outras letras / números entre a-z, 0-9.

  • *(asterisk)

      

    isso pode representar qualquer número de caracteres (incluindo zero, em outras palavras, zero ou mais caracteres). Se você especificou um "cd *", ele usaria "cda", "cdrom", "cdrecord" e qualquer coisa que começasse com "cd" também incluindo "cd" em si. "m * l" poderia por moinho, ponderar, ml, e qualquer coisa que começasse com um me terminasse com um l.

  • [ ] (square brackets)

      

    especifica um intervalo. Se você fez m, ela pode se tornar: mãe, mãe, se você fez: m [a-d] m pode se tornar qualquer coisa que comece e termine com m e tenha qualquer caractere a / d entre elas. Por exemplo, isso funcionaria: mam, mbm, mcm, mdm. Esse tipo de caractere curinga especifica um relacionamento "ou" (você precisa apenas de um para corresponder).

  • { } (curly brackets)

      Os termos

    são separados por vírgulas e cada termo deve ser o nome de algo ou um caractere curinga. Esse curinga copia qualquer coisa que corresponda a curinga ou nome (s) exato (s) (um relacionamento "ou", um ou outro).

Por exemplo, isso seria válido:

  • cp { .doc, .pdf} ~

      

    Isso copiará qualquer coisa que termine com .doc ou .pdf para o diretório inicial dos usuários. Observe que os espaços não são permitidos após as vírgulas (ou em qualquer outro lugar).

  • [!]

      

    Essa construção é semelhante à construção [], exceto que, em vez de corresponder a quaisquer caracteres dentro dos colchetes, ela corresponderá a qualquer caractere, desde que não esteja listada entre [e]. Este é um NÃO lógico. Por exemplo, rm myfile [! 9] removerá todos os arquivos myfiles * (ex. Myfiles1, myfiles2 etc), mas não removerá um arquivo com o número 9 em qualquer lugar dentro do seu nome.

  • \ (backslash)

      

    é usado como um caractere de "escape", ou seja, para proteger um caractere especial subsequente. Assim, "\" procura por uma barra invertida. Observe que você pode precisar usar aspas e barras invertidas.

para mais exemplos: visite esta página

    
por user259474 18.03.2014 / 14:32
17

Em geral, no Bash, um ? é um padrão glob que se expande para um caractere arbitrário.

Por exemplo:

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

É semelhante a um * , mas um * expande para 0 ou mais caracteres, enquanto um ? se expande para exatamente um (arbitrário) personagem.

No seu caso especial, porém, o ? no comando foi aparentemente um erro de digitação.

    
por Malte Skoruppa 18.03.2014 / 14:07