O que significa '!' símbolo significa no Ubuntu [fechado]

0

Eu olhei tudo, e não consigo descobrir o que ! significa no Ubuntu, eu vejo tudo de novo. por exemplo:

find -f -d !(.txt)
    
por hello moto 10.04.2017 / 02:41

2 respostas

3

De: link

% bl0ck_qu0te%     
por Android Dev 10.04.2017 / 04:21
2

Fora do seu uso na expansão do histórico da shell, abordado na resposta do Android Dev , o uso mais comum é expressar a negação ou definir complementação. Por exemplo, em globs simples de shell

ls [!a-c]*

lista os arquivos , exceto os que começam com um caractere no intervalo a-c . Você também pode ver isso escrito com um acento circunflexo no lugar do ponto de exclamação [^a-c] (emprestado da sintaxe da expressão regular), embora o último formulário não seja compatível com POSIX.

O Bash estende a noção de complementação para padrões inteiros em seus globs de shell estendidos para que, por exemplo

ls !(*.txt)

lista todos os arquivos, exceto os que terminam em uma extensão .txt .

Alguns comandos individuais também usam independentemente ! no sentido de negação ou complementação lógica - por exemplo

find ! -name '*.txt'

embora o GNU find pelo menos também suporte a forma mais longa -not neste contexto (embora novamente isso não seja compatível com POSIX).

Seu exemplo parece confundir esses dois últimos usos - parece um shell glob estendido, mas ocorre como parte de um comando find onde tal expansão de shell não seria válida 1 .

1 um shell glob estendido poderia ser usado para construir uma lista de diretórios para find pesquisar - algo como find !(foo*)/ -name '*.bar' por exemplo

    
por steeldriver 10.04.2017 / 04:45