Linux shell script instrução case


A instrução case


A instrução case é uma boa alternativa para a instrução

if-then-else-fi (multinível)

O case permite que você combine vários valores com uma variável.
É mais fácil ler e escrever.


Para saber usar o case é necessário conhecer e saber usar o comando test.
Conhecer e saber usar if then else e fi.
Saber declarar variáveis junto com o if then else e fi somado ao comando test.


Exemplo:

## Declarando variável
VAR5=$1

## if, comando test (outra declaração) e then
if test "$1" -gt 1; then
	echo "$1 é maior que 1"
## else
else
	echo "$1 não é 1"
## fi
fi

O mesmo que o de cima :

VAR5=$1

if [ "$1" -gt 1 ]; then
	echo "$1 é maior que 1"
else
	echo "$1 não é 1"
fi

A instrução case permite que:

você verifique facilmente o padrão (condições).
Em seguida, processe uma linha de comando.
Se essa condição for avaliada como verdadeira.


Em outras palavras, o nome da variável $ é comparado com os padrões
até que uma correspondência seja encontrada.


*) atua como padrão e é executado se nenhuma correspondência for encontrada. O padrão pode incluir curingas.


Você deve incluir dois ponto e vírgula

;;

no final de cada comandoN.


O shell executa todas as instruções até os dois pontos-e-vírgulas que
estão próximos um do outro.


O esac é sempre necessário para indicar a declaração de final de caso.


Exemplo :

#!/bin/bash

#====================
## Data: 18-08-2020
## Nome: case_comando_argumentos.sh
## Exemplo de uso:
## ./case_comando_argumentos.sh -e nome_do_arquivo.txt
#====================

# Declarando variáveis
OPT=$1   	# opção
FILE=$2  	# nome do arquivo

# -------------------

echo
echo "Listando os 10 primeiros arquivos."
echo
sleep 3

	ls -t | head
	echo
read -p "Tecle Enter para continuar."

## 		test -e e -E correspondência de
## 		args de linha de comando

case $OPT in
  -e|-E)
  	echo "Editando arquivo $2 ..." 	## certifique-se de que o nome do arquivo
  									## foi passado corretamente, caso contrário,
  									## será exibido um erro

  	[ -z $FILE ] && { echo "Falta o nome do arquivo"; exit 1; } || nano $FILE
  	;;

  -c|-C)
  	echo "Exibindo arquivo $2 ..."

  	[ -z $FILE ] && { echo "Falta o nome do arquivo"; exit 1; } || cat $FILE
  	;;

  -d|-D)
  	echo "Hoje é $(date)"
  	;;

   *)
    echo "Argumento ruim!"
    echo "Uso: $0 -ecd nome-do-arquivo"
    echo "	-e file : Edita o arquivo."
    echo "	-c file : Exibe o arquivo."
    echo "	-d      : Mostra data e hora atual."
    ;;

esac

Conclusão :

A instrução case pode ser entendida por seres humanos comuns. O exemplo final é sofisticado mas, o trabalho que realiza é muito simples.

O usuário após criar o Bash shell script, dá permissão de execução. Abre o terminal onde o script está. Digita o nome do script com uma de 3 opções -e, -c e -d. A opção -e vai abrir um arquivo no nano para o usuário poder editar. A opção -c permite que o usuário leia o arquivo. A opção -d informa a data e hora atual do do sistema. Você poderia fazer a mesma coisa de maneiras muito mais simples, até mesmo com um Bash shell script bem tosco com poucas linhas, mas, aí você não aprenderia a usar o case, variáveis, if, then, else, fi. E estes, ao contrário do script tosco que eu gosto, podem ser utilizados para realizar grandes trabalhos que valem ouro.


Até Breve!

🙂


Algoritmo para bitcoin e litecoin? Coin?

semanickz

O que é algoritmo e qual é a diferença entre litecoin e bitcoin?

Algoritmo, Bitcoin e Litecoin

Algoritmo é uma sequência finita de instruções bem definidas e não ambíguas, cada uma das quais devendo ser executadas mecânica ou eletronicamente em um intervalo de tempo finito e com uma quantidade de esforço finita. É resultado de técnicas de cálculo que levaram séculos para se desenvolver.

Dizem que a principal diferença entre Bitcoin e Litecoin é o algoritmo e o número total de moedas que eles são capazes de produzir.

A rede Bitcoin (SHA-256) não pode exceder 21 milhões de moedas, mas Litecoin (Scrypt) pode chegar a 84 milhões de moedas.

As transações de processos de rede são diferentes.

Para Bitcoin, o tempo médio é de pouco mais de 10 minutos, enquanto o Litecoin leva apenas 2,5 minutos.

O Bitcoin utiliza o algoritmo SHA-256, considerado mais complexo que o Litecoin, que usa o Scrypt.

A Bitcoin tem a maior capitalização de mercado de criptomoeda com a Litecoin as vezes na sétima posição mais ou menos.

De acordo com a tendência do mercado, o futuro da Litecoin parece estável.

Ou não.

Se quiser tentar ganhar um pouco, pode visitar:

FLitleCoin

Até Breve!

🙂

Linux REGEX básico bash comandos exemplos

semanickz

Comandos Bash aprenda REGEX Básico


Bash Scripting: Aprenda a usar o REGEX (Básico)


Expressões regulares ou REGEX são basicamente cadeias de caracteres que definem um padrão de pesquisa, elas podem ser usadas para executar operações de 'Pesquisa' ou 'Pesquisa e Substituição', bem como podem ser usadas para validar uma condição como política de senha etc.
É uma ferramenta muito poderosa que está à nossa disposição e a melhor coisa sobre o uso do REGEX é que ele pode ser usados ​​em quase todas as linguagens de computador. Então, se você é do Bash Scripting ou cria um programa em Python, pode usar.
Ou também pode escrever uma consulta de busca em uma única linha.
Existe uma grande possibilidade de talvez num futuro próximo os melhores lugares (seja lá o que isto signifique), estarem destinados as pessoas que tem pelo menos alguma noção de código e me parece neste momento, que o REGEX é importante sob a ótica desta suposição. Não esquecendo que em certos países neste momento, crianças já começam a vida estudantil tendo algo diretamente ligado a código em suas disciplinas.


Podemos usá-los no Bash usando o 'egrep', mas se você quiser usá-los em outros idiomas, como python ou C, você pode usar a parte regex. Começo mostrando um exemplo de regex. REGEX BASH Exemplo:
---
/t[aeiou]l/
---
Mas o que isso significa? Isso significa que o regex mencionado procurará uma palavra que comece com "t", tenha uma das letras "a e o o" no meio e a letra "l" como a última palavra. Pode ser "tel" "tal" ou "til" / Match pode ser uma palavra separada ou parte de outra palavra como "tilt", "brutal" ou "telefone". A sintaxe para usar regex com grep é:
---
egrep “termo-de-busca-REGEX” local-onde-está-o-arquivo

Não se preocupe se estiver parecendo esquisito agora, este foi apenas um exemplo para mostrar o que pode ser alcançado com o REGEX e acredite, este foi o mais simples dos exemplos. Podemos conseguir muito mais a partir dele. Vamos agora começar com o básico.

Noções básicas de Regex:
Agora vamos começar a aprender sobre alguns caracteres especiais que são conhecidos como metacaractéres. Eles nos ajudam a criar um termo de pesquisa mais complexo. A seguir, veja a lista de metacaractéres básicos.

---
. O Ponto
[] Colchetes.
[^] Colchetes e o chapéu do vovô.
* O asterisco.
+ O sinal de mais.
? O ponto de interrogação.
{n,} As chaves que irão encontrar ´n´ números ou itens precedentes.
{,m} Vai encontrar igual ou menos que m números de ítens.
\ A barra invertida que é um caractere de escape usado para incluir um metacaractere que você está procurando em um código, texto, string.

---
"Exemplos:"

Abro pelo menu do sistema, um editor de texto gráfico parecido por exemplo com o editor de texto leafpad e escrevo palavras, frases uma em baixo da outra sem espaços entre elas. Por exemplo as palavras:

bana
bena
bina
bona
buna
Linux
GNU/Linux
mundo linux
Mundo Linux
Estudos Linux
estudos_linux
dog
TaK
Linux
Shane é um pouco para jogar bola
diga
Stdaemon
Subapul
Semprol
Std
Std1
Std8
StdB
Stdstulaktilbaibtemp
digo
dgrub
dgrab
dgrib
Non
Nen
Nin
Nnn
nanan
taeil
tall
lake
lak
laaakkk
Study
Study1
Artorv
arterv
artirv
estudantes
estuudarrte
Study2
Study3
baeb
baib
baoba
estudo
St1234d
Stntfd
Tempk
Termik
Estudo
Laka
lala
tilt
tel
laek
tool
estudo2

---

E salvo o arquivo com o nome de:
Arquivo-estudo-Regex.txt

Aí abro o terminal pelo menú do sistema no diretório onde está este arquivo e executo comandos Linux Bash REGEX. Assim é que a gente aprende.


grep “d.g” Arquivo-estudo-Regex.txt
---
Este regex significa que estamos procurando por uma palavra que comece com d, termine com g e possa ter qualquer caractere no meio do arquivo. Da mesma forma, podemos usar o caractere de ponto qualquer número de vezes para o nosso padrão de pesquisa, como T......H
---
grep “N[oen]n” Arquivo-estudo-Regex.txt
---
Aqui, estamos procurando uma palavra que começa com N, termina com n e só pode ter ou o ou e ou n no meio. Podemos mencionar de um único para qualquer número de caracteres dentro das chaves quadradas (colchetes).
---
grep “St[^1-9]d” Arquivo-estudo-Regex.txt
---
Isso significa que podemos ter todas as palavras que começam com "St", terminam com a letra "d" e não podem conter números de 1 a 9.
---
grep “lak*” Arquivo-estudo-Regex.txt
---
isso significa que podemos combinar com 'lake' ou 'la' ou 'lakkkkk'.
---
grep “lak+” Arquivo-estudo-Regex.txt
---
Aqui, k deve ocorrer pelo menos uma vez em nossa busca, então nossos resultados podem ser 'lake' ou 'lakkkkk' mas não 'la'.
---
grep “ba?b” Arquivo-estudo-Regex.txt
---
A string bb ou bab como com '?' multiplicador podemos ter uma ou zero ocorrência do caractere.
---
OBS:
É muito importante ao usar multiplicadores ficar atento ao exemplo abaixo. Suponha que tenhamos um regex:

---
grep “S.*l” Arquivo-estudo-Regex.txt
---
Neste caso obtemos resultados pequenos, bobos e também temos talvez 'Shane é um pouco para jogar bola'. Mas por que nós pegamos 'Shane é um pouco para jogar bola', nós só estávamos procurando as palavras de nossa busca, então por que nós pegamos esta frase completa na nossa saída?
---
grep “S.*?l” Arquivo-estudo-Regex.txt
---
Isto irá corrigir o comportamento do nosso regex:
---
grep “S.*\.” Arquivo-estudo-Regex.txt
---
E irá procurar e combinar todas as palavras que terminam com um caractere de ponto.
---
"Para saber melhor visite a fonte no final deste post."
---
fonte
---
Aprendendo REGEX Linux Bash
---
Crio um arquivo de texto simples em um editor de texto tipo o leafpad. O nome do arquivo é:
---
mysampledata.txt
---
Colo neste arquivo o mysampledata.txt as linhas abaixo.
---
Fred apples 20
Susy oranges 5
Mark watermellons 12
Robert pears 4
Terry oranges 9
Lisa peaches 7
Susy oranges 12
Mark grapes 39
Anne mangoes 7
Greg pineapples 3
Oliver rockmellons 2
Betty limes 14

---
Abro o terminal onde está o arquivo de texto.
---
Digamos que desejamos identificar todas as linhas que continham a string mellon.
---
egrep 'mellon' mysampledata.txt
---
O comportamento básico do egrep é que ele imprimirá toda a linha para cada linha que contiver uma sequência de caracteres que corresponda ao padrão fornecido. É importante notar que não estamos procurando uma palavra, mas uma sequência de caracteres. Observe também que incluímos o padrão entre aspas. Isso nem sempre é necessário, mas é mais seguro adquirir o hábito de usá-los sempre. Eles são necessários se o padrão contiver caracteres que tenham um significado especial na linha de comando. Às vezes, queremos saber não apenas quais linhas correspondem, mas também o número da linha delas.
---
egrep -n 'mellon' mysampledata.txt
---
Ou talvez não tenhamos interesse em ver as linhas correspondentes, mas queremos saber quantas linhas corresponderam.
---
egrep -c 'mellon' mysampledata.txt
---
REVISANDO: Aprendendo Expressões Regulares. A melhor maneira de aprender expressões regulares é experimentar os exemplos e modificá-los um pouco para testar sua compreensão. É comum cometer erros em seus padrões enquanto você está aprendendo. Quando isso acontece, normalmente cada linha será correspondida ou nenhuma linha será correspondida ou algum conjunto obscuro. Não se preocupe se isso acontecer você não fez nenhum dano e pode facilmente voltar e tentar outra vez. Lembre-se de que você pode pressionar a seta para cima no seu teclado para obter os comandos recentes e modificá-los para não precisar redigitar o comando inteiro a cada vez.
---
Se você não está obtendo o resultado que deseja, aqui estão algumas estratégias básicas. Primeiro, verifique se há erros de digitação. Se você é como eu, então você está propenso a fazê-las. Leia o conteúdo aqui. Talvez o que você pensou que um operador em particular tenha feito seja ligeiramente diferente do que ele realmente faz e lê novamente, você notará um ponto que pode ter perdido na primeira vez.
---
Divida seu padrão em componentes individuais e teste cada um deles individualmente. Isso ajudará você a ter uma ideia de quais partes do padrão estão corretas e de quais partes você precisa ajustar.
---
Examine sua saída. Seu padrão atual pode não ter funcionado como você quer, mas ainda podemos aprender com ele. Observar o que realmente fizemos e usá-lo para ajudar a entender o que realmente aconteceu nos ajudará a descobrir o que devemos tentar mudar para nos aproximarmos do que realmente queremos.
---
As expressões regulares para usar no estudo do REGEX:
---
. (ponto) um único caractere.
? (interrogação) O caractere precedente corresponde a 0 ou 1 somente.
* (asterisco) o caractere anterior corresponde a 0 ou mais vezes.
+ (mais) o caractere anterior corresponde a 1 ou mais vezes.
{n} (n entre chaves) o caractere precedente corresponde exatamente a n vezes.
{n,m} (n vírgula m entre chaves) o caractere precedente corresponde a pelo menos n vezes e não mais que m vezes.
[agd] (agd entre colchetes) "the character is one of those included within the square brackets."
[^agd] - o caractere é um daqueles incluídos entre os colchetes.
[c-f] (c traço f entre colchetes) o traço dentro dos colchetes funciona como um intervalo. Neste caso, significa as letras c, d, e ou f.
() - nos permite agrupar vários caracteres para se comportar como um.
| (pipe) a operação OR lógica.
^ (circunflexo) tem que estar no início da linha.
$ (cifrão) corresponde ao início da linha.

---
Vamos começar.
---
egrep '[aeiou]{2,}' mysampledata.txt
egrep '2.+' mysampledata.txt
egrep '2$' mysampledata.txt
egrep 'or|is|go' mysampledata.txt
egrep '^[A-K]' mysampledata.txt
---
Para saber melhor visite a fonte:
Fonte
---
Até Breve! 🙂
---

Me zipa, me unzipa!



Linux comandos para compactar diretórios e arquivos

---

OBS:

Sem enrola VPN Gratis

---

O Zip é uma ferramenta de compactação que está disponível na maioria dos sistemas operacionais até ontem.

---

Vamos ver como instalar, usar e dicas sobre o comando zip.

---

Instalação:

Instalar zip e unzip pela central de programas da sua Distro Linux.

---

Tutorial começa

Abra o terminal onde está/estão o(s) arquivo/diretório(s) a ser(em) compactado/descompactado(s) em zip.

---

Zipando arquivos individualmente:

zip -r nome-para-o-arquivo.zip arquivo-a-ser-zipado1 arquivo-a-ser-zipado2 diretório-a-ser-zipado

---

OBS:

Será criado um arquivo zip chamado de nome-para-o-arquivo.zip.

O -r do zip -r é usado para o caso de existirem sub-diretórios dentro do diretório a ser compactado e nesta anotação aqui, estou usando -r em tudo pois, se for apenas um arquivo acredito faz o serviço do mesmo jeito.

---

Para descompactar:

unzip nome-para-o-arquivo.zip

---

OBS:

Se está em outro lugar do sistema acho que dá para descompactar por exemplo:

unzip ~/Downloads/nome-para-o-arquivo.zip

---

Zipando um diretório:

zip -r nome-para-o-diretório-a-ser-zipado.zip ~/caminho/para/o/diretório/

---

Veja só isto abaixo

---

Exemplo terminal aberto onde está o arquivo a ser zipado e então zipando diretório ~/bin/ da home do usuário:

zip -r bin-zipado-2018.zip ~/bin/

---

OBS: Será criado um pacote chamado de bin-zipado-2018.zip.

---

Para descompactar o pacote bin-zipado-2018.zip:

unzip bin-zipado-2018.zip

---

Pode saber informações sobre os pacotes criados com o comando:

ls -lC nome-do-arquivo.zip

ls -lhC caminho/para/o/pacote/zip/nome-do-arquivo.zip

---

Zipar um diretório para um local diferente no sistema?

---

Veja só este exemplo aqui.

Criar um arquivo zip de um PDF que está ~/Documentos/ e se chama fulano.pdf para o diretório ~/Imagens e estou em ~/Vídeos/

---

Exemplo abaixo.

---

1) Criar arquivo fulano.pdf em Documentos com o comando:

touch ~/Documentos/fulano.pdf

2) Ir para o diretório Vídeo:

cd ~/Vídeos/

3) Do diretório Vídeo criar pacote fulano.zip em Imagens sendo que o arquivo está em Documentos:

zip -r ~/Imagens/fulano.zip ~/Documentos/fulano.pdf

---

Conferindo arquivos e pacotes pelo terminal:

1) ls -tlC ~/Imagens/ | head

2) ls -tlC ~/Documentos/ | head

3) ls -tlC ~/Vídeos/ | head

4) pwd

---

OBS:

Abra o seu gerenciador de arquivos e confere se está tudo certo. Para mim funcionou direitinho. Este conhecimento é útil para fazer coisas muitíssimo importantes.

---

Leia o conteúdo de um arquivo compactado sem extrair o arquivo

---

Como posso ler o conteúdo de um determinado arquivo em um arquivo sem extrair o arquivo .zip em que ele está contido?

---

Listar o conteúdo de um arquivo ZIP para saber o que tem dentro dele:

unzip -l nome-do-arquivo.zip

---

Use a opção -c para gravar o conteúdo dos arquivos nomeados na stdout (tela) sem precisar descompactar todo o arquivo. Canalize a saída para menos, caso contrário, todo o arquivo irá para a tela antes que você possa lê-lo.

---

unzip -c nome-do-arquivo.zip | less

unzip -c nome-do-arquivo.zip | head

unzip -c nome-do-arquivo.zip | tail

---

Para saber melhor:

Visite

---

Até Breve!

---

Dicas, críticas e comentários positivos são muito bem-vindos!

🙂

---

fonte

---

Post do semanickz (apenas um "average joe")

---

Quem precisar entrar em contato comigo, por favor, siga o procedimento abaixo por sua própria conta e risco (Kkkkk):

Contate-me!

Tranquilo(a)!


Manjaro 17.1.10 – Remover Pacotes Órfãos

2018

-------------------

Mandar um comando para dentro de um arquivo de texto pra eu conferir depois:

sudo pacman -Sargumento >> info-produzida-pelo-comando.txt

-------------------

Para obter informação detalhada de um pacote que eu quero instalar ou remover:

sudo pacman -Si nome-do-pacote

sudo pacman -Si nome-do-pacote >> info-detalhada-do-pacote.txt

-------------------

Para saber o que será/foi modificado:

sudo pacman -Qi nome-do-pacote

sudo pacman -Qi nome-do-pacote >> saida-do-comando1a.txt

sudo pacman -Qii nome-do-pacote

sudo pacman -Qii nome-do-pacote >> saida-do-comando1.txt

-------------------

Buscar um um pacote:

sudo pacman -Ss nome-do-pacote

sudo pacman -Ss nome-do-pacote >> saida-do-comando2.txt

-------------------

Atualizar todo o Manjaro:

sudo pacman -Syyuu

-------------------

Remover pacotes desnecessários:

sudo pacman -Qdt

-------------------

Verificar pacotes instalados manualmente por mim:

sudo pacman -Qe >> saida-do-comando3.txt

-------------------

Se eu quiser ver as dependências de um programa:

sudo pactree nome-do-programa

-------------------

Para listar os pacotes orfãos, executo:

sudo pacman -Qdt

-------------------

Se houver pacotes órfãos vai aparecer uma lista, então a remoção destes pacotes é realizada com o comando abaixo:

sudo pacman -Rns $(pacman -Qqdt)

-------------------

Remover todos menos as 3 últimas versões:

sudo paccache -rvk3

-------------------

Limpar o Cache aumenta espaço livre no disco, mas é melhor usar o comando acima. Usando o comando abaixo perco a possibilidade de downgrade:

sudo pacman -Sc

-------------------

Deixando a atualização do Manjaro mais rápida:

sudo pacman-mirrors -f 5 && sudo pacman -Syy

-------------------

Otimizando a database:

sudo pacman-optimize && sync

-------------------

Instalar um pacote baixado:

sudo pacman -U /package_path/package_name.pkg.tar.xz

-------------------

Posso também usar a URL:

sudo pacman -U http://www.examplepackage/repo/examplepkg.tar.xz

-------------------

Removendo pacotes:

sudo pacman -R nome-do-pacote

-------------------

Removendo pacotes com as dependências:

sudo pacman -Rs nome-do-pacote

-------------------

Listar os pacotes instalados:

sudo pacman -Q

-------------------

Listar os pacotes instalados e mandar para um arquivo de texto:

sudo pacman -Q >> lista-de-pacotes-instalados.txt

-------------------

Listar todos os pacotes do AUR:

sudo pacman -Qem

sudo pacman -Qem >> lista-de-pacotes-instalados-do-AUR.txt

-------------------

Ver dependências de pacotes:

sudo pactree nome-do-pacote

sudo pactree nome-do-pacote >> lista-dependencias-pacote1.txt

sudo pactree -c nome-do-pacote

sudo pactree -c nome-do-pacote >> lista-dependencias-pacote2.txt

sudo pactree -s -c nome-do-pacote

sudo pactree -s -c nome-do-pacote >> lista-dependencias-pacote3.txt

-------------------

Reinstalando o yaourt:

sudo pacman -S base-devel yaourt

yaourt -Syua

yaourt -Syua --devel

yaourt -Qdt

-------------------

Até Breve

🙂

.

Manjaro 17.1.10 – Comandos & Guia Pós-Instalação

Manjaro 17.1.10 Hakoila (XFCE) - COMANDOS E TUTORIAL PÓS-INSTALAÇÃO

-------------------

Utilizando Kernel: x86_64 Linux 4.16.7-1-MANJARO, instalado de modo gráfico com o gerenciador de pacotes do sistema.

-------------------

Este tutorial foi testado em máquina virtual. Funcionou muito bem. Uso por MINHA conta e risco. Continuo sendo um estudante de Linux.

-------------------

Atualmente, é recomendado instalar todos os aplicativos de modo gráfico usando o aplicativo gerenciador de pacotes chamado Pamac. Podemos instalar programas pelo terminal usando o comando pacman, yaourt e packer.

-------------------

Podemos fazer praticamente tudo pelo terminal no Linux, percebo, que funciona usar o comando yaourt e o comando packer (packer está sem atualização desde 2015) para instalar e remover pacotes; mas não são fundamentalmente necessários, pois existe o "Pamac 6.3.1-1" programa gráfico sofisticado para atualizar, adicionar e remover programas no MANJARO 17.1.10 criado por Guillaume Benoit.

-------------------
GUIA PÒS-INSTALAÇÂO MANJARO - 17.1.10 Hakoila (XFCE)
-------------------

Manjaro o que é Pamac?

"Pamac é um pedaço de software que permite a você instalar software no seu computador. Ele pode ser chamado pelo menu do sistema digitando Adicionar/remover programas."

"Pamac 6.3.1-1" programa gráfico sofisticado para atualizar, adicionar e remover programas no MANJARO 17.1.10 criado por Guillaume Benoit.

Software é uma sequência de instruções escritas para serem interpretadas por um computador com o objetivo de executar tarefas específicas. Para fins contábeis e financeiros, o software é considerado um bem de capital.

-------------------

Deste tutorial todos os aplicaticos que usem o comando “pacman -S” ou, “sudo pacman -S (nome-do_programa)” são seguros de instalar via terminal.

-------------------

OBS:
Usuário comum não pode fazer alterações no sistema e USUÁRIO ADMINISTRADOR pode.

-----------------------
GUIA PÒS-INSTALAÇÂO MANJARO - 17.1.10 Hakoila (XFCE)
-----------------------

SE TORNANDO O ADMINISTRADOR:

-------------------

Abra o terminal com o menu do mouse botão direito. Ou abra o terminal pelo menu do sistema. Digite: cd e aperte a tecla Enter.

-------------------

Digite: sudo su , digite sua senha .

-------------------

Estará em modo administrador. Em modo administrador não uso “sudo” NUNCA. O sudo é usado para fazer alterações no sistema. Então tem outros comandos que informam sobre diversas coisas, realizam diversas tarefas e assuntos que não necessitam do sudo. Tenho sempre isto em mente.

-------------------

Neste tutorial caso vejo “# sudo” desconsidero o “#” e execute o comando sem ser administrador.

-------------------

OBS: Recomendam não usar o comando: sudo pacman -Su (este cmd atualiza parcialmente os pacotes e isto é meio que tóxico para nosso belo Manjaro, ok?)

-------------------

O modo administrador é usado para alterações no sistema e com cuidado para não executar comandos inadequados que podem desestabilizar o sistema.

-------------------

O modo não administrador é mais seguro e deve-se usar de preferência apenas o comando pacman. O comando yaourt e packer podem instalar programas perigosos, não verificados. É um risco. O usuário que sabe de o que faz, sabe verificar estes programas antes de instala-los. Talvez estes comandos sejam uteis para verificação de pacotes:

-------------------

Comando que fornece resumo sobre o pacote/programa:

sudo pacman -Si nome_do_pacote

-------------------

Testo estes comandos abaixo e vejo se funcionam e entendo a função deles:

-------------------

1) sudo pacman nome-do-pacote -D

2) pacman nome-do-pacote -Q

3) sudo pacman nome-do-pacote -S

4) pacman nome-do-pacote -F

5) sudo pacman nome-do-pacote -V

-------------------

Não vejo motivo para preocupação pois, os programas oficiais do MANJARO todos podem ser instalados usando “sudo pacman -S” a atualização completa do sistema pode ser feita usando “sudo pacman -Syyu”.

.

É bom para quem quer aprender, usar todos os comando deste tutorial, mas em uma máquina destinada a estudo, ou, em uma máquina virtual.

.

Não deve-se estudar os comandos e testar softwares não pertencentes ao repositório oficial na máquina que usa-se para trabalhar.

.

GUIA PÒS-INSTALAÇÂO MANJARO - 17.1.10 Hakoila (XFCE)

.

Atualize todo o sistema. Primeiro passo é obrigatório. Não faça nada sem antes atualizar e reiniciar o sistema. Estes são tempos perigosos...

.

EXECUTANDO COMANDOS COMO ADMINISTRADOR:

.

Abro o terminal pelo menu do sistema. Executo:

.

1) sudo su

2) pacman -Syyuu

.

Sem ser administrador:

.

sudo pacman -Syyuu (Aperto enter e digito minha senha)

.

Depois sugiro que execute o comando abaixo:

.

1) sudo pacman -S yaourt ; sudo pacman -Sy ; sudo pacman -S packer ; sudo pacman -Syu ; sudo pacman -Syy ; sudo pacman -Syyuu ; yaourt -Syyuua

.

2) sudo sh -c 'packer -Syyuu ; pacman -Sy ; pacman -Syu ; pacman -Syy ; pacman -Syyuu ; update-grub' ; yaourt -Syyuua

.

Execute reboot do sistema com o comando abaixo e volte a este tutorial:

.

sudo shutdown -r now

.

Aperte enter

.

OBS:
“EDITORES DE TEXTO SERVEM NÃO APENAS PARA ESCREVER MENSAGENS, RESUMOS, HISTÓRIAS. SERVEM TAMBÉM PARA COMPILAR ASSIM COMO, ESCREVER PROGRAMAS.”

.

GUIA PÒS-INSTALAÇÂO MANJARO - 17.1.10 Hakoila (XFCE)

.

Instalo editores de texto.

.

$ sudo pacman -S leafpad gedit mousepad --noconfirm ; sudo pacman -Sy

.

SUGESTÃO

.

Linha de comando para update, upgrade e limpeza. Recomendado para o fim da pós-instalação depois de dar reboot.

.

Responda as perguntas do terminal sempre com sim (S) ou yes (Y). Copie e cole abaixo mas, não use # , pode começar o comando com o terminal em $.

.

yaourt -Syyuua ; sudo packer -Syyuu ; sudo pacman -Syu ; sudo pacman -Syy ; sudo pacman -Syyuu ; sudo pacman-optimize ; sudo pacman-mirrors -g ; sudo pacman-optimize && sync ; sudo pacman -Sy ; sudo pacman -Syy ; sudo pacman -Su ; sudo pacman -Syyu ; sudo pacman -Qdt ; sudo pacman -Syyuu ; sudo pacman-optimize ; yaourt -Syua -devel ; yaourt -Syyuua ; yaourt -Syu -devel -aur

.

sudo shutdown -r now (Novamente reinicio o sistema)

.

Após o reboot, volto a este tutorial.

.

GUIA PÒS-INSTALAÇÂO MANJARO - 17.1.10 Hakoila (XFCE)

.

Comandos de otimização:

sudo pacman-mirrors -g ; sudo pacman-optimize && sudo sync ; sudo pacman -Sy ; sudo pacman -Syy ; sudo pacman -Su ; sudo pacman -Syyu ; sudo pacman -Syyuu

.

COMANDOS MANJARO - 2018 - GUIA PÒS-INSTALAÇÂO MANJARO - 17.1.10 Hakoila (XFCE)

--------------------

Linhas de comando para atualização e otimização de todo o sistema Manjaro.
Vale a pena aprender isto.

--------------------

OBS:
Ao ser perguntado se quero remover repositórios digito não (n).

--------------------

sudo pacman -Syyuu ; sudo pacman -Sy ; sudo pacman -Su ; sudo pacman -Syy ; sudo pacman-optimize ; sudo pacman -Sc ; exit ; yaourt -Syua --devel ; yaourt -Syyuua ; yaourt -Syyuua ; yaourt -Syu --devel --aur

--------------------

LISTA DESCRITIVA DE COMANDOS:

--------------------

sudo pacman -Sy = sincroniza os repositórios.
---
sudo pacman -Su = procura por atualização.
---
sudo pacman -Syu = sincroniza os repositórios/procura por atualização.
---
sudo pacman -Syy = sincroniza os repositórios do Manjaro Linux.
---
sudo pacman -Syyu = sincronização total/procura por atualização.
---
sudo pacman -S pacote = instala um pacote.
---
sudo pacman -R pacote = remove um pacote.
---
sudo pacman -Rs pacote = remove o pacote junto com as dependências não usadas por outros pacotes.
---
sudo pacman -Rsn pacote = remove o pacote junto com as dependências não usadas por outros pacotes e junto com os arquivos de configuração.
---
sudo pacman -Ss pacote = procura por um pacote.
---
sudo pacman -Sw pacote = apenas baixa o pacote e não o instala.
---
sudo pacman -Si pacote = mostra informações de um pacote não instalado.
---
sudo pacman -Qi pacote = mostra informações do pacote já instalado.
---
sudo pacman -Se pacote = instala apenas as dependências.
---
sudo pacman -Ql pacote = mostra todos os arquivos pertencentes ao pacote.
---
sudo pacman -Qu = mostra os pacotes que serão atualizados.
---
sudo pacman -Q = lista todos os pacotes instalados.
---
sudo pacman -Qo arquivo = mostra a qual pacote aquele arquivo pertence.
---
sudo pacman -Qdt = lista pacotes desnecessários, sem dependências.
---
sudo pacman -Rns $(pacman -Qqdt) = apaga pacotes desnecessários, sem dependências
---
sudo pacman -A pacote.pkg.tar.gz = instala um pacote local.
---
sudo pacman -Sc = deleta do cache todos os pacotes antigos.
---
sudo pacman -Scc = limpa o cache, removendo todos os pacotes existentes no /var/cache/pacman/pkg/.
---
sudo pacman-optimize = otimiza a base de dados do pacman.
---
sudo pacman -Sdd = instala ignorando as dependências.
---
sudo pacman -Rdd = elimina um pacote ignorando as dependências.
---
sudo pacman-mirrors.conf = para gerenciar pacman.conf
---
sudo pacman-mirrors -g = para gerar um novo mirrorlist
---
sudo pacman -U home/user/arquivo.tar.xz = instalar pacotes baixados no pc
---
sudo pacman -U http://www.site.com/arquivo.tar.xz = instalar pacotes baixados via download
---
sudo pacman -Qem = lista pacotes instalados do repo AUR
---
sudo pacman -Rscn = desinstala pacotes e suas dependencias e seus registros, tudo.
---
sudo pacman -S pacote --nonconfirm = Instala o pacote sem precisar confirmar com “yes/no ,S/N”…
---
sudo pacman -Syu --ignoregroup pacote1 , pacote2… = sincroniza os repositórios/procura por atualização e ignora os grupos dos pacotes solicitados
---
yaourt -Syua --devel = sincronizar a base de dados
---
yaourt -Syyuua = atualizar o repo AUR
---
yaourt -Ss nome = pesquisar no repo AUR
---
yaourt -S nome = instalar pacotes do repo AUR
---
yaourt -R nome = remover pacotes do repo AUR
---
yaourt -Rsn nome = remover pacotes + dependências do repo AUR
---
yaourt -Syu --devel --aur = sincronizar a base de dados e atualiza pacotes

--------------------

GUIA PÒS-INSTALAÇÂO MANJARO - 17.1.10 Hakoila (XFCE) - COMANDOS DO PACMAN PARA ATUALIZAR O SISTEMA

--------------------

Abaixo segue a lista de comandos para atualizar o Manjaro Linux usando a linha de comando.

--------------------

Sincronizar repositório
sudo pacman -Sy

Procurar por atualização dos pacotes
sudo pacman -Su

Sincronizar os repositórios e procurar por atualizações
sudo pacman -Syu

Sincroniza os repositórios totalmente
sudo pacman -Syy

Sincroniza os repositórios totalmente e atualiza o Manjaro
sudo pacman -Syyu

--------------------

Porém a equipe de desenvolvedores do Manjaro Linux recomenda que ao atualizar o sistema, o usuário utilize o comando abaixo. Sincroniza os repositórios totalmente, atualiza o Manjaro e fixa a base de dados:

sudo pacman -Syyuu

--------------------

GUIA PÒS-INSTALAÇÂO MANJARO - 17.1.10 Hakoila (XFCE)

--------------------

COMANDOS DO PACMAN PARA PROCURAR PACOTE:

1) As sintaxes abaixo são úteis para buscar pacotes no repositório oficial do Manjaro Linux.

2) O comando de busca aceita variável absoluta, como um nome de um determinado pacote.

3) É possível procurar vários pacotes usando uma variável de categoria, permitindo buscas por termos como: www, browser, file manager, privacy. Para realizar uma busca por categoria os termos utilizados devem ser feitas em inglês.

4) A busca pode ser realizada usando termos relativos a um determinado grupo de pacotes como: gnome, kde, qt, openrc.

--------------------

Procurar pacote, termo ou grupo

1) pacman -Ss $pacote | $termo | $grupo

--------------------

Exemplificando:

1) busca por termo absoluto

pacman -Ss firefox

2) busca por categoria

pacman -Ss browser

3) busca por grupo

pacman -Ss gnome

--------------------
Manjaro Linux - Manjaro Linux - Manjaro Linux - Manjaro Linux
--------------------

COMANDOS DO PACMAN PARA BAIXAR PACOTE

O uso desse comando não é comum, mas podemos enfrentar alguma situação onde precisamos apenas baixar um pacote, é útil quando queremos fazer uma checagem em um determinado pacote para verificar localmente a sua integridade.

--------------------

Baixar pacote:

1) sudo pacman -Sw $pacote

--------------------

Comandos do pacman para instalar pacote

--------------------

OS COMANDOS DO PACMAN MAIS USADOS PARA INSTALAR PACOTES NO MANJARO LINUX SÃO OS TRÊS A SEGUIR

--------------------

Instalar um pacote do repositório oficial e resolver todas as suas dependências:

sudo pacman -S nome-do-pacote

--------------------

Instalar um pacote do repositório oficial ignorando suas dependências

sudo pacman -Sdd nome-do-pacote

--------------------

Instalar pacote do repositório de terceiros ou compilado localmente
sudo pacman -U $pacote.pkg.tar.xz

--------------------

Exemplificando:

INSTALANDO O FIREFOX COM TODAS AS SUAS DEPENDÊNCIAS

sudo pacman -S firefox

--------------------

Instalando o Firefox ignorando as suas dependências (muitos programas podem não funcionar por falta de suas dependências, portanto esse comando só deve ser usado por usuários experientes)

sudo pacman -Sdd firefox

--------------------

Instalando um pacote localmente (O terminal precisa está aberto na mesma localização do pacote)

sudo pacman -U yad-0.32.0-1-x86_64.pkg.tar.xz

--------------------

Instalando um pacote de repositório de terceiros (no exemplo instalo o Iceweasel do repositório do Parabola GNU/Linux)

sudo pacman -U https://www.parabola.nu/packages/libre/x86_64/iceweasel/download/

--------------------

Wiki ArchLinux escreveu:

"O gerenciador de pacote pacman é uma das grandes vantagens do Arch Linux. Combina um simples pacote no formato binário, com um fácil uso de sistema de compilação. A meta do pacman é tornar o mais fácil possivel gerenciar pacotes, sejam eles dos oficiais repositórios Arch ou das próprias compilações do usuário."

"Pacman mantém o sistema atualizado, listas de pacotes de sincronização com o servidor mestre."

"Este modelo servidor/cliente também permite o usuário baixar/instalar pacotes com um simples comando, completo com todas as dependências requeridas."

"Pacman é escrito na linguagem de programação C e usa o formato de pacote .pkg.tar.xz."

--------------------

Abaixo estão alguns comandos considerados significativos para serem usados no Manjaro ou distro baseadas no ArchLinux.

--------------------
Manjaro Linux - Manjaro Linux - Manjaro Linux - Manjaro Linux
--------------------

1. Atualizar o sistema

sudo pacman -Syyuu

2. Otimizar os espelhos

sudo pacman-mirrors -g
sudo pacman -Syy

3. Otimizar a base de dados

sudo pacman-optimize

4. Limpar o cache Limpe de pacotes que não estão instalados (/var/cache/pacman/pkg):

paccache -d
paccache -Sc
sudo pacman -Sc

5. Pesquisar por pacotes

pacman -Ss nome-do-pacote

6. Informar sobre pacotes

pacman -Si nome-do-pacote

7. Instalar pacotes

sudo pacman -S nome-do-pacote

8. Detalhar pacotes instalados

pacman -Qi nome-do-pacote

9. Remover pacotes

sudo pacman -R nome-do-pacote

10. Remover pacotes + dependências

sudo pacman -Rsn nome-do-pacote

11. Listar pacotes orfãos

pacman -Qqdt

12. Remover pacotes orfãos

sudo pacman -Rns nome-do-pacote

sudo pacman -Rns $(pacman -Qqdt)

13. Listar pacotes por endereço localmente

pacman -Ql nome-do-pacote

14. Listar pacotes por árvore de dependência

pactree nome-do-pacote

15. Listar pacotes instalados dos repos oficiais

pacman -Qen

16. Listar os pacotes (e suas dependências) instalados explicitamente com pacman ou yaourt, que ainda estejam em seu sistema.

pacman -Qet

17. Corrigir erro db.lck

sudo rm -f /var/lib/pacman/db.lck && sudo pacman-mirrors -g && sudo pacman -Syy

18. Atualizar o repo AUR

yaourt -Syyuua

19. Pesquisar no repo AUR

yaourt -Ss nome-do-pacote

20. Instalar pacotes do repo AUR

yaourt -S nome-do-pacote

21. Remover pacotes do repo AUR

yaourt -R nome-do-pacote

22. Remover pacotes + dependências do repo AUR

yaourt -Rsn nome-do-pacote

23. Listar pacotes instalados do repo AUR

pacman -Qem

----------------

INSTALANDO NO MANJARO, PACOTES/PROGRAMAS USANDO:

1) sudo pacman -S nomes_dos_pacotes_separados_por_espaço

2) sudo pacman -S vlc smplayer libreoffice firefox uget deluge calibre gimp pinta pix thunderbird filezilla hexchat nexuiz xboard dreamchess

.

Manjaro, como instalar programas sem ter que ficar confirmando o tempo todo?

.

O noconfirm tem dois tracinhos que o precede. Dois tracinhos. Tracinhos igual a:

sudo pacman nome-do-programa --noconfirm

----------------

Agora instalo alguns programas que gosto, alguns quero conhecer e outros preciso mesmo.

----------------

Programas de escritório, gráficos, internet, áudio e vídeo:

1) sudo pacman -S vlc --noconfirm

2) sudo pacman -S smplayer --noconfirm

3) sudo pacman -S rhythmbox --noconfirm

4) sudo pacman -Syu aegisub audacious audacity avidemux cheese pavucontrol deadbeef drumstick easytag quodlibet gaupol handbrake kamoso qmmp simplescreenrecorder caprine chromium deluge eolie falkon firefox rssguard-nowebengine telegram-desktop youtube-dl tor aria2 uget atril bookworm calibre fbreader freemind okular qpdfview sigil drumstick gcompris-qt buoh catfish clamtk conky-manager scribes terminator keepass l3afpad seahorse vim darktable filezilla firefox gimp smplayer inkscape isomaster qbittorrent sound-juicer tomahawk uget vlc firejail gufw firewalld rhythmbox

5) Para colocar aplicativos na sandbox firejail:

sudo pacman -Syu ; mkdir -p ~/.local/share/applications; for profile in $(basename -s .profile /etc/firejail/*.profile); do if [[ -f /usr/share/applications/$profile.desktop ]]; then sed -r 's/^(Exec=)/\1firejail /' /usr/share/applications/$profile.desktop > ~/.local/share/applications/$profile.desktop; echo $profile configured to run in firejail; fi; done ; sudo pacman optimize ; sudo pacman -Syyuu

----------------

Postei ano passado um guia pós instalação do Manjaro:

https://semanickz.wordpress.com/2017/07/01/manjaro-linux-guia-pos-instalacao-2017/

----------------

Fonte que me ajudou bastante neste artigo: Manjaro Brasil

----------------

Até Breve!

🙂

.

Linux – Comandos Sed & Awk com exemplos

Linux - Comandos Sed & Awk com exemplos

-------------

No terminal Linux, usando o Bash (interpretador de comandos) para eu executar o comando editor chamado "sed" e o comando de análise chamado "awk" em meus shell scripts tenho que entender expressões regulares (REGEX).

-------------

sed = comando editor de textos (strings)

awk = comando de análise de textos (strings)

-------------

Strings = sequência de caracteres alfanuméricos formando ou não palavras

-------------

String Exemplos:

123456
aBcDeF
boca14
cloro2

-------------

Regex :::::::: Referências

[abc] ------- Um único caractere: a, b, OU c

[^abc] ------- Qualquer caractere exeto/menos: a, b, OU c

[a-z] ------- Qualquer caractere de a até z

[a-zA-Z] ------- Qualquer caractere de a-z OU A-Z

^ ------- Começo da linha

$ ------- Fim da linha

\A ------- Começo da string

\z ------- Fim da string

. ------- Qualquer caractere

\s ------- Qualquer espaço em branco

\S ------- Qualquer espaço não em branco

\d ------- Qualquer digito

\D ------- Qualquer não digito

\w ------- Qualquer palavra (letra, numero, underscore)

\W ------- Qualquer caractere que não seja palavra

\b ------- Borda

(...) ------- Captura o que estiver dentro. Pode conter outros grupos

(a|b) ------- a OU b

a? ------- Zero ou um a

a* ------- Zero ou mais a

a+ ------- Um ou mais a

a{3} ------- Exatamente 3 a

a{3,} ------- 3 ou mais a

a{3,6} ------- Ente 3 a 6 a

-------------

Exemplo de uso do awk (executo no terminal):

-------------

(mostra na tela a primeira coluna da string)

echo '1929 :2108102121 53.68.0.55' | awk '{print $1}'

-------------

OBS:
print $1 (Exibe a primeira coluna)
print $2 (Exibe a segunda coluna e assim por diante)
print $NF (Exibe a última coluna)

-------------

Mais um exemplo de uso do awk:

echo '1929 :2108102121 53.68.0.55' | awk '{print $1}' | wc -c
4

(conta os caracteres do resultado anterior)

-------------

O FORMATO BÁSICO PARA A SUBSTITUIÇÃO COM SED É:

-------------

sed ‘s/ENCONTRA_STRING/SUBSTITUI_STRING/’

sed ‘s/FIND_STRING/REPLACE_STRING/g’

sed "s,encontrar_string,substituir_string," nome_do_arquivo

sed "s/encontrar_string/substituir_string/g" nome_do_arquivo.txt

sed -i "s/find_string/replace_string/g" filename

-------------

OBS:

O "-i" opção diz para editar a linha de texto ou o arquivo de texto sobrescrevendo-o.
Em outras palavras, o arquivo é editado sem a criação de um segundo arquivo.
A seção "s/find_string/replace_string/g", diz para substituir ("s"), o "replace_string" para o " find_string" globalmente ("g").
A última parte do comando ("filename") é o nome do arquivo a ser editado.

-------------

Se eu quiser guardar uma cópia do arquivo original, pode omitir o "-i" opção e especificar um arquivo de saída como:

sed "s/find_string/replace_string/g" filename > saída

-------------

Se omitir o "g" do comando , o sed irá substituir apenas a primeira ocorrência do "find_string" e parar.

-------------

Executo:

1) echo -e 'Marina Juca \nFefe Nenem \nWilly Sara\nJuca Fefe' > sed_arq.txt
2) cat sed_arq.txt
3) cat -n sed_arq.txt
4) sed -e 's/Juca/Willy/' sed_arq.txt (mudar o nome)
5) cat sed_arq.txt
6) sed -e 's/Fefe/Sara/g' sed_arq.txt (mais de uma ocorrência do nome)
7) cat sed_arq.txt
8) cat sed_arq.txt | sed -e 's/Juca/Marina/;/Willy/d' (mudar o nome Juca para Marina e depois deletar o nome Willy)
9) cat sed_arq.txt
10) sed -e '1,3s/a/%/g' sed_arq.txt (mudar letras a para % que aparecem nas primeiras linhas)
11) cat sed_arq.txt

-------------

Para usar o comando sed, eu tenho um arquivo com preços de produtos.

1, Produto A, Title 545, Price $6.30
2, Produto B, Title 723, Price $7.90
3, Produto C, Title 610, Price $7.90
4, Produto A, Title 118, Price $6.30
5, Produto B, Title 482, Price $6.50
6, Produto C, Title 335, Price $6.30
7, Produto A, Title 271, Price $7.90

-------------

Crio o arquivo abrindo o terminal pelo menu do sistema. Executo:

1)

mkdir DirSed

2)

cd DirSed/

3)

echo -e '1, Produto A, Title 545, Price $6.30
2, Produto B, Title 723, Price $7.90 \n3, Produto C, Title 610, Price $7.90 \n4, Produto A, Title 118, Price $6.30 \n5, Produto B, Title 482, Price $6.50 \n6, Produto C, Title 335, Price $6.30 \n7, Produto A, Title 271, Price $7.90' > ArqProdut.txt ; cat ArqProdut.txt

.

OBS:
Quero mudar o preço dos produtos que custam 6.30 para 7.30.

.

Executo:

1) sed 's/6.30/7.30/' > ArqProdut.txt

2) cat ArqProdut.txt

.

As duas principais ferramentas para manipulação de arquivos e streams do Unix/Linux/GNU talvez sejam o "sed" e o "awk".

.

Com o SED é possível substituir e “casar” padrões, sempre por meio de Expressões Regulares.

.

O esquema SED e AWK:

O comando lê um arquivo, linha por linha, e aplica a expressão do parâmetro a cada uma delas.

.

A FÓRMULA DO SUCESSO COM SED:

.

1) sed 's/texto-a-ser-substituido/texto-novo/'

2) sed -i 's,palavra-a-ser-substituida,palavra-nova,' nome-do-arquivo.txt

.

OBS:
(a opção -i, sobrescreve o conteúdo do nome-do-arquivo.txt)

.

3) sed 's,texto-a-ser-substituido,texto-novo,' *

4) sed -i 's,texto-a-ser-substituido,texto-novo,g' *

.

OBS:
O comando acima faz a substituição de uma mesma string dentro de vários arquivos de um mesmo diretório fazendo uso do comando sed

.

5) sed -i.novobkp 's,palavra-a-ser-substituida,palavra-nova,' nome-do-arquivo.txt

.

É possível filtrar a saída de outro comando, em vez de filtrar um arquivo, usando pipe "|".

.

Executo:

1)

echo "Testando o sed: Aprendo a trabalhar com sed" | sed 's/sed/awk/'

2)

echo "Testando a vida: Aprendo a trabalhar com a vida" | sed 's/vida/morte/'

3)

echo "Testando o claro: Aprendo a trabalhar com o claro" | sed 's/claro/escuro/'

echo "Testando o claro: Aprendo a trabalhar com o claro" | sed 's/claro/escuro/g'

4)

echo "Testando o líquido: Aprendo a trabalhar com o líquido" | sed 's/líquido/sólido/g'

5)

mkdir SedTeste

cd SedTeste/

echo "Testando o líquido: Aprendo a trabalhar com o líquido" | sed 's/líquido/sólido/' > ArqLiquido.txt

ls -t

6)

cat ArqLiquido.txt

7)

sed -i.bkp 's/líquido/sólido/' ArqLiquido.txt

ls -t

cat ArqLiquido.txt

.

USAR CARACTERES DE ESCAPE:

.

OBS:
Escapo caracteres usando barra invertida: \

.

Isto: /proc/cpuinfo tem que ser escapado. Fica assim:

\/proc\/cpuinfo

.

Isto: /etc/passwd tem que ser escapado. Fica assim:

\/etc\/passwd

.

EXECUTO:

.

1) echo "O arquivo /proc/cpuinfo possui importantes informações!"

2) echo "O arquivo /etc/passwd possui importantes informações!"

.

AGORA USO O SED:

.

1) echo "O arquivo /proc/cpuinfo possui importantes informações!" | sed 's,\/proc\/cpuinfo,\/etc\/passwd,'

.

OBS:
ENTÃO, ABAIXO A MESMA COISA QUE ACIMA; MAS DE UM MODO VISUAL MAIS ILEGÍVEL QUE ASSUSTA:

.

EXECUTO:

.

echo "O arquivo /proc/cpuinfo possui importantes informações!" | sed 's/\/proc\/cpuinfo/\/etc\/passwd/'

.

OBS:
SETE META CARACTERES PARA LEMBRAR.

1) ^ : começa com

2) $ : término de linha

3) . : qualquer caractere

4) [] : relação de valores possíveis para um caracter. Você pode especificar uma lista ( [abcde] ), uma faixa ( [0-9] ), ou várias faixas ( [a-zA-Z0-9] ).

5) \{\} : especifica quantas vezes o caractere pode se repetir. Por exemplo: “{2}” (duas vezes), “{2,5}” (duas a cinco vezes), “{2,}” (duas ou mais vezes).

6) | : operador lógico ou

7) .* : operador lógico e

.

OBS:

FILE GLOBBING = Uma forma que o bash (shell) tem de selecionar arquivos de diretórios na interface. Usa caracteres especiais, o asterisco, as chaves, colchetes, interrogação para ajudar o usuário a selecionar os arquivos e diretórios que desejar.

CURINGAS PARA NOME DE ARQUIVO É DIFERENTE DE METACARACTERE.

1) Curinga Casa com... Exemplo

2) * Qualquer coisa *.txt

3) ? Um caractere qualquer arquivo-??.zip

4) [...] Qualquer um dos caracteres listados [Aa]rquivo.txt

5) [^...] Qualquer um caractere, exceto os listados [^A-Z]*.txt

6) {...} Qualquer um dos textos separados por vírgula arquivo.{txt,html}

.

CONTINUANDO...

.

SE EU QUISER SUBSTITUIR:

https://com.semanickzaine.wordpress/

POR:

https://semanickz.wordpress.com/

.

USO ESTE EXEMPLO:

sed 's,texto-a-ser-substituido,texto-novo,'

.

EXECUTO NO TERMINAL:

1) echo 'O endereço deste blog é https://com.semanickzaine.wordpress/'

2) echo 'O endereço deste blog é https://com.semanickzaine.wordpress/' | sed 's,https://com.semanickzaine.wordpress/,https://semanickz.wordpress.com/,'

3) echo ; echo 'O endereço deste blog é https://com.semanickzaine.wordpress/' | sed 's,https://com.semanickzaine.wordpress/,https://semanickz.wordpress.com/,' ; echo

.

RESULTADO:

~$ echo 'O endereço deste blog é https://com.semanickzaine.wordpress/' | sed 's,https://com.semanickzaine.wordpress/,https://semanickz.wordpress.com/,'
O endereço deste blog é https://semanickz.wordpress.com/

.

EXPRESSÃO CASADA NA EXPRESSÃO REGULAR PARA SUBSTITUIÇÃO SEM ENROLAÇÃO:

.

EXECUTO:

.

1) echo ; echo -e "O arquivo /proc/cpuinfo possui informações importantes! \nEste tutorial está em /home/user-whoami/Downloads. Há outros nesse diretório" ; echo

2) echo ; echo -e "O arquivo /proc/cpuinfo possui informações importantes! \nEste tutorial está em /home/user-whoami/Downloads. Há outros nesse diretório" | sed -r 's/(\/[^ .,]*)+/"&"/' ; echo

.

OBS:
1) O pipe | liga um comando a outro.
2) Aí vem o sed.
3) A opção “-r” usa o padrão estendido de expressões regulares - o mesmo usado por “egrep”. Isso possibilita o uso da lista negada.
4) inicia aspa simples '
5) s/ Significa substitua
6) A expressão regular fica entre parênteses ()
7) Escapo caracteres usando barra invertida: \

.

8) Esta é a expressão regular entre parênteses e com caractere de escape: (\/[^ .,]*)

OBS:
META CARACTERES
1) ^ (circunflexo): representa o começo da linha
2) $ (cifrão): representa o fim da linha
3) . (ponto): casa com um caractere qualquer
4) .* (curinga): casa qualquer coisa, é tudo ou nada
5) a+ (mais): casa a letra "a" uma ou mais vezes
6) a* (asterisco): casa a letra "a" zero ou mais vezes
7) a? (opcional): casa a letra "a" zero ou mais vezes
8) a{2} (chaves): casa a letra "a" duas vezes
9) a{2,} (chaves): casa a letra "a" no mínimo duas vezes
10) [abc] (lista): casa as letras "a" ou "b" ou "c"
11) [^abc] (lista): casa qualquer caractere, exceto "a", "b", e "c"
12) (isso|aquilo) (Ou): casa as strings "isso" ou "aquilo"

.

9) Uso o caractere & entre aspas duplas para me referir à expressão casada pela expressão regular que se refere a /.

.

SUBSTITUIR PARTES DE UM TEXTO E MANTER OUTRAS

.

Usar “retrovisores”, que inserem na string final os padrões casados na Expressão Regular inseridos em grupos (( e )).

O primeiro grupo casado é referenciado por \1, o segundo, por \2 e assim sucessivamente, até \9.

Por exemplo, vou manter apenas a primeira palavra de cada linha de um texto.

.

Uso este exemplo:

sed 's,texto-a-ser-substituido,texto-novo,'

.

Executo:

.

1) echo -e "Primeira palavra\nSegunda palavra\nTerceira palavra"

2) echo -e "Primeira palavra\nSegunda palavra\nTerceira palavra" | sed -r 's,^([a-zA-Z]+).*,\1,g'

.

OBS:
METACARACTERES
1) ^ (circunflexo): representa o começo da linha
2) $ (cifrão): representa o fim da linha
3) . (ponto): casa com um caractere qualquer
4) .* (curinga): casa qualquer coisa, é tudo ou nada
5) a+ (mais): casa a letra "a" uma ou mais vezes
6) a* (asterisco): casa a letra "a" zero ou mais vezes
7) a? (opcional): casa a letra "a" zero ou mais vezes
8) a{2} (chaves): casa a letra "a" duas vezes
9) a{2,} (chaves): casa a letra "a" no mínimo duas vezes
10) [abc] (lista): casa as letras "a" ou "b" ou "c"
11) [^abc] (lista): casa qualquer caractere, exceto "a", "b", e "c"
12) (isso|aquilo) (Ou): casa as strings "isso" ou "aquilo"

.

Executo:

echo -e "Primeira palavra\nSegunda palavra\nTerceira palavra" | sed -r 's/^([a-zA-Z]+).*/\1/g'

.

OBS:
No final do comando o modificador "g" trata a linha inteira

.

Executo:

echo "palavras1 palavras2 palavras3" | sed -r 's/([a-zA-Z0-9]+)/NULL/g'

.

Remover todas as palavras substituir por NULL. Executo:

echo "palavras1 palavras2 palavras3" | sed -r 's/([a-zA-Z0-9]+)/NULL/g'

.

Remover todas as palavras menos a primeira e substituir por NULL. Executo:

echo "palavras1 palavras2 palavras3" | sed -r 's/([a-zA-Z0-9]+)/NULL/2g'

OBS:
O “2” faz com que a substituição ocorra apenas a partir da segunda ocorrência do padrão.

.

Por padrão, o SED imprime na saída padrão todas as linhas lidas - e modificadas. A opção -n impede que o sed faça a impressão das linhas. É nessa situação que o modificador “p” é útil. Quando quiser imprimir somente as linhas alteradas pelo SED.

.

Executo:

echo -e "linha sem número \nLinha com números: 1 2 3 4 5 6 7 \nLinha com mais números 52 91" | sed -r -n 's/[0-9]+/X/gp'

.

Exemplos:

.

Supressão da 3a linha:

sed '3d' meu_arquivo.txt

.

Supressão da última linha:

sed '$d' meu_arquivo.txt

.

Supressão de todas as linhas vazias:

sed '/^$/d' meu_arquivo.txt sed '/./!d' meu_arquivo.txt

.

Supressão do intervalo compreendido entre as linhas 7 e 9:

sed '7,9d' meu_arquivo.txt

.

REVISO META CARACTERES

-------------
1) . Ponto Curinga de um caractere
-------------
2) [] Lista Casa qualquer um dos caracteres listados
-------------
3) [^] Lista negada Casa qualquer caractere, exceto os listados
-------------
4) ? Opcional O item anterior pode aparecer ou não (opcional)
-------------
5) * Asterisco O item anterior pode aparecer em qualquer quantidade
-------------
6) + Mais O item anterior deve aparecer no mínimo uma vez
-------------
7) {,} Chaves O item anterior deve aparecer na quantidade indicada {mín,máx}
-------------
8) ^ Circunflexo Casa o começo da linha
-------------
9) $ Cifrão Casa o fim da linha
-------------
10) \b Borda Limita uma palavra (letras, números e sublinhado)
-------------
11) \ Escape Escapa um meta, tirando seu poder
-------------
12) | Ou Indica alternativas (usar com o grupo)
-------------
13) () Grupo Agrupa partes da expressão, é quantificável e multinível
-------------
14) \1 Retrovisor Recupera o conteúdo do grupo 1
-------------
15) \2 Retrovisor Recupera o conteúdo do grupo 2 (segue até o \9)
-------------
16) .* Curinga Casa qualquer coisa, é o tudo e o nada
-------------
17) ?? Opcional NG Idem ao opcional comum, mas casa o mínimo possível
-------------
18) *? Asterisco NG Idem ao asterisco comum, mas casa o mínimo possível
-------------
19) +? Mais NG Idem ao mais comum, mas casa o mínimo possível
-------------
20) {}? Chaves NG Idem às chaves comuns, mas casa o mínimo possível

.

EXPRESSÕES REGULARES E O COMANDO SED

-------------
EXPLICANDO UMA EXPRESSÃO REGULAR:
-------------

'\*\..{3}$'

-------------

Na expressão regular acima, as aspas simples são usadas para proteger a expressão e impedir que o interpretador de comandos dê um significado diferente a qualquer um dos caracteres. O * e o . são um asterisco e um ponto, literalmente, por isso são escapados por uma barra invertida. O . (ponto) significa um caractere qualquer, que é quantificado pelo número entre as chaves que o sucede. No caso, procuro por três caracteres após um asterisco e um ponto, mas isto por si só também abrangeria os casos onde temos extensões com mais de três letras. Para evitar que isto aconteça, dizemos que estes três caracteres são sucedidos por um “fim de linha”, representado pelo cifrão.
-------------

Executo os comandos abaixo:

.

# crio um arquivo para os testes

echo "Eu gosto de água de ar e terra. 1234567890" > teste.txt

cat teste.txt

ls -t

# substituir água por ar e vice-versa

sed -i 's/\(água\) e \(ar\)/\2 e \1/' teste.txt ; cat teste.txt

# substituir vogais 'a' ou 'u' por 'x'

sed -i 's/[ou]/x/g' teste.txt ; cat teste.txt

# substituir numeros pares por 0

sed -i 's/[2468]/0/g' teste.txt ; cat teste.txt

# substituir numeros impares por nada

sed -i 's/[13579]//g' teste.txt ; cat teste.txt

# substituir 3 primeiros caracteres por nada

sed -i 's/^...//g' teste.txt ; cat teste.txt

# substituindo espaços por nada

sed -i 's/\s//g' teste.txt ; cat teste.txt

Linux – aprenda a usar o comando case

Linux - aprenda a usar o comando case

.

Creio que o comando “case” (instrução condicional case) é usado para executar um bloco de código de acordo com o valor de uma variável.

O comando “case” me chama a atenção pois, pode definir diversas opções diferentes sem usar uma estrutura com diversos comandos “if”, “elif” e “else”.

Então devo tentar aprender o uso da instrução case.

Quais serão os: conceitos, sintaxe e prática do case?

---------------

Case é para quando tenho um valor (variável) e vários padrões possíveis para este valor ou vários valores possíveis para uma variável.

Usa-se o case para evitar ficar usando muito o if, else, elif.

O padrão pode ser uma string (corda), número, expressão regular

---------------

Depois do case vem uma variável e depois a palavra in, então vem o padrão. Atendendo o padrão, pode ser realizado uma série de comandos e depois dos comandos fecha com ;; finalizando cada padrão. No final de tudo mesmo, usa-se o asterisco (é como se fosse um else) que é executado se nenhum dos padrões definidos foram encontrados. O fechamento do case é esac (case ao contrário)

---------------

A estrutura do comando case no shell script, serve como se fosse um selector onde eu escolho qual opção desejo para prosseguir.

Digo que estou em um lugar que pede pra fazer certas escolhas. Opção 1 , opção 2 , opção 3...

Cada uma dessas opções irá me levar a um outro lugar ou executa uma determinada ação.

O case é assim. Cria uma lista de opções e eu escolho a opção desejada.

---------------

EXEMPLO:

---------------

case $VARIAVEL in
padrão1)
comandos
;;
padrão2)
comandos
;;
*)
comandos
;;
esac

---------------

USA-SE MUITO O CASE PARA FAZER MENÚ.

---------------

EXEMPLO:

---------------

case $opcao in
1)
echo "Opção Incluir"
;;
2)
echo "Opção Remover"
;;
*)
echo "Opção Inexistente"
;;
esac

---------------

Case - usando expressão regular

---------------

case $caractere in
[0-9])
echo "O caractere informado é um número"
;;
[A-Z])
echo "O caractere informado é uma letra maiúscula"
;;
[a-z])
echo "O caractere informado é uma letra minúscula"
;;
esac

---------------

Executo:

---------------

mkdir -vp caseDIR/subCASE

cd caseDIR/subCASE

touch CasE_scr.sh

chmod +x CasE_scr.sh

pwd

ls -lih

vi CasE_scr.sh

(Aperto Esc, digito i, copio e colo o texto abaixo com o mouse no vi.)

#!/bin/bash

case "$1" in #Uso o parâmetro cifrão 1
[0-9]) #Se for de 0 a 9
echo "O parâmetro é um número"
;;
[A-Z]) #Se for de A a Z
echo "O parâmetro é uma letra maiúscula"
;;
[a-z]) #Se for de a A z
echo "O parâmetro é uma letra minúscula"
;;
*) #Se não for nenhum dos parâmtros acima...
echo "O parâmetro é um caractere especial"
esac

---------------

(Aperto Esc, seguro Shift e digito ZZ)

---------------

Executo:

./CasE_scr.sh

sh CasE_scr.sh A

source CasE_scr.sh a

bash CasE_scr.sh 3

sh CasE_scr.sh @

.

Até Breve

🙂

.

Linux aprenda a usar if, then, else e fi

-----------------------

Linux - Aprenda a usar if, then, else e fi

-----------------------

No GNU/Linux "instruções condicionais" são instruções utilizadas para a "execução condicional" de comandos.

GNU/Linux - Instruções condicionais: Instruções usadas em shell script para executar uma serie de comandos com base em uma condição.

ENTÃO:

Se acontece ISTO uma série de comandos é executada. Se não acontece ISTO, uma OUTRA série de comandos é executada.

Caso aconteça ISTO uma série de comandos é executada. Caso não aconteça ISTO, outra série de comandos é executada.

-----------------------

No shell script para fazer "ISTO", usa-se:

1) if
2) case

-----------------------

Primeira sintaxe - if:

-----------------------

if #começa com "if" mais um "comando-condição" e se for verdadeiro...

then #Então
comando1 #Execute este comando ou esta lista de comandos.
comando2
comando3

fi #Fecha a instrução condicional usando o if ao contrário

-----------------------

Segunda sintaxe - if:

if #Se isto for verdadeiro

then # Então
comando1 #Verdadeiro este comando é executado

else # Se não...
comando2 #Este outro comando é executado

fi #Fecha a instrução condicional o if ao contrário

-----------------------

Terceira sintaxe - if:

-----------------------

Exemplo1:

-----------------------

if #Se isto for verdadeiro
then # Então
comando1 #Execute este comando ou lista de comandos

elif #elif = else if, se não, se acontecer isto...
then #Então
comando2 #Execute este outro comando

else #Se não for verdadeiro...
comando3 #Execute então este outro comando
fi

-----------------------

Exemplo2:

-----------------------

A terceira sintaxe é ou já foi usada dentro dos scripts de inicialização do GNU/Linux. A forma comum acho que é (era):

-----------------------

if [ condição ];
then
comando-instrução1;
comando-instrução2;
comando-instrução3;

...
elif [ condição ];
comando-instrução4;
comando-instrução5;
comando-instrução6;

...
else
comando-instrução7;
comando-instrução8;
comando-instrução9;

...
fi.

-----------------------

Exemplo3:

-----------------------

if [ condição ];

then

comando-instrução1

elif [ condição ];

then

comando-instrução1

else

comando-instrução2

fi

-----------------------

OBS:
O if do shell script tem um comando e verifica se o comando foi executado com sucesso ele cai como verdadeiro tendo código de retorno zero. Se for falso (maior que zero), cai no else ou sai do if.

-----------------------

Tem um comando que faz uma condição. O comando test. O comando test é usado para criar uma condição. A sintaxe é:

test

-----------------------

O comando test tem várias expressões. As mais usadas são do um ao 6.

-----------------------

-eq (equal), -ne (not equal), -gt (greater than), -ge (greater equal), -lt (lower than), -le (lower equal)

-----------------------

1) -eq - é igual a - if [ "$a" -eq "$b" ]

2) -ne - é diferente - if [ "$a" -ne "$b" ]

3) -gt - é maior que - if [ "$a" -gt "$b" ]

4) -ge - é maior ou igual que - if [ "$a" -ge "$b" ]

5) -lt - é menos que - if [ "$a" -lt "$b" ]

6) -le - é menos que ou igual que - if [ "$a" -le "$b" ]

7) < - é menos que - (("$a" = - é maior ou igual que - (("$a" >= "$b"))

-----------------------

Strings podem ser comparadas:

1) = (Uma string igual a outra)

2) != (Uma string diferente da outra)

3) -n (String não nula)

4) -Z (String nula)

-----------------------

Arquivos podem ser testados:

1) -f (É um arquivo)

2) -d (É um diretório/pasta)

3) -r (Tem permissão de leitura)

4) -W (Tem permissão de escrita)

5) -X (Tem permissão de execução)

6) -S (Possui tamanho maior que zero)

-----------------------

EXEMPLOS:

-----------------------

test 25 -gt 50

(25 é maior que 50? Não. O código de saída será 1.)

test "$VALOR1" -eq 15

(O valor da variável VALOR1 é igual a 12? Se for o exit code será zero.)

test -f /tmp/testes

(O arquivo tmp/testes existe? Se existir o exit code será zero. Se não existir será 1)

test "$VALOR1" = "$VALOR2"

(A corda da variável VALOR1 é igual a string da variável VALOR2?)

-----------------------

OBS-IMPORTANTE:

EM VEZ DE ESCREVER A PALAVRA TEST USA-SE COLCHETES COM ESPAÇO

-----------------------

EXEMPLOS:

-----------------------

[ 25 -gt 50 ]

(25 é maior que 50? Não. O código de saída será 1.)

[ "$VALOR1" -eq 15 ]

(O valor da variável VALOR1 é igual a 12? Se for o exit code será zero.)

[ -f /tmp/testes ]

(O arquivo tmp/testes existe? Se existir o exit code será zero. Se não existir será 1)

[ "$VALOR1" = "$VALOR2" ]

(A corda da variável VALOR1 é igual a string da variável VALOR2?)

-----------------------

A FORMA MAIS USADA É COM COLCHETES E ESPAÇO.

-----------------------

OUTRO EXEMPLO:

-----------------------

VALOR1=15
if [ ! "$$VALOR1" -gt 12 ]

# (Negação "!" inverte não entra no fluxo)

# (É dado como falso não entra em lugar nenhum.)

then
echo sucesso
fi

-----------------------

MAIS UM EXEMPLO:

-----------------------

VALOR1=15

if [ "$VALOR1" -gt 12 -a "VALOR1" -lt 20 ]

#AND (-a) se tudo separado pelo -a for verdade terá sucesso se não for não entra em lugar nenhum.

then
echo sucesso
fi

-----------------------

EXEMPLO OR:

-----------------------

VALOR1=15

if [ "$VALOR1" -gt 12 -o "VALOR1" -lt 20 ]

#OR (-o) se pelo menos uma situação for verdade terá sucesso. Se as duas forem falsas, não entra em lugar nenhum.

then
echo sucesso
fi

-----------------------

O -a TEM PREFERÊNCIA SOBRE O -o

-----------------------

Linux - aprendendo a usar o comando test:

-----------------------

Comando de retorno usando test (zero "0" é verdadeiro, um "1" é falso)

-----------------------

Abro o terminal pelo menu do sistema e executo:

-----------------------

1)

test 10 -gt 5 (é maior que)
echo $?

[ 10 -gt 5 ]
echo $?

2)

test 15 -eq 12 (é igual a)
echo $?

[ 15 -eq 12 ]
echo $?

3)

test 8 -ne 12 (é diferente)

echo $?

[ 8 -ne 12 ]
echo $?

4)

test 25 -ge 15 (é maior ou igual que)
echo $?

[ 25 -ge 15 ]
echo $?

5)

test 35 -lt 25 (é menos que)

echo $?

[ 35 -lt 25 ]
echo $?

6)

test 8 -le 10 (é menos que ou igual que)

echo $?

[ 8 -le 10 ]
echo $?

7)

VALOR1=101

8)

test $VALOR1 -eq 101

echo $?

[ $VALOR1 -eq 101 ]
echo $?

9)

test $VALOR1 -gt 90
echo $?

[ $VALOR1 -gt 90 ]
echo $?

10)

test $VALOR1 -ne 15
echo $?

[ $VALOR1 -ne 15 ]
echo $?

-----------------------

Executo:

mkdir -vp PastaIF/SubIF

cd PastaIF/SubIF

touch IfExemp.sh

chmod +x IfExemp.sh

ls -li

pwd

vi IfExemp.sh

(Aperto Esc, digito i, copio e colo o texto abaixo no vi com o mouse.)

#!/bin/bash

if grep "$1" /etc/passwd > /dev/null

# uso o parâmetro cifrão 1

then
echo "Este user existe"
else
echo "Este user não existe"
fi

# Fim do script

----------------------

Aperto Esc, digito Shift ZZ

----------------------

Executo:

whoami

./IfExemp.sh meu-usuário-whoami

./IfExemp.sh Jocam

./IfExemp.sh AnaCa

./IfExemp.sh

----------------------

OUTRO EXEMPLO CRIANDO UMA VARIÁVEL:

----------------------

#!/bin/bash

# Declarando variável: USUWARRIO

USUWARRIO=$(grep "$1" /etc/passwd) #OBS: uso o parâmetro cifrão 1

#OBS: test -n é para ver se uma varivel não é nula

if test -n "$USUWARRIO" #OBS: Colocar a variável entre aspa

then #OBS: se a variável não for nula cai no them
echo "Este user existe"
else
echo "Este user não existe"
fi

# Fim do script

----------------------

POSSO USAR O TEST SINTAXE COLCHETES:

----------------------

#!/bin/bash

# Declarando variável: USUWARRIO

USUWARRIO=$(grep "$1" /etc/passwd)

#OBS-1: uso o parâmetro cifrão 1 entre aspas
#OBS-2: test -n é para ver se uma varivel não é nula
#OBS-3: Colocar a variável entre aspa
#OBS-4: se a variável não for nula cai no then

if [ -n "$USUWARRIO" ]
then
echo "Este user existe"
else
echo "Este user não existe"
fi

# Fim do script

----------------------

PARA EXECUTAR O SCRIPT:

----------------------

touch 2IfExemp.sh

chmod +x 2IfExemp.sh

vi 2IfExemp.sh

(Aperto Esc, digito i, copio e colo o texto no vi com o mouse.)

----------------------

Aperto Esc, Seguro a tecla Shift, digito: ZZ

----------------------

Executo:

ls -lit

pwd

whoami

----------------------

Executo:

./2IfExemp.sh meu-usuário-whoami

./2IfExemp.sh JeCam

./2IfExemp.sh UneCo

./2IfExemp.sh root

----------------------

MAIS OUTRO EXEMPLO:

----------------------

#!/bin/bash

# Declarando variável: USUWARRIO

USUWARRIO=$(grep "$1" /etc/passwd)

#OBS-1: uso o parâmetro cifrão 1 entre aspas
#OBS-2: test -n é para ver se uma varivel não é nula
#OBS-3: Colocar a variável entre aspa
#OBS-4: se a variável não for nula cai no then

if [ -n "$USUWARRIO" ]
then
echo "Este user existe"
if [ "$USUWARRIO" = root ]
then
echo ok
fi
else
echo "Este user não existe"
fi

# Fim do script

----------------------

CONTINUANDO COM EXEMPLOS:

----------------------

#!/bin/bash

# Declarando variável: USUWARRIO

USUWARRIO=$(grep "$1" /etc/passwd)

#OBS-1: uso o parâmetro cifrão 1 entre aspas
#OBS-2: test -n é para ver se uma varivel não é nula
#OBS-3: Colocar a variável entre aspa
#OBS-4: se a variável não for nula cai no then
#OBS-5: "if test $# -gt 0" - O cifrão mais cerquilha testa se foi inserido algum parâmetro. Se o parâmetro for maior que zero prossegue.

if test $# -gt 0
then
echo 'Foi inserido um valor maior que zero. Prosseguindo...'
else
echo 'Informe um nome como parâmetro.' ; exit

fi

if [ -n "$USUWARRIO" ]
then
echo "Este user existe"
else
echo "Este user não existe"
fi

# Fim do script

----------------------

PARA EXECUTAR O SCRIPT:

----------------------

touch 3IfExemp.sh

chmod +x 3IfExemp.sh

vi 3IfExemp.sh

(Aperto Esc, digito i, copio e colo o texto no vi com o mouse.)

----------------------

Aperto Esc, Seguro a tecla Shift, digito: ZZ

----------------------

Executo:

ls -lit

pwd

whoami

----------------------

Executo:

----------------------

1) ./3IfExemp.sh

2) ./3IfExemp.sh meu-usuário-whoami

3) ./3IfExemp.sh JeCam

4) ./3IfExemp.sh UneCo

5) ./3IfExemp.sh root

----------------------

UM EXEMPLO PARECIDO, USANDO TEST COLCHETES:

----------------------

#!/bin/bash

# Declarando variável: USUWARRIO

USUWARRIO=$(grep "$1" /etc/passwd)

#OBS-1: uso o parâmetro cifrão 1 entre aspas
#OBS-2: test -n é para ver se uma varivel não é nula
#OBS-3: Colocar a variável entre aspa
#OBS-4: se a variável não for nula cai no then
#OBS-5: "if test $# -gt 0" - O cifrão mais cerquilha testa se foi inserido algum parâmetro. Se o parâmetro for maior que zero prossegue.

if [ $# -gt 0 ]
then
echo 'Foi inserido um valor maior que zero. Prosseguindo...'
else
echo 'Informe um nome como parâmetro e execute novamente o script.'
echo
sleep 2
echo 'Para obter o nome do usuário digite: whoami antes de executar o script.'
sleep 2
echo
exit

fi

if [ -n "$USUWARRIO" ]
then
echo "Este user existe"
else
echo "Este user não existe"
fi

----------------------

Pronto! Nós sabemos usar if, then, else e fi.

----------------------

Até Breve!

🙂

.

Linux – aprendendo a usar o comando test

Linux - aprendendo a usar o comando test:

-----------------------

Comando de retorno usando test (zero "0" é verdadeiro, um "1" é falso)

-----------------------

1) test 10 -gt 5 (é maior que)
echo $?

2) test 15 -eq 12 (é igual a)
echo $?

3) test 8 -ne 12 (é diferente)
echo $?

4) test 25 -ge 15 (é maior ou igual que)
echo $?

5) test 35 -lt 25 (é menos que)
echo $?

6) test 8 -le 10 (é menos que ou igual que)
echo $?

7) VALOR1=101

8) test VALOR1 -eq 101
echo $?

9) test VALOR1 -gt 90
echo $?

10) test VALOR1 -ne 15

-----------------------

Até Breve!

🙂

.

GNU/Linux “instruções condicionais”

.

Linux - Instruções condicionais

.

No GNU/Linux "instruções condicionais" são instruções utilizadas para a "execução condicional" de comandos.

.

GNU/Linux - Instruções condicionais: Instruções usadas em shell script para executar uma serie de comandos com base em uma condição.

.

Se acontece ISTO uma série de comandos é executada. Se não acontece ISTO, uma OUTRA série de comandos é executada.

Caso aconteça ISTO uma série de comandos é executada. Caso não aconteça ISTO, outra série de comandos é executada.

-----------------------

No shell script para fazer "isto", usa-se:

1) if
2) case

-----------------------

Primeira sintaxe - if:

if #começa com "if" mais um "comando-condição" e se for verdadeiro...

then #Então
comando1 #Execute este comando ou esta lista de comandos
comando2
comando3

fi #Fecha a instrução condicional usando o if ao contrário

-----------------------

Segunda sintaxe - if:

if #Se isto for verdadeiro

then # Então
comando1 #Verdadeiro este comando é executado

else # Se não...
comando2 #Este outro comando é executado

fi #Fecha a instrução condicional o if ao contrário

-----------------------

Terceira sintaxe - if:

-----------------------

Exemplo1:

-----------------------

if #Se isto for verdadeiro
then # Então
comando1 #Execute este comando ou lista de comandos

elif #elif = else if, se não, se acontecer isto...
then #Então
comando2 #Execute este outro comando

else #Se não for verdadeiro...
comando3 #Execute então este outro comando
fi

-----------------------

Exemplo2:

-----------------------

A terceira sintaxe é ou já foi usada dentro dos scripts de inicialização do GNU/Linux. A forma comum acho que é (era):

-----------------------

if [ condição ];
then
comando-instrução1;
comando-instrução2;
comando-instrução3;

...
elif [ condição ];
comando-instrução4;
comando-instrução5;
comando-instrução6;

...
else
comando-instrução7;
comando-instrução8;
comando-instrução9;

...
fi.

-----------------------

Exemplo3:

-----------------------

if [ condição ];

then

comando-instrução1

elif [ condição ];

then

comando-instrução1

else

comando-instrução2

fi

-----------------------

OBS:
O if do shell script tem um comando e verifica se o comando foi executado com sucesso ele cai como verdadeiro tendo código de retorno zero. Se for falso (maior que zero), cai no else ou sai do if.

-----------------------

Tem um comando que faz uma condição. O comando test. O comando test é usado para criar uma condição. A sintaxe é:

test

-----------------------

O comando test tem várias expressões. As mais usadas são do um ao 6.

-----------------------

-eq (equal), -ne (not equal), -gt (greater than), -ge (greater equal), -lt (lower than), -le (lower equal)

-----------------------

1) -eq - é igual a - if [ "$a" -eq "$b" ]

2) -ne - é diferente - if [ "$a" -ne "$b" ]

3) -gt - é maior que - if [ "$a" -gt "$b" ]

4) -ge - é maior ou igual que - if [ "$a" -ge "$b" ]

5) -lt - é menos que - if [ "$a" -lt "$b" ]

6) -le - é menos que ou igual que - if [ "$a" -le "$b" ]

7) < - é menos que - (("$a" < "$b"))

8) "$b"))

10) >= - é maior ou igual que - (("$a" >= "$b"))

-----------------------

Strings podem ser comparadas:

1) = (Uma string igual a outra)

2) != (Uma string diferente da outra)

3) -n (String não nula)

4) -Z (String nula)

-----------------------

Arquivos podem ser testados:

1) -f (É um arquivo)

2) -d (É um diretório/pasta)

3) -r (Tem permissão de leitura)

4) -W (Tem permissão de escrita)

5) -X (Tem permissão de execução)

6) -S (Possui tamanho maior que zero)

-----------------------

EXEMPLOS:

# test 25 -gt 50 (25 é maior que 50? Não. O código de saída será 1.)

# test "$VALOR1" -eq 15 (O valor da variável VALOR1 é igual a 12? Se for o exit code será zero.)

# test -f /tmp/testes (O arquivo tmp/testes existe? Se existir o exit code será zero. Se não existir será 1)

# test "$VALOR1" = "$VALOR2" (A corda da variável VALOR1 é igual a string da variável VALOR2?)

-----------------------

OBS-IMPORTANTE:

EM VEZ DE ESCREVER A PALAVRA TEST USA-SE COLCHETES COM ESPAÇO

-----------------------

EXEMPLOS:

[ 25 -gt 50 ] (25 é maior que 50? Não. O código de saída será 1.)

[ "$VALOR1" -eq 15 ] (O valor da variável VALOR1 é igual a 12? Se for o exit code será zero.)

[ -f /tmp/testes ] (O arquivo tmp/testes existe? Se existir o exit code será zero. Se não existir será 1)

[ "$VALOR1" = "$VALOR2" ] (A corda da variável VALOR1 é igual a string da variável VALOR2?)

-----------------------

A FORMA MAIS USADA É COM COLCHETES E ESPAÇO.

-----------------------

OUTRO EXEMPLO:

VALOR1=15
if [ ! "$$VALOR1" -gt 12 ] #Negação (!) inverte não entra no fluxo

#É dado como falso não entra em lugar nenhum.

then
echo sucesso
fi

-----------------------

MAIS UM EXEMPLO:

-----------------------

VALOR1=15

if [ "$VALOR1" -gt 12 -a "VALOR1" -lt 20 ] #AND (-a) se tudo separado pelo -a for verdade terá sucesso se não for não entra em lugar nenhum.

then
echo sucesso
fi

-----------------------

EXEMPLO OR:

VALOR1=15

if [ "$VALOR1" -gt 12 -o "VALOR1" -lt 20 ] #OR (-o) se pelo menos uma situação for verdade terá sucesso. Se as duas forem falsas, não entra em lugar nenhum.

then
echo sucesso
fi

-----------------------

O -a TEM PREFERÊNCIA SOBRE O -o

-----------------------

Coisas que você nem o Linus Torvalds criaram:

--------------------
Coisas que nem você nem o Linus Torvalds criaram:
--------------------

O comando ls é GNU!
O comando mv é GNU!
O comando rm é GNU!
O comando cp é GNU!
O comando du é GNU!
O comando chmod é GNU!
O comando split é GNU!
O comando uniq é GNU!
O comando wc é GNU!
O comando env é GNU!
O comando pwd é GNU!
O comando uptime é GNU!
O comando uname é GNU!

--------------------

Então quando você usa qualquer distro Linux gratúita que só funciona por causa da existencia do GNU, você está usando um sistema GNU/Linux!

--------------------

VOCÊ NÃO É DONO DESTES COMANDOS! VOCÊ QUER GANHAR DINHEIRO USANDO ESTES COMANDOS!

--------------------

O Google e o seu Android usa kernel Linux.

A Microsoft usa kernel Linux para um outro sistema operacional deles.

--------------------

Agora, as distro gratúitas Linux todas sem exceção usam o GNU.

--------------------

Sem as ferramentas GNU não dá para eu usar nenhuma distro Linux que eu gosto.

--------------------

Ah, e você não é dono de nenhuma palavra existente no dicionário, você não é dono da gramática e não é dono da diagramação.

Linux – Declarar variáveis torna o shell script mais fácil

#!/bin/bash

# Nome do Script: 5ScrNomeUserUID.sh

# Descrição: script recebe um
# nome de usuário como parâmetro
# e exibe UID do usuário, Nome Completo /
# Descrição do Usuário, Total em Uso no /home do
# usuário, Informações do último login do usuário,
# Validar se o usuário existe
# ou não sem o uso do if.
# Se não existir retorne o exit code 1, se
# existir retorne exit 0

# Execução: ./5ScrNomeUserUID.sh
# Autor: Fulano de Tal
# Data da Criação: DD/MM/YYYY
# Email: meu_mail@email.com
# Histórico de modificações:

# COMENTÁRIO:
# Comando “du” para descobrir
# o uso do diretório
# Comando “lastlog” para
# informações do login
# Dados do usuário no
# arquivo /etc/passwd
# Para fazer a validação posso usar
# as opções de execução sequencial
# de comandos &&, ou ;

# COMENTÁRIOS ESPECIAIS:

# TODO - indica uma tarefa a ser feita
# FIXME - indica um bug conhecido que precisa ser arrumado
# XXX - Notícia, chama a atenção - Cuidado para não usar dentro do script a variável de ambiente UID

#ls /home/$1 > /dev/null 2>&1 || echo "Usuário Inexistente"
#ls /home/$1 > /dev/null 2>&1 || exit 1

#ls /home/$1 > /dev/null 2>&1 || { echo "Usuário Inexistente" ; exit 1;}

# Declarando 4 variáveis:
ESERU=$(echo $USER)
USERLOGIN=$(lastlog -u $USER | grep $USER)
UIDUSER=$(echo $UID)
TOTAL=$(du -hs ~/ | cut -f1)

clear
echo "Relatório do Usuário: $ESERU"
echo
echo "UID do usuário: $UIDUSER"
echo "Nome ou Descrição: $ESERU"
echo "Ultimo Login: $USERLOGIN | grep "
echo "Total Usado no ultimo Login: $TOTAL"
echo
# Fim do Script

---------------

Para Praticar:

---------------

Colo o comando "echo -e" com o parâmetro abaixo no terminal redirecionando com o write ">" para um arquivo de texto:

---------------

echo -e '\nO Marco Marciano\n \nPelos alto-falantes do universo \nVou louvar-vos aqui na minha loa\nUm trabalho que fiz noutro planeta \nOnde nave flutua e disco voa \nFiz meu marco no solo marciano \nNum deserto vermelho sem garoa \n \nEste marco que eu fiz é fortaleza. \nElevando ao quadrado Gibraltar! \nTorreão, levadiço, raio-laser \nE um sistema internet de radar \nNão tem sonda nem nave tripulada \nQue consiga descer nem decolar. \n\nConstrui o meu marco na certeza \nQue ninguém, cibernético ou humano. \nPoderia romper as minhas guardas \nNem achar qualquer falha nos meus planos \nFicam todos em Fobos ou em Deimos \nContemplando o meu marco marciano \n \nO meu marco tem rosto de pessoa \nTem ruínas de ruas e cidades \nTem muralhas, pirâmides e restos \nDe culturas, demônios, divindades \nA história de Marte soterrada \nPelo efêmero pó das tempestades \n
\nConstrui o meu marco gigantesco \nNum planalto cercado por montanhas \nPrecipícios gelados e falésias \nProjetando no ar formas estranhas \nComo os muros Ciclópicos de Tebas \nE as fatais cordilheiras da Espanha \n \nBem na praça central. um monumento \nEmbeleza meu marco marciano \nUm granito em enigma recortado \nPelos rudes martelos de Vulcano \nUma esfinge em perfil contra o poente \nGuardiã imortal do meu arcano... \n \n -- Lenine \n' > arq_marciano.txt

.

Executo os 35 comandos abaixo:

.

1) cat arq_marciano.txt

2) cat -n arq_marciano.txt

3) file arq_marciano.txt

4) !ca

5) !fi

6) wc arq_marciano.txt

wc -l arq_marciano.txt (linhas)

wc -w tarq_marciano.txt (palavras)

wc -c arq_marciano.txt (caracteres)

7) whereis arq_marciano.txt

8) whatis xingar

9) cat arq_marciano.txt | less

10) cat arq_marciano.txt | more

11) cat arq_marciano.txt | head -n 3

cat arq_marciano.txt | head -n 2 | grep 'O Marco' | cut -f1- | cut -c8-

12) cat -n arq_marciano.txt | head -n 3

cat arq_marciano.txt | head -n 2 | grep 'O Marco' | cut -f1- | cut -c8- | sed 's/Marciano/Plutoniano/'

13) cat arq_marciano.txt | tail -n 3

cat arq_marciano.txt | awk /Marciano/

14) cat -n arq_marciano.txt | tail -n 3

15) cat arq_marciano.txt | head -n 4 | grep imortal

16) cat arq_marciano.txt | head -n 4 | grep cidades

17) cat arq_marciano.txt | head -n 28 | grep -v marco

18) touch arq_marciano.txt

19) ls -til

20) cp -v arq_marciano.txt arq_marciano_back.txt

21) ls1

22) grep -i "marciano" arq_marciano.txt

grep -i marciano "arq_marciano.txt" -v

23) grep -i "meu" arq_marciano.txt

grep -i "meu" arq_marciano.txt -v

24) fgrep "sonda" arq_marciano.txt

25) egrep '(radar|decolar)' arq_marciano_back.txt

26) find ./ arq_marciano.txt

27) find arq_marciano.txt

28) ls [a-m]*.txt

29) mv arq_marciano_back.txt renomeado_arq_marciano_back.txt

30) ls -t

31) find ./* -type f -exec grep -l tem {} \;

32) egrep "ruas" -r ?*.txt

33) fgrep "montanhas" -r ./

34) ls2

35) clear

.

OBS:
Para remover o arquivo criado (ou use o mouse):

rm -f nome-do-arquivo.txt

Linux – praticando – Script relatório da máquina

Linux - praticando - Script relatório da máquina

.

Abro o terminal pelo menu do sistema.

-----------------

Executo:

-----------------

touch 3Script-relatorio-da-maquina.sh

-----------------

chmod +x 3Script-relatorio-da-maquina.sh

-----------------

vi 3Script-relatorio-da-maquina.sh

-----------------

Aperto Esc. Clico no terminal. Digito i.

-----------------

Copio o texto abaixo e colo no vi.

(Para apagar um linha aperto Esc clico nela e digito dd)

-----------------

#!/bin/bash

# Nome do Script: 3Script-relatorio-da-maquina.sh
# Descrição:
# Execução: sh 3Script-relatorio-da-maquina.sh
# Autor: Fulano de Tal
# Data da Criação: DD/MM/YYYY
# Email: meu_mail@email.com
# Histórico de modificações:
# Comentário:

# COMENTÁRIOS ESPECIAIS:

# TODO - indica uma tarefa a ser feita
# FIXME - indica um bug conhecido que precisa ser arrumado
# XXX - Notícia, chama a atenção
#
# Primeiro definir as variáveis
# 8 Variáveis

KERNEL=$(uname -r)
HOSTNAME=$(hostname)
CPUNO=$(cat /proc/cpuinfo | grep "model name" | wc -l)
CPUMODEL=$(cat /proc/cpuinfo | grep "model name" | head -n1 | cut -c14-)

# Acima cat /proc/cpuinfo mostra um monte de informação. Só quero uma linha de
# informação.
# Filtro usando pipe grep e o que tem no início da string "model name".
# Ainda aparecem 4 strings.
# Uso mais um pipe e o comando head -n1 aparece só uma linha. Mas...
# Uma parte desta única string não quero que apareça.
# Uso pipe e o comando cut -c14- para sumir com 14 caracteres iniciais da
# string.

MEMTOTAL=$(free -h | grep 'Mem:' | cut -d: -f2)
MEMTOTAL2=$(cat /proc/meminfo | grep 'MemTotal:')
FILESYS=$(df -h | egrep -v '(tmpfs | udev)')
UPTIME=$(uptime -s)

# Noto que algumas variáveis são bem conhecidas
# mas outras são comandos criados a partir de
# expressões regulares.

# Para fazer um shell script funcionar criamos
# comandos via expressões regulares, colocamos
# eles dentro de variáveis. A variável só aceita
# um valor! Uma expressão regular é um só valor
# composto de quantos comandos a pessoa quiser.

# Este é o segredo da necessidade de aprender
# expressões regulares. Aprenda muito bem, para
# poder criar ótimos shell scripts.

clear
echo
echo ':::::::::::::::::::::::::::::'
echo "Relatório da Máquina: $HOSTNAME"
echo "Data/Hora: $(date)"
echo ':::::::::::::::::::::::::::::'
echo
echo "Ativa desde: $UPTIME"
echo
echo "Kernel: $KERNEL"
echo
echo "CPUs:"
echo "$CPUNO"
echo
echo "Modelo da(s) CPU(s): $CPUMODEL"
echo
echo "Memória Total: $MEMTOTAL"
echo
echo "$MEMTOTAL2"
echo
echo "Partições:"
echo
echo "$FILESYS"
echo
echo
echo 'Fim do Script'
echo
echo
# Fim do Script

-----------------

Aperto a tecla Esc digito :wq

-----------------

Executo:

-----------------

sh 3Script-relatorio-da-maquina.sh

-----------------

Outro Shell Script escrito diferente mas sobre o mesmo assunto:

-----------------

#!/bin/bash

# Nome do Script: RelatInfo.sh
# Descrição: Script que gera um relatório de algumas informações da máquina atual
# Execução: ./RelatInfo.sh
# Autor: Fulana de Tal
# Data da Criação: DD/MM/YYYY
# Email: meu_mail1@mail.com
# Histórico de modificações:
# Comentário:
# COMENTÁRIOS ESPECIAIS:
# TODO - indica uma tarefa a ser feita - Info Sist
# FIXME - indica um bug conhecido que precisa ser arrumado - strings duplicadas, uso de variáveis
# XXX - Notícia, chama a atenção. Para remover linhas duplicadas em uma expressão regular:
# Procuro por: find and remove duplicate strings via unix shell script
# awk '!_[$1]++' nome_do_arquivo.txt (a expressão _[$1]++ incrementa o valor do elemento de array com index $1 por um desde que ++ venha depois)

echo ""
echo "== Relatório de Informações da Máquina =="
echo ""
echo 'Dia:'
date
echo ""
echo 'Nome da Máquina:'
hostname
echo ""
echo 'Máquina Ativa desde:'
uptime
echo ""
echo
echo 'Versão Distro:'
cat /proc/version
echo
echo 'Usuario:'
whoami
echo
echo 'Versão do Kernel:'
uname -r
echo ""
lscpu | grep 'CPU(s):'
echo ""
lscpu | grep 'Nome do modelo:'
echo ""
echo 'Partições:'
df -kh
echo ""
lscpu | grep 'Arquitetura:'
echo ""
lscpu | grep 'Modo(s) operacional da CPU:'
echo ""
echo 'Relatório de BUGS (nCPUs):' ; cat /proc/cpuinfo | grep 'bugs' | awk '!_[$1]++'
echo ""
echo 'Identidade do vendedor (nCPUs):'
cat /proc/cpuinfo | grep 'vendor_id' | awk '!_[$1]++'
echo ""
echo 'Fim do Script'
echo ""

# Fim do Script

.

Até Breve!

.

:)

.

Linux shell script praticando – Script que soma 3 valores e exibe resultado

Linux shell script praticando - Script que soma 3 valores e exibe resultado

.

Abro o terminal pelo menu do sistema.

-----------------

Executo:

-----------------

touch 2script-soma-numeros.sh

-----------------

chmod +x 2script-soma-numeros.sh

-----------------

vi 2script-soma-numeros.sh

-----------------

Aperto Esc. Clico no terminal. Digito i.

-----------------

Copio o texto abaixo e colo no vi.

(Para apagar um linha aperto Esc clico nela e digito dd)

-----------------

#!/bin/bash

# Nome do Script: 2script-soma-numeros.sh
# Descrição:
# Autor: Fulano de Tal
# Data da Criação: DD/MM/YYYY
# Email: meu_mail@email.com
# Histórico de modificações:
# Comentário:
# COMENTÁRIOS ESPECIAIS:
# TODO - indica uma tarefa a ser feita
# FIXME - indica um bug conhecido que precisa ser arrumado
# XXX - Notícia, chama a atenção
# Execução: sh 2script-soma-numeros.sh

echo
echo "Por favor, digite alguns números:"
sleep 2
echo

read -p "Digite a Variavel 1: " VARIAVEL1
read -p "Digite a Variavel 2: " VARIAVEL2
read -p "Digite a Variavel 3: " VARIAVEL3

echo
echo "A soma da $VARIAVEL1 + $VARIAVEL2 + $VARIAVEL3" é $(expr $VARIAVEL1 + $VARIAVEL2 + $VARIAVEL3)

echo
echo 'Fim do Script'
sleep 2
echo

# Fim do Script: 2script-soma-numeros.sh

-----------------

Aperto a tecla Esc digito :wq

-----------------

Executo:

-----------------

sh 2script-soma-numeros.sh

-----------------

.

O Resultado é:

.

$ sh 2script-soma-numeros.sh

Por favor, digite alguns números:

Digite a Variavel 1: 22
Digite a Variavel 2: 20
Digite a Variavel 3: 10

A soma da 22 + 20 + 10 é 52

Fim do Script

.

.

Até Breve!

🙂

.

Script que gera um relatório de algumas informações da máquina atual

#!/bin/bash

# Nome do Script: RelatInfo.sh

# Descrição: Script que gera um relatório de algumas informações da máquina atual

# Autor: Fulano de Tal

# Data da Criação: DD/MM/YYYY

# Email: meu_mail1@mail.com

# Histórico de modificações:

# Comentário:

# COMENTÁRIOS ESPECIAIS:

# TODO - indica uma tarefa a ser feita

# FIXME - indica um bug conhecido que precisa ser arrumado

# XXX - Notícia, chama a atenção

#

echo ""
echo "== Relatório de Informações da Máquina =="

echo ""
echo 'Dia:'
date

echo ""
echo 'Usuario:'
whoami

echo ""
echo 'Máquina Ativa desde:'
uptime

echo ""
echo 'Verão do Kernel:'
uname -r
echo ""

lscpu | grep 'CPU(s):'
echo ""

lscpu | grep 'Nome do modelo:'
echo ""

echo 'Partições:'
df -kh
echo ""

lscpu | grep 'Arquitetura:'
echo ""

lscpu | grep 'Modo(s) operacional da CPU:'
echo ""

echo 'Relatório de BUGS (nCPUs):' ; cat /proc/cpuinfo | grep 'bugs'
echo ""

echo 'Identidade do vendedor (nCPUs):'
cat /proc/cpuinfo | grep 'vendor_id'
echo ""

echo 'Fim do Script'
echo ""

# Fim do Script

Linux Parâmetros e entradas do usuário

Linux Parâmetros e entradas do usuário

.

Executo:

.

mkdir -vp DirParam/SubDirP

.

ls -t

.

cd DirParam/SubDirP/

.

LEITURA:
Usar parâmetros. Tenho comandos que uso. Estes comandos tem opções. Muitos comandos e suas opções precisam de parâmetros.

.

Exemplo: O comando grep busca linha que tem um padrão de busca que é root. A opção -E interpreta o padrão como uma expressão regular estendida. O parâmetro /etc/passwd.txt diz ao comando e a opção onde fazer o serviço. Fica assim:

.

1) grep -E padrão Argumento

2) grep -E root /etc/passwd

3) grep -v bash /etc/passwd

.

Posso usar parâmetros em shell script.

.

Executo:

-----------------

touch ArqParam.sh

-----------------

chmod +x ArqParam.sh

-----------------

vi ArqParam.sh

-----------------

Aperto Esc. Clico no terminal. Digito i.

-----------------

Copio o texto abaixo e colo no vi.

-----------------

#!/bin/bash

# Declaro uma função em ShellScript

function BoasVindas(){
echo -e "\n\nSeja Bem Vindo $1 \n\n"
}

echo -n "Digite seu nome: "
read NOME

# A variável NOME receberá o que foi digitado por mim

BoasVindas "$NOME"

# Aqui passo o conteúdo da variável NOME como o 1º parâmetro para a função BoasVindas()

-----------------

Salvo e saio apertando a tecla Esc e digitando :wq (Enter)

-----------------

Executo:

-----------------

sh ArqParam.sh

-----------------

OBS:

1) Funções em shell script não recebem parâmetros na sua declaração.
2) Dentro da função há um "$1", esse é o parâmetro que a função receberá, então caso queira passar mais de um parâmetro para a função, basta chamar dentro dela os valores respectivos aos parâmetros, ou seja, $1 = primeiro parâmetro, $2 = segundo parâmetro, $3 = terceiro ... $9 = nono parâmetro.
3) Se a função tiver mais de 9 parâmetros, posso declarar da seguinte forma: ${10}, ${11} etc.

-----------------

Executo:

-----------------

touch ArqParam2.sh

-----------------

chmod +x ArqParam2.sh

-----------------

vi ArqParam2.sh

-----------------

Aperto Esc. Clico no terminal. Digito i.

-----------------

Copio o texto abaixo e colo no vi.

-----------------

#!/bin/bash

# Declaro uma função em ShellScript

function EscrevePalavra(){
echo -e "\n\nVocê escreveu $1 \n\n"
}

echo -n "Escreva uma palavra: "
read PALAVRA

EscrevePalavra "$PALAVRA"

-----------------

Aperto a tecla Esc digito :wq

-----------------

Executo:

-----------------

sh ArqParam2.sh

-----------------

O script ArqParam2.sh imprime no terminal os parâmetros que foram passados. Para usar um parâmetro em específico uso $1 o primeiro parâmetro. A partir do décimo parâmetro tem que usar ${10}, do contrário o shell vai usar o parâmetro 1 e escreverá um 0 em seguida

-----------------

Executo:

-----------------

touch ArqParam3.sh

-----------------

chmod +x ArqParam3.sh

-----------------

vi ArqParam3.sh

-----------------

Aperto Esc. Clico no terminal. Digito i.

-----------------

Copio o texto abaixo e colo no vi.

-----------------

#!/bin/bash

# ArqParam3.sh

# Declaro uma função em ShellScript

echo "O parâmetro 1 é: $1"
echo "O parâmetro 3 é: $3"
echo "O parâmetro 10 é: ${10}"
echo "O parâmetro 15 é: ${15}"
echo "O parâmetro 16 é: ${16}"
echo "O parâmetro 17 é: ${17}"

-----------------

Aperto a tecla Esc digito :wq

-----------------

Executo:

-----------------

sh ArqParam3.sh 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17

-----------------

bash ArqParam3.sh um 2 três 4 5 6 7 8 9 dez 11 12 13 14 quinze 16 dezessete

-----------------

Executo:

-----------------

touch ArqParam4.sh

-----------------

chmod +x ArqParam4.sh

-----------------

vi ArqParam4.sh

-----------------

Aperto Esc. Clico no terminal. Digito i.

-----------------

Copio o texto abaixo e colo no vi.

-----------------

#!/bin/bash

echo Existem $# argumentos para $0: $*
echo primeiro argumento: $1
echo segundo argumento: $2
echo terceiro argumento: $3
echo quarto argumento: $4
echo Aqui estão eles de novo: $@

-----------------

Aperto a tecla Esc digito :wq

-----------------

Executo:

-----------------

bash ArqParam4.sh experimento shell script Linux

-----------------

echo "" ; sh ArqParam4.sh experimento shell script Linux ; echo ""

-----------------

Executo:

-----------------

touch ExemploParametros.sh

-----------------

chmod +x ExemploParametros.sh

-----------------

vi ExemploParametros.sh

-----------------

Aperto Esc. Clico no terminal. Digito i.

-----------------

Copio o texto abaixo e colo no vi.

-----------------

#!/bin/bash

# $0 - Nome do programa

# $# - Quantidade de parâmetros inseridos

# $* - Todos os parâmetros inseridos

# $1 - Parametro 1
# $2 - Parametro 2
# $3 - Parametro 3
# $4 - Parametro 4
# $5 - Parametro 5
# $6 - Parametro 6
# $7 - Parametro 7
# $8 - Parametro 8
# $9 - Parametro 9

# ${10} - Parametro 10
# ${11} - Parametro 11

echo "O script $0 recebeu $# parâmetros "

-----------------

Aperto a tecla Esc digito :wq

-----------------

Executo:

-----------------

sh ExemploParametros.sh

-----------------

Resultado:

-----------------

$ sh ExemploParametros.sh
O script ExemploParametros.sh recebeu 0 parâmetros

-----------------

Se eu adicionar ao comando "sh ExemploParametros.sh" as palavras: Vida Jovem Filosofa Poetisa.

.

Executo:

.

sh ExemploParametros.sh Vida Jovem Filosofa Poetisa

.

Resultado:

.

$ sh ExemploParametros.sh Vida Jovem Filosofa Poetisa
O script ExemploParametros.sh recebeu 4 parâmetros

.

Executo:

.

sh ExemploParametros.sh Vida Jovem Filosofa Poetisa GNU Linux

.

Resultado:

.

$ sh ExemploParametros.sh Vida Jovem Filosofa Poetisa GNU Linux
O script ExemploParametros.sh recebeu 6 parâmetros

.

Executo:

.

vi ExemploParametros.sh

-----------------

Aperto Esc. Clico no terminal. Digito i.

-----------------

Copio o texto abaixo e colo no vi.

-----------------

#!/bin/bash

# $0 - Nome do programa

# $# - Quantidade de parâmetros inseridos

# $* - Todos os parâmetros inseridos

# $1 - Parametro 1
# $2 - Parametro 2
# $3 - Parametro 3
# $4 - Parametro 4
# $5 - Parametro 5
# $6 - Parametro 6
# $7 - Parametro 7
# $8 - Parametro 8
# $9 - Parametro 9

# ${10} - Parametro 10
# ${11} - Parametro 11

echo ""
echo "O script $0 recebeu $# parâmetros "
echo ""
echo "Os parâmetros recebidos foram: $*"
echo ""

-----------------

Aperto a tecla Esc digito :wq

-----------------

Executo:

-----------------

sh ExemploParametros.sh Luz Velho Sombra GNU Linux Unix Novos Alunos

-----------------

Executo:

.

vi ExemploParametros.sh

-----------------

Aperto Esc. Clico no terminal. Digito i.

-----------------

Copio o texto abaixo e colo no vi.

-----------------

#!/bin/bash

# $0 - Nome do programa

# $# - Quantidade de parâmetros inseridos

# $* - Todos os parâmetros inseridos

# $1 - Parametro 1
# $2 - Parametro 2
# $3 - Parametro 3
# $4 - Parametro 4
# $5 - Parametro 5
# $6 - Parametro 6
# $7 - Parametro 7
# $8 - Parametro 8
# $9 - Parametro 9

# ${10} - Parametro 10
# ${11} - Parametro 11

echo ""
echo "O script $0 recebeu $# parâmetros "
echo ""
echo "Os parâmetros recebidos foram: $*"
echo ""
echo "Parâmetro \$1 = $1" # Noto o escape em \$
echo "Parâmetro \$2 = $2"
echo "Parâmetro \$3 = $3"
echo "Parâmetro \$4 = $4"
echo "Parâmetro \$5 = $5"
echo "Parâmetro \$6 = $6"
echo "Parâmetro \$7 = $7"
echo ""

-----------------

Aperto a tecla Esc digito :wq

-----------------

Executo:

-----------------

sh ExemploParametros.sh Vida Jovem Velho Poeta GNU Linux Unix

.

Executo:

.

echo -e 'AlunaA Xh \nAmunoC Beg \nAnunaE Yok \nApunoT Wxs' > ParamNom.txt

.

touch ParamLunos.sh

chmod -x ParamLunos.sh

.

vi ParamLunos.sh

.

Copio e colo no ParamLunos.sh:

.

#!/bin/bash

# ParamLunos.sh - Procura nomes
# Autor: Average Joe
# Exemplo de script para uso de parâmetros
# Uso: sh ParamLunos.sh

NOMEALUN="ParamNom.txt"

clear
echo ""
echo "== Script busca Nome =="
echo ""

NOMECOMP=$(grep "$1" $NOMEALUN) # O grep recebe o parâmetro $1

echo ""
echo "O nome completo é: $NOMECOMP"
echo ""
echo "Fim do Script"
echo ""

--------------------

sh ParamLunos.sh AnunaE

--------------------

.

Até Breve!

.

🙂

Linux comando read

Linux comando read

.

No Bash o comando read recebe a entrada do usuário (EU). O comando read ajuda a manipular e tratar a entrada de dados em Bash Shell. Exemplo para escrever scripts:

read VARIAVEL

.

IMPRIMINDO E LENDO VALORES AO MESMO TEMPO:

read -p 'TEXTO' VARIAVEL

.

A opção -p originalmente mostra uma mensagem na saída de erro padrão.
Se não estiver redirecionando essa saída para o /dev/null ou para nenhum outro lugar, ela será apresentada na tela do terminal.

----------------

Exemplo:

#!/bin/bash

# A entrada de dados é encerrada ao apertar a interrogação '?'

read -p "Digite uma pergunta? : " -d'?' PERGUNTA

echo

echo "$PERGUNTA"

----------------

LIMITANDO A QUANTIDADE DE CARACTERES A SEREM LIDOS

read -n NUMERO

.

A opção -n faz o read ler até a quantidade de caracteres especificada em NUMERO.

Útil para fazer menus em que apenas um caractere deve ser informado, sem a necessidade do ENTER para finalizar, pois a condição de -n já foi atendida.

----------------

CONTINUANDO...

.

ABRO O TERMINAL PELO MENU DO SISTEMA.

.

EXECUTO:

.

read UM_NOME

.

Digito:

Average Joe

.

Executo:

.

echo $UM_NOME

.

read VALOR1 VALOR2 VALOR3

.

Digito:

Aprendendo Linux Shellscript

.

Executo:

.

echo $VALOR1 $VALOR2 $VALOR3

.

read VALOR1 VALOR2

.

Aprendendo Linux Shellscript

.

echo $VALOR1

.

echo $VALOR2

.

read -p "Escreva uma palavra: " CRONOS

.

Biplano

.

echo $CRONOS

.

read -s CURSE

.

6a5b4c3d2e1f

.

echo $CURSE

.

mkdir -vp TesteRead/SubPasta

.

cd TesteRead/SubPasta

.

pwd

.

ls -R

.

echo -e 'Alu Mino \nZeta Ser \nXandre Bol \nErbe Pro \nHugu Ben \nKako Tom \nQuex Vuz' > ArqRead.txt

.

cat ArqRead.txt

.

cd ..

.

pwd

.

grep Quex ~/TesteRead/SubPasta/ArqRead.txt

.

cd -

.

pwd

.

ls

.

echo -e '#!/bin/bash \n \n# Este é script teste cmd read \n' > readscript.sh ; chmod +x readscript.sh ; cat readscript.sh

.

ls -til

.

vi readscript.sh

.

Aperto Esc. Clico no terminal. Digito i.

.

Copio o texto abaixo e colo no vi.

.

# Inicio

ARQREAD="ArqRead.txt"

clear

echo ""
echo '== Script Busca Nomes =='
echo
echo -n "Favor informar o nome a buscar:"
read NOME

echo ""
echo "O nome completo é: $(grep "$NOME" $ARQREAD)"
echo ""
echo "Fim do Script"
echo ""

# Fim

.

Salvo e saio apertando a tecla Esc e digitando :wq (Enter)

.

Executo:

.

sh readscript.sh

.

Digito: Kako

.

Aperto a tecla Enter

.

O resultado é:

.

== Script Busca Nomes ==

Favor informar o nome a buscar:Kako

O nome completo é: Kako Tom

Fim do Script

.

OBS.
Em vez de usar:

echo -n "Favor informar o nome a buscar:"
read NOME

Poderia ser:

read -p "Favor informar o nome a buscar: " NOME

.

Salvo e saio apertando a tecla Esc e digitando ZZ (Enter)

.

Executo:

.

vi readscript.sh

.

Aperto Esc. Clico no terminal. Digito i.

.

OBS:
No Vi apertando a tecla Esc e digitando dd - deleta linha corrente, apertando a tecla Esc e digitando dG - deleta até a última linha do arquivo, d$ - deleta até o fim da linha, d^ - deleta até o início da linha.

.

Copio o texto abaixo e colo no vi.

.

# Inicio

ARQREAD="ArqRead.txt"

clear

echo ""
echo '== Script Busca Nomes =='
echo
read -p "Favor informar o nome a buscar: " NOME

echo ""
echo "O nome completo é: $(grep "$NOME" $ARQREAD)"
echo ""
echo "Fim do Script"
echo ""

# Fim

.

Salvo e saio apertando a tecla Esc e digitando :x (Enter)

Executo:

.

sh readscript.sh

.

Digito: Zeta

.

O resultado é:

== Script Busca Nomes ==

Favor informar o nome a buscar: Zeta

O nome completo é: Zeta Ser

Fim do Script

.

OUTRO MODO DE FAZER A MESMA COISA...

.

Executo:

.

vi readscript.sh

.

Aperto Esc. Clico no terminal.

.

REPITO OBS:
No Vi apertando a tecla Esc e digitando dd - deleta linha corrente, apertando a tecla Esc e digitando dG - deleta até a última linha do arquivo, d$ - deleta até o fim da linha, d^ - deleta até o início da linha.

.

Copio o texto abaixo e colo no vi.

.

# Inicio

ARQREAD="ArqRead.txt"

clear

echo ""
echo '== Script Busca Nomes =='
echo
read -p "Favor informar o nome a buscar: " NOME

NOMECOMPLETO=$(grep "$NOME" $ARQREAD)

echo ""
echo "O nome completo é: $NOMECOMPLETO"
echo ""
echo "Fim do Script"
echo ""

# Fim

.

Salvo e saio apertando a tecla Esc e digitando :wq (Enter)

.

Executo:

.

cat ArqRead.txt

.

bash readscript.sh

.

Digito: Erbe

.

O resultado é:

.

== Script Busca Nomes ==

Favor informar o nome a buscar: Erbe

O nome completo é: Erbe Pro

Fim do Script

.

Linux man exiftool grep cut tr sed touch echo

.

LINUX MAN EXIFTOOL GREP CUT TR SED TOUCH ECHO

.

1) man exiftool

2) man exiftool | grep -A 30 'File Types'

3) man exiftool | grep -A 60 'File Types'

4) exiftool nome-do-arquivo.qualquer_ext_de_'File Types'

5) exiftool nome-do-arquivo.mkv

6) exiftool nome-do-arquivo.png

7) exiftool nome-do-arquivo.mp4

8) exiftool nome-do-arquivo.mp3

9) exiftool nome-do-arquivo.jpg

10) exiftool nome-do-arquivo.jpg | grep Create

11) exiftool nome-do-arquivo.jpg | grep | cut -d : -f 2-

.

OBS:

O "| grep create" mostra a linha que tem a palavra Create.

Já "| cut -d : -f" apaga o que vem antes dos dois pontos.

O "-d" casa com o caractere ":".

O "-f" filtra os campos desejados ou não.

O "2-" mostra do campo 2 em diante. Os campos começam com campo zero, campo 1, campo 2, Etc.

.

12) touch nome-do-arquivo.jpg (Altera a data do arquivo. Pode ser mkv, png, mp4, mp3, Etc.)

13) man touch (Encontro opção -t)

14) man touch | grep -A 5 times

15) man touch | grep -A 3 STAMP

.

16) exiftool nome-do-arquivo.png | grep Create | cut -d : -f 2- | tr -d ': '

(Apaga os dois pontos e espaço em branco)

.

exiftool nome-do-arquivo.png | grep Create | cut -d : -f 2- | tr -d ': ' | sed 's/./&./'

(Insere um ponto. A parte final do comando usa expressões regulares)

.

exiftool nome-do-arquivo.png | grep Create | cut -d : -f 2- | tr -d ': ' | sed 's/./&./6'

(Insere um ponto na sexta ocorrência.)

.

exiftool nome-do-arquivo.png | grep Create | cut -d : -f 2- | tr -d ': ' | sed 's/./&./12'

(Insere um ponto na ocorrência 12.)

.

touch -t numeros-data-com-ponto-antes-das-2-ultimas-ocorrencias nome-do-arquivo.png

.

CRIAR UM LOOP

.

DIGITO NO TERMINAL:

for VARIAVEL in *.png (Teclo Enter)

do (Teclo Enter)

echo Esta VARIAVEL: (Teclo Enter)

done (Teclo Enter)

.

EXECUTO:

for VARIAVEL in *.png; do echo Essa VARIAVEL: $VARIAVEL; done

for VARIAVEL in *.png; do echo Essa Outra VARIAVEL: $VARIAVEL; done

for VARIAVEL in *.png; do echo touch -t .... $VARIAVEL ; done

.

COLOCANDO SUB SHELL DENTRO DO COMANDO:

(Quer dizer colocar um comando dentro de outro comando.)

.

EXEMPLO:

inicio-do-comando $(sub shel) fim-do-comando

.

EXEMPLO:

for VARIAVEL in *.png; do echo touch -t $(exiftool "$VARIAVEL" | grep Create | cut -d : -f 2- | tr -d ': ' | sed 's/./&./12') "$VARIAVEL" ; done

.

OBS:

1) No comando acima o "echo" simula o comando antes de executar realmente o comando. Para executar o comando removo o "echo".
2) Se coloco variável dentro de um comando coloco aspas.

.

REMOVER PERMISSÃO DE EXECUÇÃO DE TODOS OS ARQUIVOS EM UMA PASTA.

.

EXECUTO:

chmod -x *

.

cap-Vi-post

.

Dissecando uma Poesia usando Linux

Anotações Linux shell script

.

AnotacoesLinuxShellScript.txt

.

Não quero de forma alguma aprender tudo hoje nem amanhã. Saber tudo é horrível. Rouba de mim o prazer de estudar. Não saber é bom, pois assim, posso buscar e aprender alguma coisa. Qualquer coisa. Creio que uma pessoa que sabe tudo, no final, talvez não possa fazer nada.

.

CRIAR DIRETORIO/PASTA

.

mkdir -p ~/Downloads/NotasLinuxShell/EstLinux

.

NAVEGAR ATÉ EstLinux

.

cd ~/Downloads/NotasLinuxShell/EstLinux

pwd

.

OBJETIVO CONTAR PALAVRAS EM SHELL

.

criar um arquivo de texto com dezoito palavras em seis linhas

.

echo -e 'contando palavras shell \nFalantes loa leia \nLuz olhos shell \nCibernético planos sonda \nEscritor não loucura \nCharles Aluno1 leia' > ContarPalavrasEmShell.txt

.

EXECUTANDO COMAND WC DO PACOTE GNU COREUTILS

.

1) wc -w ContarPalavrasEmShell.txt

2) wc -w /etc/passwd

3) wc -l ContarPalavrasEmShell.txt

4) wc -l /etc/passwd

5) wc -c ContarPalavrasEmShell.txt

6) wc -c /etc/passwd

7) wc -m ContarPalavrasEmShell.txt

8) wc -m /etc/passwd

.

Se executar "echo 333 | wc -c" o resultado é 4

.

EXECUTO:

.

echo 333 | wc -c

.

ME INFORMANDO SOBRE O COMANDO UNIQ NA MANPAGE:

.

man uniq | grep count

.

man uniq | grep -A 1 count
.

man uniq | grep -A 3 count

.

man uniq | grep -A 5 count

.

EXECUTO:

echo ; cat ContarPalavrasEmShell.txt | uniq -c ; echo

.

O RESULTADO NÃO É BEM O CORRETO

.

EXECUTO:

echo ; cat ContarPalavrasEmShell.txt | sort | uniq -c ; echo

.

clear ; echo ; cat ContarPalavrasEmShell.txt | sort #| uniq -c ; echo

.

TEM QUE SER UMA PALAVRA POR LINHA LINHA E ESTAS LINHAS DEVEM ESTAR ORDENADAS.

.

CRIO NOVO ARQUIVO DE TEXTO

.

EXECUTO:

echo -e 'leia1\nleia2\nleia3\nleia4\nleia5' > LeiaPalavrasEmShell.txt

.

EXECUTO:

.

cat LeiaPalavrasEmShell.txt | sort | uniq -c

.

cat LeiaPalavrasEmShell.txt | sort #| uniq -c

.

COPIO ESTE TEXTO DA INTERNET:

.

Se vai tentar
siga em frente.
Senão, nem começe!
Isso pode significar perder namoradas
esposas, família, trabalho...e talvez a cabeça.
Pode significar ficar sem comer por dias,
Pode significar congelar em um parque,
Pode significar cadeia,
Pode significar caçoadas, desolação...
A desolação é o presente
O resto é uma prova de sua paciência,
do quanto realmente quis fazer
E farei, apesar do menosprezo
E será melhor que qualquer coisa que possa imaginar.
Se vai tentar,
Vá em frente.
Não há outro sentimento como este
Ficará sozinho com os Deuses
E as noites serão quentes
Levará a vida com um sorriso perfeito
É a única coisa que vale a pena.
-- Charles Bukowski

.

EXECUTO:

.

vi PoesiaBukowski.txt

.

Aperto Esc. digito i. colo o texto copiado com o mouse. confiro. Aperto Esc. Digito :wq.

.

EXECUTO:

ls -tli

.

clear

cat | uniq -c PoesiaBukowski.txt

.

OBS:
teclo Ctrl C

.

MAS QUERO CONTAR UMA PALAVRA POR LINHA

.

EXECUTO:

cat PoesiaBukowski.txt | sort | uniq -c

.

PARA UMA PALAVRA POR LINHA USO "xargs -n 1"

.

EXECUTO:

1)

cat PoesiaBukowski.txt | xargs -n 1

2)

clear ; echo ; cat PoesiaBukowski.txt | xargs -n 1 ; echo

3)

cat PoesiaBukowski.txt | xargs -n 3

4)

clear ; echo ; cat PoesiaBukowski.txt | xargs -n 3 ; echo

5)

cat PoesiaBukowski.txt | xargs -n 4

6)

clear ; echo ; cat PoesiaBukowski.txt | xargs -n 4 ; echo

.

SEM VIRGULAS E PONTOS

.

EXECUTO:

cat PoesiaBukowski.txt | egrep -o '\w+'

.

PARA ORDENAR E PARA CONTAR

.

EXECUTO:

clear

cat PoesiaBukowski.txt | egrep -o '\w+' | sort | uniq -c

.

ORDENAR OS QUE MAIS APARECEM

.

EXECUTO:

clear

cat PoesiaBukowski.txt | egrep -o '\w+' | sort | uniq -c | sort -n

.

ISTO É ÚTIL SE EU ESCREVO UM TEXTO E TENHO VÍCIO DE USAR CERTAS PALAVRAS EM EXCESSO, ACHO EU; QUE ESCREVO.

.

MOSTRAR DO MAIOR PARA O MENOR

.

EXECUTO:

clear

cat PoesiaBukowski.txt | egrep -o '\w+' | sort | uniq -c | sort -n -r

.

PARA VER SÓ AS DEZ PRIMEIRAS

.

EXECUTO:

clear

cat PoesiaBukowski.txt | egrep -o '\w+' | sort | uniq -c | sort -n -r | head

.

PARA VER A QUE MAIS APARECE NO TEXTO:

.

EXECUTO:

cat PoesiaBukowski.txt | egrep -o '\w+' | sort | uniq -c | sort -n -r | head -n1

.

PARA VER AS 7 QUE MAIS APARECEM

.

EXECUTO:

1) clear

2) cat PoesiaBukowski.txt | egrep -o '\w+' | sort | uniq -c | sort -n -r | head -n 7

3) echo ; cat PoesiaBukowski.txt | egrep -o '\w+' | sort | uniq -c | sort -n -r | head -n 7 ; echo

4) egrep -o '\w+' (uma palavra por linha), sort (ordena), uniq -c (conta), sort -n -r (o resultado é ordenado numericamente do maior para o menor), head -n 7 (pega as sete primeiras)

.

Me pergunto se num desafio, alguém poderia produzir um texto poderoso como o que achei na internet usando as sete palavras mais usadas na poesia:

.

5 significar
4 Pode
4 a
3 que
3 em
3 E
2 vai

.

QUERO SÓ AS QUE TIVEREM TRES LETRAS OU MAIS.

.

EXECUTO:

1)

cat PoesiaBukowski.txt | egrep -o '\w+' | grep ...

2)

cat PoesiaBukowski.txt | egrep -o '\w+' | grep .....

3)

cat PoesiaBukowski.txt | egrep -o '\w+' | grep ... | sort | uniq -c | sort -n -r | head -n 7

4)

clear ; echo ; cat PoesiaBukowski.txt | egrep -o '\w+' | grep ... | sort | uniq -c | sort -n -r | head -n 7 ; echo

5)

cat PoesiaBukowski.txt # | egrep -o '\w+' | grep ... | sort | uniq -c | sort -n -r | head -n 7

6)

cat PoesiaBukowski.txt | egrep -o '\w+' # | grep ... | sort | uniq -c | sort -n -r | head -n 7

.

E assim usando Linux disseco uma poesia.

.

Até Breve

.