Tutorial de Bash Globbing

Bash Globbing Tutorial



O Bash não oferece suporte a expressões regulares nativas como algumas outras linguagens de programação padrão. O recurso de shell Bash usado para corresponder ou expandir tipos específicos de padrões é chamado de globbing. Globbing é usado principalmente para combinar nomes de arquivos ou pesquisar conteúdo em um arquivo. Globbing usa caracteres curinga para criar o padrão. Os caracteres curinga mais comuns usados ​​para criar padrões de globbing são descritos a seguir.

‘?’ é usado para corresponder a qualquer caractere único. Você pode usar ‘?’ por várias vezes para combinar vários caracteres.







Exemplo 1:



Suponha que você queira pesquisar os nomes de arquivos de texto cujos nomes têm 4 caracteres e a extensão é .TXT . Você pode aplicar o padrão globbing usando ' ? 'Quatro vezes para fazer esta tarefa.



Descubra a lista de todos os arquivos e pastas do diretório atual.





$ls-a

Execute o comando a seguir, pesquise os arquivos cujos nomes têm quatro caracteres e são desconhecidos.

$ ls -l ????. txt



Exemplo-2:

Suponha que você queira pesquisar os arquivos de documentos cujos nomes têm 8 caracteres, os primeiros 4 caracteres são f, o, o e t e extensão é doc . Execute o seguinte comando com padrão globbing para pesquisar os arquivos.

$ls -apé ????. doc

Exemplo-3:

Suponha que você saiba que o nome do arquivo é 'melhor' e a extensão tem 3 caracteres, mas não conheço a extensão. Execute o seguinte comando usando ‘? 'Para pesquisar todos os arquivos com o nome‘ teste ’tendo qualquer extensão de três caracteres.

$ls -amelhor.???

Asterisco - (*)

‘*’ é usado para corresponder a zero ou mais caracteres. Se você tiver menos informações para pesquisar qualquer arquivo ou informação, você pode usar ‘*’ no padrão globbing.

Exemplo 1:

Suponha que você deseja pesquisar todos os arquivos de 'Pl' extensão. Execute o seguinte comando usando ‘*’ para fazer essa tarefa.

$ls -a *.pl

Exemplo-2:

Suponha que você conheça o caractere inicial do nome do arquivo apenas que é 'para' . Execute o seguinte comando usando ‘*’ para pesquisar todos os arquivos do diretório atual cujos nomes são iniciados com 'para' .

$ls -apara*.*

Exemplo-3:

Você pode aplicar '*' no script bash para vários fins sem pesquisar arquivos. Crie um arquivo bash chamado ‘Check.sh’ com o seguinte script. Aqui, quando o usuário digitar ' y 'ou' S 'ou' sim 'ou' Sim ' então 'confirmado' irá imprimir e quando o tipo irá digitar ‘N’ ou ‘N’ ou ‘não’ ou ‘Não’ então 'Não confirmado' irá imprimir.

#! / bin / bash
jogou fora 'Você quer confirmar?'
leituraresponder
caso $ resposta no
[Yy]* ) jogou fora 'confirmado.';;
[]* ) jogou fora 'Não confirmado.';;
*) jogou fora 'Tente novamente.';;
esac

Execute o script.

$bashcheck.sh

Colchete - ([])

‘[]’ é usado para corresponder ao caractere do intervalo. Algumas das declarações de intervalo mais usadas são mencionadas abaixo.

Todos os alfabetos maiúsculos são definidos pelo intervalo como [: superior:] ou [A-Z].

Todos os alfabetos em minúsculas são definidos pelo intervalo como, [: inferior:] ou [a-z].

Todos os dígitos numéricos são definidos pelo intervalo como, [: dígito:] ou [0-9].

Todos os alfabetos maiúsculos e inferiores são definidos pelo intervalo como [: alpha:] ou [a-zA-z].

Todos os alfabetos maiúsculos, letras minúsculas e dígitos são definidos pelo intervalo como, [: alnum:] ou [a-zA-Z0-9]

Exemplo 1:

Execute o seguinte comando para pesquisar todos os arquivos e pastas cujo nome contém p ou o que ou r ou s .

$ls -a [p-s]*

Exemplo-2:

Execute o seguinte comando para pesquisar todos os arquivos e pastas cujo nome comece com qualquer dígito de 1 a 5.

$ls -a [1-5]*

Ele não tem - (^)

