Linux shell script REGEX e File Globbing
---
Alguns comandos para usar no linux:
cd
cd ~
cd ..
cd ../../
cd -
cd ~/Documentos/
cd ~/Vídeos/Legendas/Niver-Legendas/
pwd
clear
ls
ls -ltr
ls -ltC
ls -1
ps
ps axu
ps axu | more
touch nome-do-arquivo-a-ser-criado
touch arquivo-existente-atualiza-o-horário
man touch
echo palavra-a-ser-ecoada
echo 'palavra a ser ecoada'
echo -e '\nAcima \n\tNo meio \nAbaixo\n'
echo -e "\ncoluna1\tcoluna2\tcoluna3\t\n"
man echo
mkdir nome-do-diretório
mkdir -p nome-do-diretório/nome-do-sub-diretório/
rm -f nome-do-arquivo
rm -r nome-do-diretório
cp nome-do-arquivo-original nome-da-cópia-do-arquivo-original
cp -r nome-do-diretório-original nome-da-cópia-do-diretório-original
mv nome-do-arquivo-original novo-nome-para-o-arquivo
sleep 10
cat nome-do-arquivo
cat -b nome-do-arquivo
cat -A nome-do-arquivo
tac nome-do-arquivo
tail nome-do-arquivo
tail -n3 nome-do-arquivo
head nome-do-arquivo
head -n1 nome-do-arquivo
head -c8 nome-do-arquivo
wc nome-do-arquivo
wc -l nome-do-arquivo
wc -c nome-do-arquivo
wc -m nome-do-arquivo
wc nome-do-arquivo*
tail -n5 nome-do-arquivo | wc -w
sort nome-do-arquivo
sort -r nome-do-arquivo
sort -k2 nome-do-arquivo
tail /etc/passwd
tail /etc/passwd | sort -k3 -t ":" -g
uniq nome-do-arquivo
sort nome-do-arquivo | uniq
sort nome-do-arquivo | uniq -u
sort nome-do-arquivo | uniq -d
sort nome-do-arquivo | uniq -c
sort nome-do-arquivo | uniq -c | sort
sort nome-do-arquivo | uniq -c | sort -r
sort nome-do-arquivo | uniq -c | sort -r | head -n1
---
Funcionamento do Linux:
hardware > kernel > shell > usuário
---
O shell interpreta o script.
---
O shell padrão no linux é o bash. Ele é melhoria do shell sh e incorpora csh e ksh.
O shell csh traz recursos da linguagem C é diferentes e faz coisas que os outros não fazem.
---
echo $0
echo $SHELL
tail /etc/passwd
---
Uso de aspas:
caracteres especiais.
* / $ ``
As `` fazem um sub-comando dentro do shell.
---
Aspas protegem.
echo *
echo "*"
aspas duplas protegem o caractere.
Pode usar apóstrofos para proteger.
echo '*'
Mas aspas simples se comportam diferente de aspas duplas.
A barra invertida protegeo caractere seguinte. O shell não interpreta o caractere.
echo \*
ls "aluno*"
ls 'aluno*'
ls aluno\*
---
Aspas duplas não protegem cifrão, crase e a barra normal:
$ ` /
---
Quando temos variável cifrão ele estará buscando uma variável.
---
Aspas simples (apóstrofo) protegem tudo. 3 Exemplos:
1) echo $SHELL
2) echo "$SHELL"
3) echo 'SHELL'
---
Todos tem utilidade depende do caso. As aspas duplas são mais usadas.
---
Exemplo de barra invertida:
echo '5espaços 5espaços 5espaços'
echo 5espaços\ \ \ \ \ \5espaços 5espaços
---
Abro o editor de texto Gedit ou nano.
---
Expressões regulares:
File Globbing é diferente de Regex.
File Globbing: Forma do bash de selecionar arquivos de diretórios. Usa carcteres especiais para selecionar arquivos de diretórios.
---
Exemplo de File Globbing:
touch Aula1.txt Aula2.txt Aula3.txt Aula4.txt Aula5.txt aula6.txt
---
OBS:
Note que todos os arquivos começam com maiúsculas menos aula6.txt
---
ls Aula*
ls Aula2*
ls -la Aula[1234]*
ls -la Aula[1-5]*
ls -la Aula[1-6]*
ls -la [Aa]ula[1-6]*
ls -la [Aa]ula[156]*
ls -la *[12]*
ls {Aula,aula}[16]*
ls {Aula,aula}[16].txt
ls -l *5*
ls -l *5.txt
ls -l {Aula,aula}4*
ls -l {Aula,aula}4.txt
---
OBS File Globbing:
Os colchetes [] fazem listas e as chaves {} escolho as strings que me interessam.
---
Mais exemplos File Globbing:
ls -la Aula2*
ls -la Aula2?
ls -la Aula2????
---
File Globbing funciona com quase todos os comandos GNU/Linux.
---
Regex: Expressão regular. Usa caracteres para selecionar um padrão de texto. É para seleção de texto.
---
Usando o Regex:
---
Exemplos comando:
--
echo -e '\nEste texto vai para Aula1.txt.\n\nEle contém algumas palavras:\n\nCada, Cardo, Arame, Arca, Bote, boca, vira, Voa, Dura, dedo, Elfo, eifel, fardo, Fargo, guia, Guria, hostel, Hostil, Juno, jim, Inca, indo, Karma, kraken, Lele, lili, Mosca, mouse \nNunca \n \n# Um comentário \n \nnever\nOpera \nopus \nbaiog \nbeirag \nbicag \nquerer \nQueijo \nLeva \nLinux \nlinux \nLinuxDistro \nHostel \nhostel \nLinux \nlinux \nSistema operacional Linux \nGNU \ngnu \nGNULinux \ngnulinux \n' > Aula1.txt
---
Comandos para imprimir o texto no terminal:
cat Aula1.txt
cat Aula1*
---
Usar grep ou egrep ou grep -e.
---
Para aparecer colorido criam um alias para o egrep pode ser em ~/.bashrc (muitos .bashrc já vem com esta opção):
#
alias egrep='egrep --color=auto'
#
---
OBS:
Abro o terminal onde está o arquivo Aula1.txt e executo:
egrep "[Hh]ostel" Aula1.txt
---
Resultado do comando acima:
$ egrep "[Hh]ostel" Aula1.txt
Cada, Cardo, Arame, Arca, Bote, boca, vira, Voa, Dura, dedo, Elfo, eifel, fardo, Fargo, guia, Guria, hostel, Hostil, Juno, jim, Inca, indo, Karma, kraken, Lele, lili, Mosca, mouse
Hostel
hostel
---
Executo os REGEX abaixo:
egrep [Gg]NULinux Aula1*
egrep [GgNnUu][Ll]inux Aula1*
---
Resultados da execução do REGEX:
$ egrep [Gg]NULinux Aula1*
GNULinux
$ egrep [GgNnUu][Ll]inux Aula1*
GNULinux
gnulinux
---
Executo o REGEX "b[a]*" com File Globbing (Aula1*):
egrep "b[a]*" Aula1*
---
Resultado do REGEX com File Globbing:
$ egrep "b[a]*" Aula1*
Cada, Cardo, Arame, Arca, Bote, boca, vira, Voa, Dura, dedo, Elfo, eifel, fardo, Fargo, guia, Guria, hostel, Hostil, Juno, jim, Inca, indo, Karma, kraken, Lele, lili, Mosca, mouse
baiog
beirag
bicag
---
O REGEX trabalha com o texto ou com as strings que estão escritas dentro de um arquivo. O File Globbing trabalha por fora do arquivo ou diretório, ajudando a localizar. Por exemplo Aula1*.
---
Comando REGEX:
egrep "b[a-i]*" Aula1*
---
Resultado:
$ egrep "b[a-i]*" Aula1*
Cada, Cardo, Arame, Arca, Bote, boca, vira, Voa, Dura, dedo, Elfo, eifel, fardo, Fargo, guia, Guria, hostel, Hostil, Juno, jim, Inca, indo, Karma, kraken, Lele, lili, Mosca, mouse
baiog
beirag
bicag
---
Comando REGEX:
egrep "^Linux" Aula1.txt
---
Resultado do comando REGEX:
$ egrep "^Linux" Aula1.txt
Linux
LinuxDistro
Linux
---
Comando REGEX:
egrep -v "^[Ll]inux" Aula1.txt
---
Resultado do comando REGEX:
$ egrep -v "^[Ll]inux" Aula1.txt
Este texto vai para Aula1.txt.
Ele contém algumas palavras:
Cada, Cardo, Arame, Arca, Bote, boca, vira, Voa, Dura, dedo, Elfo, eifel, fardo, Fargo, guia, Guria, hostel, Hostil, Juno, jim, Inca, indo, Karma, kraken, Lele, lili, Mosca, mouse
Nunca
# Um comentário
never
Opera
opus
baiog
beirag
bicag
querer
Queijo
Leva
Hostel
hostel
Sistema operacional Linux
GNU
gnu
GNULinux
gnulinux
---
Comando REGEX:
egrep "Linux" Aula1.txt
---
Resultado:
$ egrep "Linux" Aula1.txt
Linux
LinuxDistro
Linux
Sistema operacional Linux
GNULinux
---
REGEX para linhas em branco:
egrep "^$" Aula1*
egrep -v "^$" Aula1*
---
OBS:
No uso de caracteres especiais há diferenças entre REGEX e File Globbing
---
Asterisco *
Comando exemplos REGEX asterisco:
egrep "A[a-r]*" Aula1*
egrep "A[a-r]e*" Aula1*
---
OBS:
e* Pode não existir ou pode exitir uma ou várias vezes.
---
Para por aqui hoje. Sabe, aqui no Brasil a crise tá braba mesmo!
A gente paga para aprender qualquer coisa na internet.
Paga para aprender a digitar, paga para saber shell script, para para saber File Globbing e para caro para aprender REGEX e eu também pago.
Mas não cobro nada para transmitir o conhecimento meu, que foi adquirido por mim através do meu estudo e esforço pessoal.
Existem bloqueios para conteúdo gratúito oferecido por outros sites em outros países, em universidades gratúitas do exterior que você poderia aprender tudo de graça se souber estudar estas coisas em inglês. Mas se você está no Brasil tudo passa por um filtro e quem quer aprender é rastreado e muitas vezes corre o risco de ser hackeado. Não por estrangeiros, mas talvez pelos nossos irmãos brasileiros que precisam sobreviver. Talvez. Ou não. Ou não.
---
Até Breve!
---
:)
---