Bash curinga

Bash curinga
Quando precisamos procurar qualquer coisa usando comandos de shell, precisamos definir um padrão para pesquisar. Os caracteres curinga são usados ​​para definir o padrão para pesquisa ou correspondência de texto em dados da string no shell do Bash. Outro uso comum de caracteres curinga é criar expressões regulares. Como você pode usar diferentes tipos de caracteres curinga para pesquisar arquivos é mostrado neste tutorial.

Personagens curinga

Os três principais caracteres curinga são,

  • Estrela ou asterisco (*)
  • Ponto de interrogação (?)
  • Suportes quadrados ([])

Asterisco (*) é usado para procurar um (s) personagem (s) em particular por zero ou mais vezes. Ponto de interrogação (?) é usado para procurar um número fixo de caracteres em que cada ponto de interrogação (?) indica cada personagem. Suportes quadrados são usados ​​para combinar com os caracteres de um alcance definido ou um grupo de caracteres. Os usos desses caracteres são mostrados na próxima parte deste tutorial.

Uso de asterisco (*)

Asterisk (*) pode ser usado de várias maneiras com comandos de shell para pesquisa de arquivos. O uso diferente do asterisco (*) é mostrado nos exemplos a seguir.

Exemplo - 1: Pesquisando arquivo específico com o nome do arquivo e '*'

'ls' O comando é usado para descobrir a lista de arquivos e pastas do diretório atual. 'ls a*' O comando pesquisará e imprimirá todos os nomes de arquivos do diretório atual que começa com o personagem, 'a'.

$ ls
$ LS A*

Saída:

De acordo com a saída a seguir, existem 12 arquivos no diretório atual que começa com o personagem, 'a'.

Exemplo - 2: Pesquisando o arquivo com extensão específica e '*'

Você pode pesquisar qualquer arquivo usando o asterisco (*) e a extensão do arquivo. Se você quiser pesquisar todos os arquivos com o '.TXT' Extensão do diretório atual, execute o seguinte comando do terminal. Aqui, o nome do arquivo pode ser qualquer caractere (s) e qualquer número de caracteres.

$ ls *.TXT

Você também pode pesquisar arquivos de diferentes extensões usando o asterisco (*). O comando a seguir pesquisará todos os arquivos com extensão '.sh ' ou '.TXT'

$ ls *.Sh *.TXT

Saída:

A saída mostra a lista de todos os arquivos existentes do diretório atual com a extensão '.sh 'e'.TXT.

Exemplo - 3: Remoção do arquivo por correspondência parcial e '*'

Você pode usar o asterisco (*) para corresponder a qualquer nome de arquivo parcialmente. O seguinte comando removerá o arquivo que contém o 'teste' palavra em qualquer parte do nome do arquivo.

$ ls
$ rm *teste *
$ ls

Saída:

A saída a seguir mostra que existem dois arquivos no diretório atual que contém a palavra 'teste' e esses arquivos foram removidos após a execução do comando 'rm'.

Uso do ponto de interrogação (?)

Quando você conhece o número exato de caracteres que deseja pesquisar, então o ponto de interrogação (?) CARINDO PODE SER USADO. Os exemplos a seguir mostram o uso diferente do ponto de interrogação (?) curinga.

Exemplo - 1: Pesquisando o arquivo com o nome do arquivo e '?'

Suponha que a extensão do arquivo, o número total de caracteres de um arquivo e alguns caracteres do arquivo sejam conhecidos, então você pode usar esse curinga para pesquisar no arquivo. O primeiro comando pesquisará os arquivos que têm a extensão '.TXT'. O segundo comando pesquisará os arquivos com quatro caracteres, o último personagem é 't' e a extensão do arquivo é '.TXT'.

$ ls *.TXT
$ ls ???t.TXT

Saída:

A saída mostra que 7 arquivos existem no diretório atual com o '.TXT 'Extensão e um arquivo de texto existe com 4 caracteres e o último personagem é' t '.

Exemplo -2: Pesquisando o arquivo com extensão e '?'

Suponha que você conheça o nome do arquivo e o número total de caracteres da extensão do arquivo, então você pode usar o ponto de interrogação (?) curinga para pesquisar o arquivo. O comando a seguir pesquisará o arquivo com o nome do arquivo 'olá' E a extensão tem três caracteres.

$ ls
$ ls Olá.???

Saída:

De acordo com a saída, existem dois arquivos no diretório atual que tem o nome 'Hello' e a extensão tem três caracteres.

Uso de colchetes ([])

Diferentes faixas de caracteres ou grupo de caracteres podem ser usadas dentro de colchetes ([]) para pesquisar arquivos com base no intervalo.

Exemplo -1: Pesquise arquivos de qualquer extensão com valores de dois intervalos

O comando a seguir pesquisará qualquer arquivo cujo nome contenha qualquer caractere dentro de 'A-P'e qualquer dígito dentro'0-5'E a extensão do arquivo pode ser qualquer personagem.

$ ls
$ LS [A-P0-5]*.*

Saída:

A saída a seguir mostra a lista de todos os arquivos que correspondem ao padrão usado no comando.

Exemplo 2: O arquivo de pesquisa começa com um personagem específico e é seguido por outro personagem

Neste exemplo, o segundo comando pesquisará os nomes de arquivos começando com qualquer um desses personagens [AFGH] seguido pelo personagem 'O' com qualquer extensão.

$ ls
$ LS [AFGH]*O*

Saída:

A saída a seguir mostra a lista de todos os arquivos que correspondem ao padrão usado no comando.

Exemplo 3: Nomes de arquivos de pesquisa com o valor do prefixo

O comando a seguir corresponderá aos arquivos cujo nome começa com 'fn' e é seguido por um número dentro de 0 a 5.

$ ls fn [0-5]

O comando a seguir corresponderá aos arquivos que contêm o nome, 'Hello' e a extensão contém qualquer caractere de t para z.

$ ls Olá.[T-Z]*

Saída:

A saída a seguir mostra a lista de todos os arquivos que correspondem ao padrão usado nos comandos.

A classe de caracteres pode ser usada nos terceiros colchetes para combinar com o nome do arquivo ou a string específica no script. Diferentes classes que podem ser usadas no padrão descrito abaixo.

Nome da classe Propósito
[:alfa:] É usado para combinar com qualquer letra maiúscula e minúscula e equivalente a [a-za-z].
[: Digit:] É usado para combinar com qualquer dígito e é equivalente a [0-9].
[: Alnum:] É usado para combinar com qualquer alfabeto e dígito. É equivalente a [a-za-z].
[:superior:] É usado para combinar apenas com a mancha e equivalente a [a-z]
[:mais baixo:] É usado para combinar apenas com a mancha e equivalente a [a-z]
[:em branco:] É usado para combinar com espaço e guia.
[:imprimir:] É usado para combinar com caracteres imprimíveis.
[: cntrl:] É usado para combinar com caracteres não impressos.
[:espaço:] É usado para combinar com o espaço do while.
[: xdigit:] É usado para combinar com dígitos hexadecimais.
[: ASCII:] É usado para combinar com caracteres ASCII.
[:palavra:] É usado para caracteres alfanuméricos, incluindo sublinhado (_).

Os usos de quatro classes usadas principalmente nos quatro exemplos a seguir.

Exemplo 1: Uso de [: alfa:] no script Bash

O script a seguir verificará se a entrada obtida do usuário contém apenas caracteres alfabéticos.

#!/BIN/BASH
eco -n "Qual é o seu nome? "
# Atribua valor de entrada à variável
Leia o nome
# Verifique o valor de entrada contém apenas o alfabeto
se [["$ name" = ~ ^[[: alfa:]]]]; então
eco "Seu nome é $ nome."
outro
eco "entre no caráter alfabético."
fi

Saída:
A saída a seguir mostra a mensagem para entrada inválida e válida.

Exemplo 2: Uso de [: Digit:] no script Bash

O script a seguir verificará se a entrada obtida do usuário contém apenas caracteres numéricos.

#!/BIN/BASH
eco -n "Digite seu id:"
# Atribua valor de entrada à variável
Leia ID
# Defina o valor de identificação
Id = "id- $ id"
# Defina o padrão usando a classe [[: Digit:]]
regex = "Id-[[: dígito:]+"
# Verifique se o valor de entrada contém apenas o número
se [[$ id = ~ $ regex]]; então
eco "$ id é válido."
outro
eco "$ id é inválido."
fi

Saída:

A saída a seguir mostra a mensagem para entrada inválida e válida.

Exemplo 3: Uso de [: Alnum:] no script Bash

O script a seguir verificará se a entrada obtida do usuário contém apenas caracteres alfanuméricos.

#!/BIN/BASH
eco -n "Digite seu endereço:"
# Atribua valor de entrada à variável
Leia Addr
# Verifique o valor de entrada contém o alfabeto e o número apenas
se [[$ addr = ~ ^[[: alnum:]]]]; então
Echo ", o endereço é válido."
outro
eco "o endereço é inválido."
fi

Saída:

A saída a seguir mostra a mensagem para entrada inválida e válida.

Exemplo-4: Uso de [: Upper:] no script Bash

O script a seguir verificará se a entrada obtida do usuário contém apenas letras maiúsculas.

#!/BIN/BASH
eco -n "Digite seu código na carta de maiúsculas:"
# Atribua valor de entrada à variável
Leia o código
# Verifique se o valor de entrada contém todos os últimos
se [[$ code = ~ ^[[: Upper:]]]]; então
eco "o código está correto."
outro
O código de eco "pode ​​conter apenas maiúsculas."
fi

Saída:

A saída a seguir mostra a mensagem para entrada inválida e válida.

Conclusão

Os usos básicos de caracteres curinga para pesquisar arquivos no terminal e validação de dados usando scripts bash foram mostrados neste tutorial. Espero que os exemplos mostrados aqui ajudem os usuários do Linux a escrever padrões regulares de expressão corretamente para corresponder a qualquer conteúdo para diferentes fins.