Você pode usar ‘^’ com colchetes para definir o padrão globbing mais especificamente. ‘^’ pode ser usado dentro ou fora do colchete. ‘^’ É usado fora do colchete para pesquisar o conteúdo do arquivo que começa com um determinado intervalo de caracteres. ‘^’ É usado dentro do colchete para mostrar todo o conteúdo do arquivo, destacando as linhas que começam com um determinado intervalo de caracteres. Você pode usar diferentes tipos de padrões de globbing para pesquisar um conteúdo específico de um arquivo. 'pegada' comando é usado para pesquisa de conteúdo no bash. Suponha que você tenha um arquivo de texto chamado ‘List.txt’ com o seguinte conteúdo. Teste os exemplos a seguir para esse arquivo.

maçã
4000
Banana
700
laranja
850
Pera
9000
jaqueta

Exemplo 1:

Execute o seguinte comando para pesquisar essas linhas de list.txt arquivo que começa com P ou Q ou R .

$ grep '^ [P-R]' list.txt

Exemplo - 2:

Execute o seguinte comando para destacar essas linhas de list.txt arquivo que começa com A ou B ou C .

$ grep '[^ A-C]' list.txt

Sinal Exclamatório - (!)

Você pode usar '!' dentro do padrão de intervalo. Funciona da mesma forma que o uso do símbolo ‘^’ fora do padrão de intervalo. Alguns exemplos de uso '!' os sinais são dados abaixo.

Exemplo 1:

Execute o seguinte comando para mostrar essas linhas de list.txt arquivo que começa com ‘P’ ou Q ou R .

$ grep [! P-R] list.txt

Exemplo - 2:

Execute o seguinte comando para mostrar essas linhas de list.txt arquivo que começa com qualquer dígito de 4 a 8 .

$ grep [! 4-8] list.txt

Cifrão - ($)

‘$’ é usado para definir o caractere final. Se você quiser pesquisar informações com base no último caractere, poderá usar ‘$’ no padrão globbing.

Exemplo 1:

Execute o seguinte comando para pesquisar essas linhas de list.txt arquivo que termina com 'para' .

$ grep a $ list.txt

Exemplo - 2:

Execute o seguinte comando para pesquisar essas linhas de list.txt arquivo que termina com o número cinquenta .

$ grep 50 $ list.txt

Parêntese encaracolado - ({})

‘{}’ pode ser usado para combinar nomes de arquivos com mais de um padrão globbing. Cada padrão é separado por ‘,’ em colchetes sem nenhum espaço. Alguns exemplos são fornecidos a seguir.

Exemplo 1:

Execute o seguinte comando para pesquisar os arquivos cujos nomes têm 5 caracteres e a extensão é ‘Sh’ ou os dois últimos caracteres dos arquivos são ‘St’ e a extensão é 'TXT' .

$ ls -l {?????. sh, * st.txt}

Exemplo - 2:

Execute o seguinte comando para excluir todos os arquivos cujas extensões são ‘Doc’ ou ‘docx’ .

$rm {*.doc,*.docx}

Tubulação– (|)

O sinal '|' também é usado para aplicar mais de uma condição no padrão globbing. Cada padrão é separado pelo símbolo ‘|’ no comando.

Exemplo 1:

Execute o seguinte comando para pesquisar os nomes de arquivos que começam com o caractere ‘a’ e têm a extensão ‘bash’ ou ‘sh’.

$lspara*+(.bash|.sh)

Exemplo - 2:

Crie um arquivo bash chamado ‘Menu.bash’ e adicione o seguinte script. Se o tipo de usuário 1 ou S então vai imprimir Pesquisando texto . Se o tipo de usuário 2 ou R então vai imprimir Substituindo texto . Se o tipo de usuário 3 ou D então vai imprimir Excluindo texto . Vai imprimir Tente novamente para qualquer outra entrada.

#! / bin / bash
jogou fora 'Selecione qualquer opção do menu:'
leituraresponder
caso $ resposta no
1 |S) jogou fora 'Pesquisando texto';;
2 |R) jogou fora 'Substituindo texto';;
3 |D) jogou fora 'Excluindo texto';;
*) jogou fora 'Tente novamente.';;
esac

Execute o script.

$bashmenu.bash

CONCLUSÃO

Alguns dos padrões de globbing mais comumente usados ​​são explicados neste tutorial usando exemplos muito simples. Espero que depois de praticar os exemplos acima, o conceito de globbing fique claro para você e você seja capaz de aplicá-lo em comandos e scripts bash com sucesso.

Para mais informações confira este vídeo: