Bash script telegram bot enviar mensagens

Para obter o ID do bate-papo em grupo e enviar mensagens, faça o seguinte. Adicione o Telegram BOT ao grupo. Obtenha a lista de atualizações para o seu bot:

https://api.telegram.org/botTOKEN/getUpdates

Exemplo:

https://api.telegram.org/bot123456789:jbd78sadvbdy63d37gda37bd8/getUpdates e procure pelo "chat"

{"update_id":8393,"message":{"message_id":3,"from":{"id":7474,"first_name":"AAA"},"chat":{"id":,"title":""},"date":25497,"new_chat_participant":{"id":71,"first_name":"NAME","username":"YOUR_BOT_NAME"}}}

Esta é uma amostra da resposta quando você adiciona seu BOT a um grupo. Use o "id" do objeto "chat" para enviar suas mensagens.

---

#!/usr/bin/env bash

##################

# Nome: test_script_telegram_bot_mensagem.sh
# Um script Bash simples que envia a mensagem
# "Hello World" através da API do Telegram.
# Pode enviar outras mensagens também
# Precisa do:
# 1) token:
#
# 2) chat_id:
# Para saber melhor veja os posts anteriores

##################

# VARIÁVEIS:

TOKEN=TOKEN (SEQUENCIA DE NUMEROS E LETRAS)

CHAT_ID=-CHAT_ID (NUMEROS)

MESSAGE="Alô Mundo!"

URL="https://api.telegram.org/bot$TOKEN/sendMessage"

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

# curl -s -X POST $URL -d chat_id=$CHAT_ID -d text="$MESSAGE"

echo -e "*** Vamos usar o bot para conversar no Telegram ***"

sleep 2

echo ""

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

read -p "Digite uma mensagem : " MSG

echo "Você digitou : $MSG"

echo ""

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

curl -s -X POST $URL -d chat_id=$CHAT_ID -d text="$MSG"

echo ""

echo "Feito!"

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

# ENVIAR PELO TERMINAL MENSAGEM A UM DETERMINADO CHAT ESPECÍFICO USANDO CURL:

# Precisa do:

# 1) token: SEQUENCIA DE NÚMEROS E LETRAS

# 2) chat_id: -NUMEROS

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

# Para descobrir CHAT_ID e outras coisas...

# https://api.telegram.org/botTOKEN/getupdates/

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

# Comandos:

# 1) curl -s -X POST https://api.telegram.org/bot/sendMessage -d chat_id=- -d text="Muito legal estar aqui pessoal!"

# 2) curl -s -X POST https://api.telegram.org/bot/sendMessage -d chat_id=- -d text="Muito legal! Vamos conversar aqui gente!"

# 3) curl -s -X POST https://api.telegram.org/bot/sendMessage -d chat_id=- -d text="Como é que faz para fazer pedidos aqui? Gostaria de pedir uns..."

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

# fim do script

Linux tomada de decisões

Linux shell script tomar decisoes: if then else elif fi case – Exemplos Práticos

Shell script nome dado a um arquivo que será interpretado por algum programa tipo Shell. Atualmente existem vários programas tipo Shell, além dos principais sh e bash, existem também, ksh, zsh, csh e tcsh. Um Shell script ou script em Shell necessita basicamente do interpretador (Shell). Algumas operações típicas executadas por linguagens de script em Shell incluem; manipulação de arquivos, execução de programas e impressão de texto. Sendo assim é muito comum ver scripts sendo utilizados para automatização de tarefas, como configurar o ambiente, executar um programa e fazer qualquer limpeza, registro, etc.
– wiki

Para declarar que o script deve ser interpretado por Bourne-Again shell (Bash) é recomendável a utilização do comando env, pelo fato que apesar de o Bash já vir instalado em muitas distribuições Linux, não sabemos se ele estará em todas elas no mesmo diretório /bin/, então use a seguinte forma:

#!/usr/bin/env bash

– wiki

Os comentários nas linguagens Bourne Shell (sh) e Bourne-Again Shell (bash) serão utilizados hashtag (#), Exemplo de comentários:

#Comentário
#- Segundo comentário
# // [ Terceiro comentário ] //

– wiki

Variáveis – Como qualquer outra linguagem de programação conhecida, um script em Shell também possui suporte a variáveis. Em uma breve explicação uma variável é um nome/objeto simbólico ao qual podemos atribuir valores, ler ou manipular o conteúdo.

– wiki

Os scripts em Shell possuem as seguintes variáveis pré-definidas:

$? – Armazena o status de saída do último programa executado;
$# – Armazena a quantidade de parâmetros de linha de comandos;
$$ – Armazena o valor PID (Process Identifier) do script em shell que estiver em execução;
$@ – Armazena o valor de todos os parâmetros passados, similar a variável argv presente nas linguagens de programação C e C++;
$! – Armazena o PID do último processo em segundo plano. Isso é útil para acompanhar o processo à medida que o trabalho é realizado;
$0, …, $9 – Armazena os valores de todos os parâmetros de linha de comando separadamente.

– wiki

Variáveis globais ou variáveis de ambiente globais, são variáveis criadas/definidas com o comando export e podem ser utilizadas por multiplos scripts em Shell. Um exemplo é a variável de ambiente LANG (Pré-definida em diversas distribuições Linux), Podendo ser acessada por diversos arquivos de script em Shell.

Outras variáveis pré definidas são:

PATH: define diretórios de procura por programas executados no shell;
USER: informa o nome do usuário do shell;
HOME: informa o caminho do diretório home do usuário;
LANG: Idioma/Linguagem, especificada como locale;
PWD: diretório atual;
TERM: Tipo de terminal atual em uso.
UID: UID do usuário atual.
RANDOM: Gera um número aleatório

– wiki

A duas formas de criar uma variável global, exportar uma variável pré definida ou definir quando for exportar:

VARIAVEL1=Teste
export VARIAVEL1
# Define e exporta com export
export VARIAVEL2=Teste

Array – Bourne Shell (sh) não é compatível com variáveis tipo array, mas Bourne-Again Shell (Bash) sim, exemplo simples de implementação:

#!/usr/bin/env bash
meu_array=(1 2 3 4 5 6 7 8 9)
meu_Array=(“abc” “def” “ghi”)

Chamar variáveis – Para chamar variáveis utiliza-se o sinal de cifrão $var. O cifrão ($) também é bastante utilizado em script sh, para executar programas externos exemplo: var=$(expr 2 + 2) irá armazenar a saída do programa expr. E o cifrão mais chave ${var} é comum ser utilizado das seguintes maneiras:

Para acessar posições em um array ${var[1]}. (obs.: não funciona para sh, apenas para Bash)

E também para substituir o valor de uma variável se a mesma não possuir um valor: ${var:-nome} – ${var:=nome} – ${var:-$(programa)} dessas maneiras irão substituir pelo que for passado depois de :- ou :=, exemplo em código:

read -p “Digite um nome: “myname
echo “${myname:=$(whoami)}”
O código acima irá pedir para o usuário digitar um nome, caso digite irá utilizar echo para imprimir o nome digitado na saída padrão, caso contrário irá substituir pela saída do comando whoami, ao invés de substituir pela saída de um comando, você pode substituir por outro valor exemplo: ${myname:=Bourne Shell}.

– wiki

Tomada de Decisões – Em toda linguagem de programação existe alguma estrutura para tomada de decisões. Essa estrutura em geral é feita através do comando “if”. O comando “if” analisa de uma expressão é verdadeira e então executa um bloco de código, caso a expressão seja falsa pode ser executado, ou não, um outro bloco. Em geral as linguagens de programação oferecem maneiras de verificar se um valor é igual, menor ou maior que outro. As formas mais comuns abaixo.

Para remover uma variável, utiliza-se o comando unset + nome da variável, você pode também remover múltiplas variáveis basta separá-las por espaços.

unset VAR
unset VAR1 VAR2 VAR3 VAR4

Declaração if para scripts em bash ou sh:

if [ $1 = $2 ]; then
echo “Parametro 1=$1 é igual a 2=$2.”
fi
Existe também outra forma:

[ $1 = $2 ] && { echo “Parametro 1 ($1) é igual a 2 ($2).”; exit 0; }

Declaração if else para scripts em bash ou sh, há diversas formas diferentes, tenha cuidado para não esquecer os espaços entre os colchetes eles são muito importantes:

A declaração if else mais comum e mais utilizada é a seguinte:

if [ $1 = $2 ]; then
echo “Parametro 1 ($1) é igual a 2 ($2).”
else
echo “Parametro 1 ($1) não é igual a 2 ($2).”
fi
Mas, existe uma abreviação que também é muito utilizada que é menor e muito boa para teste de linha única:

[ $1 = $2 ] && { echo “Parametro 1 ($1) é igual a 2 ($2).”; exit 0; } || { echo “Parametro 1 ($1) é diferente de 2 ($2).”; exit 0; }

Declaração else if para scripts em bash ou sh são diferentes de algumas linguagens de programação, exemplo:

if [ $3 ]; then
echo “$3”
elif [ $2 ]; then
echo “$2”
else
echo “$1”
fi

Case – Scripts em Bash ou sh, permitem case, a sintaxe é a seguinte:

case “$var” in
valor)
;;
esac

Scripts em Bash possui compatibilidade com Expressões Regulares, algo que scripts em Bourne Shell (sh) não reconhecem:

#!/usr/bin/env bash
[[ $1 =~ ^sh|SH$ ]] && { echo “$1 – Bourne Shell”; }

– wiki

EXEMPLOS PRÁTICOS PRATICADOS

Me acompanhe neste caminho simples.

Existem diversos operadores para cada Shell script, mas aqui serão passadas informações especificamente sobre Bourne shell por ser mais comum e muitos outros shell são similares.

PARA TRATAR NÚMEROS:

== : Igual à
!= : Diferente de
< : Menor que
> : Maior que
<= : Menor ou igual à
>= : Maior ou igual à

EM SHELL SCRIPT OS MESMOS TESTES SÃO OBTIDOS COM:

-eq : (equal) Igual à
-ne : (not equal) Diferente de
-lt : (less than) Menor que
-gt : (greater than) Maior que
-le : (less or egual) Menor ou igual à
-ge : (greater or equal) Maior ou igual à

O USO DO “IF” EM SHELL SCRIPT:

#!/usr/bin/env bash

# titulo: jamais.sh

if [ 4 -eq 6 ] # se 4 for igual a 6
then # então
echo “Esse echo jamais acontecerá” # comando 1
fi # fechamento obrigatório do if

# fim do script

É necessário manter espaços entre os colchetes e os números, ou variáveis. O bloco após a palavra “then” será executado se a expressão dentro do “if” for verdadeira. O bloco “if” termina com a palavra “fi” que é “if” ao contrário. Essa é uma maneira simples de identificar o final de um “if” quando o encontramos.

PARA FAZER COMPARAÇÕES COM TEXTOS USE:

= : Igual à (isso mesmo apenas um sinal de igual)
!= : Diferente de
-n : String existe e não é vazia (apenas um operador)
**-z** : String existe e é vazia (apenas um operador)

Esemplo, o “if” verifica se a variável $nome existe e está vazia, isso significa que o usuário não digitou o nome dele. A instrução “read” faz com que o shell leia alguma informação via teclado e retorne essa informação para a variável informada. Foi usada a palavra “else” que significa “senão”. Esse bloco é executado quando o “if” retorna um valor falso:

#!/usr/bin/env bash

# titulo: seu_nome.sh

# —————- #

echo “Digite seu nome: ” # comando echo
read NOME # comando read armazena o que digitou em NOME

# —————- #

if [ -z $NOME ] # se é apenas um operador
then # então
echo “Você não digitou seu nome!” # comando 1
else # se não
echo “Olá, $NOME” # comando 2
fi # fechamento obrigatório do if

# —————- #

# fim do script

O shell oferece mais opções para o “if” do que as linguagens de programação o fazem! Veja outras opções bem interessantes:

**-s ** : Arquivo existe, não vazio (apenas um operador)
**-f ** : Arquivo existe, não é um diretório (apenas um operador)
**-d ** : Diretório existe (apenas um operador)
**-w ** : Arquivo, com permissão de escrita (apenas um operador)
-r : Arquivo, com permissão de leitura (apenas um operador)
**-x ** : Arquivo, com parmissão de execução -x (apenas um operador)

Por exemplo, crio um diretório TESTES e nele um arquivo de texto vazio chamado meu_log_test.txt, dou permissão de execução e executo o script log_test.sh abaixo:

#!/usr/bin/env bash

# titulo: log_test.sh

ARQUIVO=”/home/user/TESTES/meu_log_test.txt”

if [ -f “$ARQUIVO” ] # se o aquivo meu_log_test.txt existir
then # então
echo “Continuando log…” >> “$ARQUIVO” # comando 1
else # se não
echo “Criando log…” > “$ARQUIVO” # comando 2
fi # fechamento obrigatório do if é fi

# fim do script

Executo e confiro o texto meu_log_test.txt. Resultado:

TESTES:$ ./log_test.sh
TESTES:$ cat meu_log_test.txt
Continuando log…
TESTES:$

Então fica assim, se o arquivo existir continue registrando, execute determinado comando, escreva “Continuando log…”. Se não existir crie o arquivo e escreva nele “Criando log…”.

Apague o arquivo meu_log_test.txt execute o script e veja o script funcionando.

Agora este script super simples, se executado com outros comandos pode fazer coisas bem úteis. O script que toma decisões é forte e útil.

IFs Aninhados – Chamamos de “ifs aninhados” as construções onde há um “if” dentro do bloco “then” ou “else” de outro “if”:

#!/usr/bin/env bash

# titulo: ifs_aninhados_test.sh

# ————– #

# primeiro read

echo “Digite seu nome: ”
read NOME

# ————– #

# segundo read

echo “Digite sua idade: ”
read IDADE

# ————– #

# ifs aninhados

if [ -z $NOME ]
then
echo “Você não digitou seu nome.”
else
echo “Seu nome é $NOME”
if [ $IDADE -gt 10 ] # se sua idade for mais que 10
then # então
echo “Você tem mais que 10 anos.”
else # se não
echo “Você tem 10 anos ou menos.”
fi # fechamento obrigatório do if
fi # fechamento obrigatório do else?

# ————– #

# fim do script

Resultado:

~:$ ifs_aninhados_test.sh
Digite seu nome:
Pipopi
Digite sua idade:
55
Seu nome é Pipopi
Você tem mais que 10 anos.
~:$

Entendendo o funcionamento deste script permite criar vários semelhantes a ele que podem ser usados de acordo com sua necessidade no teu dia a dia para executar tarefas rotineiras (ou não). Não importa se você tem 18, 20, 30 anos ou mais; saiba que este exemplo é recomanedado para todas as idades. Cada idade usará de uma maneira diferente? Provavelmente sim.

If MULTINÍVEL – PODE FAZER COMPARAÇÕES EM SEQUÊNCIA, COM O USO DO elif

#!/usr/bin/env bash

# titulo: if_elif_test.sh

# ————– #

echo “Digite um número”
read NUMERO

# ————– #

if [ $NUMERO -gt 0 ];
then
echo “Número positivo”

# ————– #

elif [ $NUMERO -lt 0 ]
then
echo “Número negativo”

# ————– #

elif [ $NUMERO -eq 0 ]
then
echo “Número é zero”

# ————– #

else
echo “O valor fornecido não é um número!”
fi

# fim do script

Resultado:

~:$ if_elif_test.sh
Digite um número
12
Número positivo
~:$

O SHELL OFERECE OPÇÕES COMO “case” PARA CONTROLE DE FLUXO. O comando “case” é usado para executar um bloco de código de acordo com o valor de uma variável. O comando “case” é interessante pois pode definir diversas opções diferentes sem usar uma estrutura com diversos comandos “if”, “elif” e “else”. O exibe uma mensagem e então pede uma informação do usuário. O usuário vai digitar alguma letra e então o comando “case” entra em ação. Ele verifica qual valor foi digitado pelo usuário e executa os blocos de código relativos a cada opção. Primeira opção é a padrão, por isso ela é executada mesmo que o usuário não digite um valor.Cada bloco do case é iniciado por um valor que a variável analisada pode ter, ou vários valores, separados por um pipe. Os blocos são finalizados por uma sequência de dois caracteres ‘ponto-e-vírgula’ (;;).

#!/usr/bin/env bash

# titulo: echo_read_case_esac_test.sh

echo -n “O que deseja fazer? (L)listar/(C)opiar texto/(S)air do script? [A] ”
read resposta

case “$resposta” in
l|L|””)
echo “Listando…”
sleep 3
ls -ltA
;;
c|C)
echo “Copiando arquivos .txt para Documentos”
sleep 3
cp -r *.txt ~/Documentos/
;;
s|S)
echo “Saindo…”
;;
*)
echo “Opção inválida”
;;
esac

Resultado exemplo:

~:$ echo_read_case_esac_test.sh
O que deseja fazer? (L)listar/(C)opiar texto/(S)air do script? [A] W
Opção inválida

Linux referência global exemplos

Linux o que é referência global na linha de comando? Linux referência global exemplos

Os coringas (referência global) são ferramentas que permitem adivinhar um nome de arquivo ou especificar facilmente um grupo de nomes de arquivos. Os filtros são comandos que recebem uma entrada, processam a informação e apresentam o resultado como saída. Expressões regulares são ferramentas de combinação de padrões, são diferentes e mais poderosas que os coringas. Tudo isso pode ser feito sem mudar o conteúdo original das informações.

Existem quatro (4) coringas que posso usar juntos no mesmo comando.

“*” Asterisco – Significa tudo ou todos caracteres

“?” Interrogação – Significa um único caractere

“[]” Colchetes – Significa todos os caracteres que estiverem dentro dos colchetes

“{}” Chaves

Lista de coringas.

1) “*” – Faz referência a um nome completo/restante de um arquivo/diretório.
2) “?” – Faz referência a uma letra naquela posição.

[padrão] – Faz referência a uma faixa de caracteres de um arquivo/diretório. Padrão pode ser:

3) [a-z][0-9] – Faz referência a caracteres de a até z seguido de um caracter de 0 até 9.
4) [a,z][1,0] – Faz a referência aos caracteres a e z seguido de um caracter 1 ou 0 naquela posição.
5) [a-z,1,0] – Faz referência a intervalo de caracteres de a até z ou 1 ou 0 naquela posição.

A procura de caracteres é “Case Sensitive” assim se você deseja que sejam localizados todos os
caracteres alfabéticos você deve usar [a-zA-Z].

Caso a expressão seja precedida por um ^, faz referência a qualquer caracter exceto o da expressão.

Por exemplo [^abc] faz referência a qualquer caracter exceto a, b e c.

1) {padrões} – Expande e gera strings para pesquisa de padrões de um arquivo/diretório.

2) X{ab,01} – Faz referência a seqüencia de caracteres Xab ou X01

3) X{a-z,10} Faz referencia a seqüencia de caracteres Xa-z e X10.

O que diferencia este método de expansão dos demais é que a existência do arquivo/diretório é opcional para geração do resultado.

Isto é muito útil para a criação de diretórios. Lembrando que os 4 tipos de coringas
(“*”, “?”, “[]”, “{}”) podem ser usados juntos.

EXEMPLOS DE CORINGAS:

listar todos os arquivos de um fictício diretório /usr/teste.

ls -l a??.*
ls -l arq*.???
ls -l arq.???
ls u*
ls /usr/teste/*
ls *.txt
ls teste?.txt
ls teste[1-3].txt
ls *.new
ls teste?.new
ls teste[4,5].*
ls -l [a-d]*.conf
ls -l [ad]*.conf
ls -l [cju]

Suponha que precisamos fazer uma cópia de todos os arquivos mp3 para outro diretório.

cp -rf /tmp/*.mp3 /home/user/music/

Filtros Comandos

GREP – O comando grep procura por textos ou expressões regulares dentro de um ou mais arquivos. Mais adiante veremos alguns exemplos com o comando grep com expressões regulares, agora veremos exemplos mais básicos. As opções mais comuns são:

-i Ignora a distinção entre letras maiúsculas e minúsculas.
-n Mostra o número de cada linha encontrada pelo grep.
-l Lista os nomes dos arquivos ao invés de linhas individualizadas.
-c Conta o número de vezes que a palavra ou caractere aparece no arquivo.
–help Exibe informações das opções que podem ser usadas pelo grep.

Exemplo saber qual é a porta utilizada pelo shh serviço:

grep ssh /etc/services

Saber o número das linhas onde aparece a palavra ssh:

grep -n ssh /etc/services

OBS:
opção -n adicionou os números das linhas onde aparece a palavra ssh.

Verificar quais são os arquivos de configuração no diretório /etc que possuem a palavra ssh:

grep -sl ssh /etc/*

OBS:
Os arquivos que contêm informações referentes ao ssh além dos arquivos que estão contidos no diretório /etc/ssh. A opção -s esconde as mensagens de erro e a opção -l lista os arquivos que contêm a palavra ssh no diretório corrente.

Filtro HEAD – listar as 5 primeiras linhas

head -5 /etc/group

Filtro TAIL – listar as 5 últimas linhas

tail -5 /etc/group

Filtro sort – O comando sort ordena as linhas dos arquivos especificados ou da entrada padrão. Existem diversas opções de classificação:

Ascendente, descendente, por campo do arquivo, etc.

As opções mais usadas são:

-b Ignora espaços em brando.
-d Classifica na ordem do dicionário (somente letras, dígitos e espaços em branco são significativos).
-f Ignora a distinção entre palavras maiúsculas e minúsculas.
-n Classifica em ordem numérica.
-r Reverte a ordem de classificação.

Exemplo ordenar arquivos de um diretório:

ls | sort -f

Os cinco arquivos de log que estão ocupando mais espaço em disco:

ls -s /var/log | sort -nr | head -5

Filtro TR – tr é um comando que substitui ou remove os caracteres selecionados da entrada padrão para a saída padrão.

As opções mais usadas são:

-d Remove os caracteres contidos na expressão um e mostra-os na saída padrão.
-s Substitui cada seqüência de caracteres repetidos na expressão dois por um único caractere.
–help Exibe as informações de ajuda do comando.

Exemplo:

tr a-z A-Z < nomes.txt

ls -l | tr -d [a-zA-Z-.]

Filtro WC – wc é um comando que conta às linhas, palavras e caracteres de arquivos.

As opções mais usadas são:
-c Mostra a contagem de caracteres.
-l Mostra a contagem de linhas.
-w Mostra a contagem de palavras.
-L Mostra o comprimento da linha mais longa.

Exemplo:

wc -l /etc/group

NL – O comando nl exibe os arquivos com linhas numeradas.

As opções mais usadas são:
-w Usa número de colunas por número de linhas.
-s Adiciona um caractere separador.
-i Incrementa o número em cada linha.

nl -s: nomes.txt

Fora estes, tem o uniq e o paste deve ter outros. Mas nunca precisei.

EXPRESSÕES REGULARES – O sed é usado como um comando editor de fluxo, utilizaremos para substituir um padrão por outro e para extrair faixas de linhas de um arquivo.

As opções mais usadas são:
-e Adiciona comandos no script que serão usados no comando que está rodando, enquanto está processando a entrada.
-f Adiciona comandos contidos em um arquivo que serão usados no comando que está rodando, enquanto está processando a entrada.

Endereçamento:
Endereços no sed localizam as linhas no texto que os comandos são aplicados.

Estes endereços podem ser:
O número de uma linha;
O número de uma linha com um intervalo. A forma é n~s, onde n é a linha inicial e s a final;
O símbolo $ indicando a próxima linha da próxima entrada do arquivo;

Uma expressão regular delimitada por barras (/regex/).

As opções mais usadas são:

s Substitui um padrão por outro.
g Substitui todas as ocorrências globalmente.
n Substitui um número determinado de ocorrências.
d Delete

Exemplos:

more /etc/protocols

Não quero que apareçam mais os comentários “#”:

sed ‘/^#/d’ /etc/protocols

GREP – No Linux, os padrões de pesquisa são chamados de expressões regulares. Para pesquisar um arquivo inteiro, isso na época dos primeiros sistemas Unix, o usuário prefixava o comando com global. E, uma vez que uma combinação era descoberta ela era listada na tela com o comando print. Para juntar toda a maçaroca de comandos, a operação indicada era global/regular expression/print. Como vemos a frase era longa e logo os usuários abreviaram para g/re/p e posteriormente acabou se tornando grep.

Existe uma quantidade enorme de opções que podemos usar, entre elas destacam-se:

^ Indica tudo que estiver no início.
$ Indica tudo que estiver no fim.

Vamos listar somente os diretórios do /etc:

ls -l /etc | grep ‘^d’

Saber quantos arquivos .conf existem dentro do diretório /etc:

ls -R /etc | grep -c ‘.conf$’

cat numeros.txt | grep ‘\’ | grep ‘^1’

OBS:

[0-9] – Indica a faixa de caracteres que será pesquisada, ou seja, de 0 a 9.
{1,3} – Indica a quantidade de dígitos que os números devem ter na pesquisa, ou seja, de 1 a 3 dígitos.
^1 – Indica somente os números iniciados com 1.

Saída condicional while loop com instrução break

COMO SAIR DO LOOP WHILE COM A INSTRUÇÃO BREAK?

Você pode sair antecipadamente com a instrução break dentro do loop while. Você pode sair de dentro de um WHILE usando break.

A declaração geral de interrupção dentro do loop while é a seguinte:

while [ condição ]
do
afirmações1 # Executado desde que a condição seja verdadeira
# e/ou até condição-desastre caso exista.
afirmações2
if (condição-desastre)
then
break # Abandone o loop while.
fi
afirmações3 # While bom e sem condição de desastre.
done

NESTE EXEMPLO ABAIXO, A instrução break ignorará o loop while se…
O usuário digitar -1, caso contrário, continuará adicionando dois números:

#!/usr/bin/env bash

while :
do
read -p “Digite dois números ( -1 para sair ) : ” d b
if [ $d -eq -1 ]
then
break
fi
ans=$(( d + b ))
echo $ans
done

# fim do script

CONTINUAÇÃO ANTECIPADA COM A INSTRUÇÃO CONTINUE

Para retomar a próxima iteração do loop WHILE anexo, use a instrução continue da seguinte maneira:

while [ condição ]
do
afirmações1
# Executado desde que a condição seja verdadeira
# e/ou até condição-desastre caso exista.
afirmações2
if (condição)
then
continue # Vá para a próxima iteração de I no loop e pule as instruções3
fi
instruções3
done

Shell do Linux Tipos de loop: Loop While, Loop For, Until Loop.

Instruções de controle usadas para iterar um conjunto de comandos em uma série de dados.

1) Afirmação loop for:

#!/usr/bin/env/bash

# titulo: af_loop_for.sh

for i in 1 2 3 4 5
do
sum=$(expr $sum + $i)
done
echo $sum

# fim do script

OBS:
Este programa adicionará 1 + 2 + 3 + 4 + 5 e o resultado será 15

Resultado:

~:$ af_loop_for.sh
15
~:$

2) afirmação loop while:

#!/usr/bin/env bash

# titulo: af_loop_while.sh

a=1
while [ $a -le 5 ]
do
echo “value of a=” $a
a=`expr $a + 1`
done

# fim do script

Este programa imprimirá o valor de ‘a’ cinco vezes, de 1 a 5.

Resultado:

~:$ af_loop_while.sh
“value of a=” 1
“value of a=” 2
“value of a=” 3
“value of a=” 4
“value of a=” 5
~:$

3) Afirmação loop until

#!/usr/bin/env bash

# titulo: af_loop_until.sh

a=1
until [ $a -ge 3 ]
do
echo “value of a=” $a
a=`expr $a + 1`
done

# fim do script

Este programa imprimirá o valor de ‘a’ duas vezes de 1 a 2.

Resultado:

~:$ af_loop_until.sh
valor de a= 1
valor de a= 2

Ao executar esses loops, pode ser necessário interromper o loop em alguma condição antes de concluir todas as iterações ou reiniciar o loop antes de concluir as instruções restantes. Isso pode ser alcançado com as instruções ‘break’ e ‘continue’.

Exemplo:

#!/usr/bin/env bash

# titulo: while_do_read_if_then_break_fi.sh

num=1
while [ $num -le 5 ]
do
read var
if [ $var -lt 0 ]
then
break
fi
num=$(expr $num + 1)
done
echo “O loop quebra para números negativos”

Resultado:

~:$ while_do_read_if_then_break_fi.sh
3
3
3
3
3
O loop quebra para números negativos

As funções permitem dividir a funcionalidade geral de um script em subseções lógicas menores, que podem ser chamadas para executar suas tarefas individuais quando necessário. O uso de funções para executar tarefas repetitivas é uma excelente maneira de criar a reutilização de código. Essa é uma parte importante dos princípios modernos de programação orientada a objetos. As funções do shell são semelhantes às sub-rotinas, procedimentos e funções em outras linguagens de programação. Criando funções. Para declarar uma função, basta usar a seguinte sintaxe:

nome_da_funcao () {
lista de comandos
}

Exemplo:

#!/usr/bin/env bash

listar () {
ls -lth ~
}

Em uma linha:

listar () { ls -lth ~; }

Resultado (declara depois chama):

~:$ listar () { ls -lth ~/; }
~:$ listar
total 148K
drwxr-xr-x 29 user user 80K mar 21 04:26 bin
drwxr-xr-x 4 user user 4,0K mar 20 16:47 Downloads
drwxr-xr-x 4 user user 4,0K mar 20 08:24 Música
drwxr-xr-x 7 user usert 4,0K mar 19 08:05 Documentos

As funções são as mais fáceis e extremamente úteis para acabar com o tédio das tarefas repetitivas. As possibilidades são muitas.

PODEMOS PASSAR PARÂMETROS A UMA FUNÇÃO

Você pode definir uma função que aceite parâmetros ao chamar a função.
Esses parâmetros seriam representados por $ 1, $ 2 e assim por diante.
A seguir, é apresentado um exemplo em que passamos dois parâmetros:

Bola Gol

Em seguida, capturamos e imprimimos esses parâmetros na função.

#!/usr/bin/env bash

# titulo: funcoes_parametros_bola.sh

# Defina sua função aqui
Hello () {
echo “Hello World $1 $2”
}

# Invoque a função Hello

Hello Bola Gol

# para $1 Bola para $2 Gol

Resultado:

~:$ funcoes_parametros_bola.sh
Hello World Bola Gol

Retornando valor da função – Como outras linguagens de programação, o Bash fornece uma declaração de retorno usando que podemos retornar valor ao chamador. Vamos entender isso com o exemplo:

#!/usr/bin/env bash

function func_retorna_valor () {
return 10
}

Em uma linha:

function func_retorna_valor () { return 10; } ; func_retorna_valor ; echo “O valor retornado pela função é: $?”

Resultado:

~:$ function func_retorna_valor () { return 10; } ; func_retorna_valor ; echo “O valor retornado pela função é: $?”
O valor retornado pela função é: 10

NOTA: No bash, temos que usar $? capturar o valor de retorno da função

RECEITAS DE FUNÇÕES:

Até agora, tivemos uma boa idéia sobre as funções do bash.
Agora vamos criar algumas funções úteis do bash que podem ser usadas para facilitar nossa vida.

Logger

Vamos criar a função de logger que imprimirá data e hora junto com a mensagem de log.

#!/usr/bin/env bash

# titulo: data_hora_log_mensagem.sh

function log_msg () {
echo “[`date ‘+ %F %T’` ]: $@”
}

# fim do script

EXECUTANDO A FUNÇÃO EM UMA LINHA:

function log_msg () { echo “[`date ‘+ %F %T’` ]: $@”; } ; log_msg “Este é um exemplo de mensagem log”

RESULTADO:

~:$ function log_msg () { echo “[`date ‘+ %F %T’` ]: $@”; } ; log_msg “Este é um exemplo de mensagem log”
[ 2020-03-21 05:10:04 ]: Este é um exemplo de mensagem log
~:$

Exibir informações do sistema. Vamos criar uma função para exibir informações sobre o sistema GNU/Linux.

#!/usr/bin/env bash

# titulo: func_info_sistema.sh

function info_sistema () {
echo “### Informação do SO ###”
lsb_release -a

echo
echo “### Informação do processador ###”
processor=`grep -wc “processador” /proc/cpuinfo`
model=`grep -w “Nome do modelo” /proc/cpuinfo | awk -F: ‘{print $2}’`
echo “Processador = $processor”
echo “Modelo = $model”

echo
echo “### Informação da memória ###”
total=`grep -w “MemTotal” /proc/meminfo | awk ‘{print $2}’`
free=`grep -w “MemLivre” /proc/meminfo | awk ‘{print $2}’`
echo “Memória total: $total kB”
echo “Memória livre: $free kB”
}

# chamando a função

info_sistema

# fim do script

Conclusão:

Podemos criar funções com o grande comando find para buscar coisas que sempre precisamos. E podemos usar todos os comandos GNU/Linux.

Parâmetros especiais do Bash explicados com exemplos de shell script

Alguns dos parâmetros especiais do bash são:

$*, $@, $#, $$, $!, $?, $-, $_

Mas antes…
Os parâmetros posicionais começam no parâmetro 0. O parâmetro “$0” refere-se ao nome do programa que iniciou o bash ou ao nome do shell script caso a função esteja sendo executada dentro de um shell script. Consulte as páginas do manual do bash para obter informações sobre outras possibilidades, por exemplo, quando o bash inicia com o parâmetro -c . Uma cadeia de caractere entre aspas simples ou duplas será passada como um único parâmetro e as aspas serão removidas. No caso de aspas duplas, as variáveis de shell como $HOME serão expandidas antes de chamar a função. Será necessário usar aspas simples ou duplas para passar parâmetros que contenham espaços vazios integrados ou outros caracteres que possam ter um significado especial para o shell.

Os parâmetros especiais $* e $@ fora das aspas duplas, essas duas são equivalentes.

“$*” ela será uma única palavra com o primeiro caractere da variável especial IFS separando os parâmetros ou nenhum espaço de intervenção caso IFS seja nula.

“$@” utilize essa forma caso seja provável que seus parâmetros contenham espaços vazios integrados.

“$#” O número de parâmetros, sem incluir o parâmetro 0.

$* e $@ ambas se expandem para a lista de parâmetros posicionais começando com $1 (separados por espaços).

Entre aspas duplas, no entanto, elas diferem:

$* dentro de um par de aspas duplas é equivalente à lista de parâmetros posicionais, separados pelo primeiro caractere do IFS “$1c $2c $3 …”.

$@ dentro de um par de aspas duplas é equivalente à lista de parâmetros posicionais, separados por espaços sem aspas, ou seja, “$1” “$2 ″..”$N”.

PODEMOS USAR BASH $* e $@ para expandir os parâmetros posicionais. Exemplo abaixo:

#!/usr/bin/env bash

export IFS=’-‘

cnt=1

# Imprimir os dados disponíveis em $*

echo “Valores de \”\$*\”:”
for arg in “$*” # olha aí o loop for
do
echo “Arg #$cnt= $arg”
let “cnt+=1”
done

cnt=1

# Imprimir os dados disponíveis em $@

echo “Valores de \”\$@\”:”
for arg in “$@” # olha aí o loop for de novo
do
echo “Arg #$cnt= $arg”
let “cnt+=1”
done

Em seguida, execute o expan.sh como mostrado abaixo para ver como $* e $@ funcionam.

$ ./expan.sh “Este é” 2 3

O SCRIPT ACIMA exportou o valor do IFS (Internal Field Separator) com o ‘-‘.

Existem três parâmetros passados para o script expan.sh $1=”Isto é”, $2=”2″ e $3=”3″.

Ao imprimir cada valor do parâmetro especial “$*”, ele fornece apenas um valor que é todo o parâmetro posicional delimitado pelo IFS.

Use $# para contar parâmetros posicionais. $# é o parâmetro especial no bash que fornece o número do parâmetro posicional em decimal.

Primeiro, crie o arithmetic.sh como mostrado abaixo.

#!/bin/bash

# nome: arithmetic.sh

if [ $# -lt 2 ] # uso do if, then, fi
then
echo “Uso: $0 arg1 arg2”
exit
fi

echo -e “\$1=$1” # uso do echo -e
echo -e “\$2=$2”

let add=$1+$2 # uso do let para calcular $1 e $2
let sub=$1-$2
let mul=$1*$2
let div=$1/$2

echo -e “Adição=$add \nSubtração=$sub \nMultiplicação=$mul \nDivisão=$div \n”

OBS:

Se o número de parâmetros posicionais for menor que 2, ele lançará as informações de uso, como mostrado abaixo.

$ ./arithemetic.sh 10
Uso: ./arithemetic.sh arg1 arg2

Parâmetros relacionados ao processo – $$ e $!

O parâmetro especial $$ fornecerá o ID do processo do shell.

$! fornece o ID do processo em segundo plano executado mais recentemente.

O script a seguir imprime o ID do processo do shell e o último ID do processo de execução em segundo plano.

#!/bin/bash

# nome: proc.sh

echo -e “Processo ID=$$”

sleep 1000 &

echo -e “Processo em Segundo Plano ID=$!”

Agora, execute o script acima e verifique a identificação do processo que está sendo impresso. Exemplo:

~:$ proc.sh
Processo ID=29453
Processo em Segundo Plano ID=29454

Other Bash Special Parameters – $?, $-, $_ / $? Gives the exit status of the most recently executed command. / $- Options set using set builtin command / $_ Gives the last argument to the previous command. At the shell startup, it gives the absolute filename of the shell script being executed. / $ cat others.sh

Outros parâmetros especiais do Bash – $ ?, $ -, $ _

$? Dá o status de saída do comando executado mais recentemente.

$ – Conjunto de opções usando o comando set builtin

$ _ Dá o último argumento ao comando anterior. Na inicialização do shell, fornece o nome do arquivo absoluto do script de shell sendo executado.

#!/bin/bash

# nome: others.sh

echo -e “$_”; ## Nome absoluto do arquivo que está sendo executado

/usr/local/bin/dbhome # execute the command.

# verifique o status de saída de dbhome

if [ “$?” -ne “0” ]; then
echo “Desculpe, a execução do comando falhou !”
fi

echo -e “$-“; # Defina opções – hB

echo -e $_ # Último argumento do comando anterior.

No script acima, a última declaração de eco “echo -e $_” ($ underscore) também imprime hB, que é o valor do último argumento do comando anterior. Então $_ dará o valor após a expansão.

~:$ others.sh
/home/user/bin/others.sh
/home/user/bin/others.sh: linha 7: /usr/local/bin/dbhome: Arquivo ou diretório inexistente
Desculpe, a execução do comando falhou !
hB
hB

Observação: Caso tenha mais de 9 parâmetros, não é possível usar $10 para se referir ao décimo. É necessário primeiramente processar ou salvar o primeiro parâmetro ($1), depois usar o comando shift para eliminar o parâmetro 1 e diminuir a posição de todos os parâmetros restantes para que $10 se torne $9 e assim por diante. O valor de $# será atualizado para refletir o número restante de parâmetros. Na prática, na maioria das vezes, você fará a iteração dos parâmetros para uma função ou shell script ou, ainda, para uma lista criada por substituição de comando usando uma declaração para ; portanto, essa restrição raramente constitui um problema.
Os shell scripts manipulam os parâmetros da mesma maneira que as funções. Na realidade, você frequentemente montará scripts a partir de muitas funções pequenas.

Linux traduz texto no terminal

No Linux tem um programa muito útil chamado translate shell que roda no terminal. Decidi escrever um shell script que use este programa. Um script que armazenasse um bloco de texto e usa-se o programa para traduzir o bloco inteiro. Ai cria-se um alias de 3 letras que chama o script então é só digitar/colar o bloco de texto. Isto não é reinventar a roda, é um exercício basico que ensina muitas coisas em muitos aspectos. Confere o script abaixo:

#!/usr/bin/env bash

###################

# titulo: pt_trans_test.sh
# autor: semanickzaine
# site:
# para: traduzir textos longos
# uso: ./pt_trans_test.sh
# versao: 0.1
# data: 14-03-2020
# obs: este script precisa do programa
# Translate Shell
# alias:
# alias tdr=”~/bin/./pt_trans_test.sh”
# teste exemplo:
#
# ~:$ tdr
# Digite o texto a traduzir: I wrote a simpe bash script to demonstrate the next flag. First take a look at the output.
# Showing translation for: (use -no-auto to disable autocorrect)
# Eu escrevi um script bash simples para demonstrar a próxima flag. Primeiro, dê uma olhada na saída.
# Showing translation for: (use -no-auto to disable autocorrect)
# I wrote a simple bash script to demonstrate the next flag. First take a look at the output.
#
#E o serviço tá feito!

###################
# variaveis: variavel padrão do comando read
###################
# Conhecimento é poder?
# O comando read no Linux é uma maneira de os usuários interagirem com as
# entradas retiradas do teclado, que você pode chamar de stdin (entrada padrão)
# ou outras descrições semelhantes. se você quiser que seu script bash receba
# informações do usuário, será necessário usar o comando read.
# read [options] variable_name
# Comando de leitura sem opções – Quando você digita ler sem nenhuma opção
# adicional, é necessário pressionar Enter para iniciar a captura.
# O sistema capturará a entrada até você pressionar enter novamente.
# Por padrão, essas informações serão armazenadas em uma variável chamada:
# $REPLY
# comando:
# read
# hello world
# echo $REPLY
# hello world
# Prompt option -p
# Se você está escrevendo um script e deseja capturar a entrada do usuário,
# existe uma opção de leitura para criar um prompt que pode simplificar seu
# código. Codificar é tudo sobre eficiência, certo? Em vez de usar linhas
# adicionais e comandos de eco, você pode simplesmente usar o sinalizador de
# opção -p. O texto digitado entre aspas será exibido como pretendido e o
# usuário não precisará pressionar Enter para começar a capturar as entradas.
# Então, em vez de escrever duas linhas de código como esta:
# echo “What is your desired username? ”
# read username
# You can use the -p option with read command like this:
# read -p “What is your desired username? ” username
# The input will be saved to the variable $username.
# —————————— #

read -p “Digite o texto a traduzir: ”
for i in REPLY
do
trans -b :pt+eng “$REPLY”
done
echo -e “\nE o serviço tá feito!\n”

# —————————— #

Automatizar tarefas programando com scripts de shell Linux

Dizem que só se aprende shell script escrevendo shell script. Dizem que só se começa a aprender a usar Linux de verdade, quando para de ficar pulando de uma Distro Linux para outra. Dizem que é mais fácil aprender shell script em uma distro amigável para iniciantes. Creio que isto é correto mas, primeiro antes de tudo, todo mundo devia tentar instalar na unha a Distro Arch Linux, mesmo sendo mal sucedido(a) na instalação do Arch Linux, esta prática afia a mente do usuário Linux. Digo estas coisas por experiência própria.

Os scripts de shell foram projetados para serem executados na linha de comandos em sistemas baseados em UNIX. Eles incluem comandos e instruções para executar tarefas específicas. Os scripts de shell são uma maneira eficaz de criar programas pequenos, mas eficientes, para executar e automatizar tarefas do SO.

A programação no UNIX sempre foi um verdadeiro prazer, pois é realmente amigável ao programador em comparação com outros sistemas operacionais. O tratamento se torna melhor com alguns programas compostos por comandos e instruções, que são usados para automatizar muitas das tarefas neste sistema operacional. Mas há certas condições que precisam ser atendidas para obter algo ótimo.

Nesse caso, há muito software e muitos aplicativos que precisam ser ajustados e otimizados para serem executados no UNIX. Isso, no entanto, torna-se extremamente fácil com scripts de shell. Vamos dar uma breve olhada neste formato de codificação.

Basicamente, um shell script é um programa que inclui diferentes comandos e instruções. Esses comandos e as instruções executam tarefas, uma por uma, quando executadas individualmente.

Existem certas coisas que fazemos, para as quais precisamos escrever comandos com muita frequência. Isso é realmente demorado; portanto, escrevemos um programa para executar coletivamente esses comandos e automatizar tarefas.

Outra coisa importante sobre esses programas é que, diferentemente de outros, eles não são compilados, mas interpretados. Isso significa que, ao executar o programa, um shell filho é criado. Todas as operações são executadas nesse shell e esse shell filho termina automaticamente após a conclusão de todas as tarefas no programa.

Para personalizar um script de shell, primeiro precisamos criá-lo da seguinte forma: Para armazenar um programa de texto, precisamos criar um arquivo de texto, Escolha um shell para escrever o script, adicione os comandos necessários ao arquivo, Salve o arquivo, Altere suas permissões para tornar o arquivo executável, execute o programa shell.

Para padronização e portabilidade, usamos o shell Bourne (sh). Para uma personalização adicional, existem diferentes tipos de comandos que abordam quase todos os aspectos do script personalizado. Esses são comandos do sistema de arquivos executáveis do programa, aliases do Linux, funções shell do Linux, palavras reservadas do shell do Linux e comandos internos.

Aqui estão alguns pontos a serem considerados ao escrever um script de shell:

Escreva comentários no código sempre que necessário. Isso ajuda outras pessoas também a entender o mecanismo de trabalho do código com muito mais facilidade. Sair do script assim que houver algum erro nele, pois mesmo o menor erro pode causar danos ao seu sistema. USE AS FUNÇÕES QUE VOCÊ PODE ESCREVER SOZINHO NO SCRIPT, pois é muito mais fácil chamá-lo e depurá-lo. É RECOMENDÁVEL USAR O SINAL $, NO LUGAR DE ASPAS SIMPLES (”), pois nos ajuda a diferenciar entre o processo de substituição e a declaração de comandos.

Dicas e truques da linha de comando?

1) Comando Histórico: Isso nos ajuda a verificar o histórico antigo de quase todos os comandos disparados pelo usuário desde o início.
2) Múltiplos comandos em uma única linha: podemos escrever vários comandos em uma única linha inserindo o operador terminador ‘;’ ou o operador AND ‘&&’ após cada comando e, portanto, executar várias linhas por vez.
3) Ler log: usando o comando ‘tail’, podemos ler os logs de qualquer arquivo em tempo real.
4) Ler arquivos Zip: o comando ‘z’ nos ajuda a ler também arquivos Zip de todos os formatos, mesmo sem extrair os dados reais.
Comandos Alias e Grep: estes são comandos básicos do Linux/UNIX que podem ajudar a ler e editar arquivos e sintaxes facilmente.

As vantagens? Uma característica especial é que o usuário pode executar facilmente vários comandos juntos em um único comando de linha. Os comandos são fáceis de escrever e executar e são usados bem em muitos sistemas automatizados. Operações executadas anteriormente também podem ser rebobinadas e as funções e comandos podem ser executados automaticamente. Suporta quase todos os sistemas que possuem uma arquitetura baseada em UNIX e, portanto, são portáteis de um sistema para outro.

Por exemplo, converter de ogg para mp3. Como fazer isto em um shell script para conveter todos os arquivos .ogg de uma pasta?

Nestes casos de conversão a opção mais fácil e usada, pode procurar por aí, é loop for.

Escrever vários pequenos scripts bobos usando o loop for é um ótimo exercício para aprender a automatizar algumas tarefas no Linux. Com o loop for podemos até criar nossos próprios comandos.

Tento este bash schell script abaixo para exercitar o uso do loop for:

#!/usr/bin/env bash

##################

# titulo: conv_ogg_para_mp3.sh
# uso: ./conv_ogg_para_mp3.sh

##################

clear

# ————– #

echo -e ‘\nRemover metadata dos arquivos .ogg primeiro\n’
sleep 2

# ————– #

echo -e “Removendo metadata…”
sleep 2

# ————– #

# loop for remove metadata
# tenha exiftool instalado

for i in *.ogg; do
exiftool -all= -overwrite_original -ext “$i” .
done

sleep 2
# ————– #

echo -e “\nConvertendo de ogg para mp3…\n”
sleep 3

# ————– #

# loop for converte ogg para mp3
# tenha ffmpeg instalado

for i in *.ogg ; do
ffmpeg -i “$i” -acodec libmp3lame “$(basename “${i/.ogg}”).mp3″
sleep 30
done

# ————– #

echo -e “\nListando arquivos…\n”
sleep 2

# ————– #

ls -tlA
sleep 2

# ————– #

# loop for para conferir metadata mp3

for i in *.mp3; do
exiftool “$i”
done

sleep 2

# ————– #

# loop for para listar mp3 em um arquivo txt

for i in *.mp3; do
ls -t “$i” > lista_mp3_1.txt
done

# ————– #

# loop for para listar ogg em um arquivo txt

for i in *.ogg; do
ls -t “$i” >> lista_ogg_2.txt
done

# ————– #

# loop for remove todos *.ogg do diretorio

echo “————————”
sleep 1
echo “————————”
sleep 1
echo “————————”
sleep 2
echo -e “\n#— revomendo ogg para cancelar tecle [Ctrl+C] —#\n”
sleep 3
echo -e “\n— revomendo em 3 —\n”
sleep 2
echo -e “\n— revomendo em 2 —\n”
sleep 2
echo -e “\n— revomendo em 1 —\n”
sleep 2

for i in *.ogg; do
rm -f “$i”
done

echo -e ‘\nPronto! Comando executado.\n\nTudo resolvido!\n’
sleep 2

# Loop for lista arquivos mp3 do diretorio

for i in *.mp3; do
ls -lth “$i”
done

# fim do shell script

Conclusão:

E por que não tentar usar/melhorar este script acima para fazer o contrário? Usar para converter de mp3 para ogg? Seria um bom exercício. Existe muito arquivo de áudio gratúito legalmente falando, novos artistas que querem divulgar sua arte por exemplo.

Até Breve!

🙂

Dicas e sugestões são bem-vindas!

O comando apt no Linux pelo terminal usa Bash?

Usar o comando apt no Debian e derivados pelo terminal do Linux? O terminal de um sistema operacional linux é um emulador de terminal. O que faz o terminal do linux funcionar é o Bash, no Bash executamos comandos linux. Quase sempre é assim. Mas às vezes não.
---
Uma coisa importante a ser dominada no Linux System / Server Administration é o gerenciamento de pacotes usando diferentes ferramentas de gerenciamento de pacotes.
---
Diferentes distribuições Linux instalam aplicativos em um pacote pré-compilado que contém arquivos binários, arquivos de configuração e também informações sobre as dependências do aplicativo.
---
As ferramentas de gerenciamento de pacotes ajudam Administradores de Sistema / Servidor de várias maneiras, como baixar e instalar software, compilar software da origem, acompanhar todos os softwares instalados, atualizações e atualizações, lidar com dependências e também manter outras informações sobre softwares instalados e muito mais.
---
É uma ferramenta baseada em linha de comando que é usada para lidar com pacotes em sistemas Linux baseados em Debian. Ele apresenta uma interface de linha de comando para o gerenciamento de pacotes em seu sistema.
---
A fórmula é mais ou menos assim:
sudo apt comando nome-do-pacote-de-software
---
Para instalar:
sudo apt install nome-do-pacote-de-software
---
Para buscar:
sudo apt search leafpad
---
Para ver dependências:
sudo apt depends leafpad
---
Para obter informação:
sudo apt show leafpad
---
Verificar por dependências quebradas em um pacote:
sudo apt install apt-rdepends
sudo apt-rdepends firefox
---
Atualizar o sistema inteiro:
sudo apt update && sudo apt full-upgrade
---
Instalar pacotes .deb:
sudo dpkg -i nomedopacote.deb
---
Remover pacotes de software:
sudo apt update ; sudo apt remove leafpad ; sudo apt autoremove ; sudo apt install -f ; sudo apt update

####

Resumão:
update - Adquire novas listas de pacotes
upgrade - Faz uma atualização
install - Instala novos pacotes
remove - Remove um pacote
source - Faz o download de arquivos fonte
build-dep - Configura as dependências de compilação de pacotes fonte
dist-upgrade - Atualiza a distribuição, consulte
dselect-upgrade - Segue as seleções do dselect
clean - Apaga arquivos baixados para instalação
autoclean - Apaga arquivos antigos baixados para instalação
check - Verifica se não há dependências quebradas (apt-get)


Opções:
-h Esse texto de ajuda
-q Saída logável, exceto para erros
-qq Sem saída, exceto para erros
-d Fazer o download apenas - NÃO instalar ou desempacotar arquivos
-s Não-agir. Executar simulação de ordenação
-y Assumir Sim para todas as perguntas, não pedir confirmação
-f Tenta continuar se a checagem de integridade falhar
-m Tenta continuar se os arquivos não podem ser localizados
-u Mostra uma lista de pacotes atualizados também
-b Constrói o pacote fonte depois de baixá-lo
-c=? Ler esse arquivo de configuração
-o=? Definir uma opção de configuração arbitrária,


###

Linux grep básico exemplos

semanickz

Linux uso básico do grep


O grep serve para procurar conteúdo em uma string de texto. Para aprender isto é criar um arquivo com strings de texto. Vamos fazer isto agora criando o arquivo texto-do-grep.txt com os comandos abaixo:


1. cd

2. cd ~/Documentos/

3. pwd

4. ls -ltC

5. mkdir EstudoLinux/ ; ls -ltC

6. cd EstudoLinux/

7. pwd

8. date

9. whoami

10. whatis grep


11. echo -e '\nLinux uso básico do grep \nLinux\nLinux e o mundo GNU. \nO GNU é parte do Linux\nAna \nANA \nAnA \nAno \nANO \nAnO \nAni \nbeeg \nboog \n# Comentário \nLuag \nluag \nSemanickz \nsemanickz \nSemanickzaine \nsemanickzaine \nbola \nSEMANICKZAINE \nSEMANICKZ \nbolo \nbole \nzazs \nzezs \nzizs \nzozs \nacunda \naconda \n# start Linux.\nleia \nleio \nleitor \nblog \nbleg \nblig \nboot \nBoot \n# comment\nTexto \ntexto \nTeeexto \nFim \nfom \nfunal do texto.\n# fim #\n' > texto-do-grep.txt


12. ls -AC

13. cat texto-do-grep.txt

14. clear


Agora já podemos começar!

Neste estudo, sempre antes de procurar uma string abro e ajeito na tela tres terminais. Todos eles abertos onde está o arquivo texto-do-grep.txt em um deles, uso o comando:

cat texto-do-grep.txt
---

Vejo o conteúdo e crio uma busca de string com o grep no outro terminal.

---

No segundo terminal, digito o comando:

man grep | less

E quando tiver alguma dúvida, uso as setas para cima e para baixo e dou uma olhada no manual de uso do grep. No final do extudo, para siar do comando executado, uso duas teclas. Aperto as teclas Ctrl+c e para fechar o terminal digito o comando exit.

---

No terceiro terminal, executo os comandos de busca usando o grep.

---

Linux Bash comando grep alguns poucos Exemplos para executar no terminal e ler com bastante atenção as saídas destes comandos para entender o que o comando fez, filtrou, incluiu, omitiu, etc:

---

grep semanickz texto-do-grep.txt
grep semanick* texto-do-grep*
grep start texto-do-grep.txt
grep "funal do texto" texto-do-grep.txt
grep -i semanickzaine texto-do-grep.txt
grep -i ana texto-do-grep.txt
grep -c semanickzaine texto-do-grep.txt
grep -ic semanickzaine texto-do-grep.txt
grep -v Ana texto-do-grep.txt
grep -iv Ana texto-do-grep.txt
grep -v Semanickzaine texto-do-grep.txt
grep -iv semanickzaine texto-do-grep.txt
grep Ana *
grep semanickzaine *

---

Procurando recursivamente por Ana em todos os diretórios existentes neste diretório em questão:

grep -r Ana *
grep -lr Ana *

---

Em que arquivo deste diretório está Ana?

grep -l Ana *

---

Usando a ferramenta grep junto com comando cat graças ao pipe. Execute os comandos abaixo:

clear
cat texto-do-grep.txt | grep acunda
clear
cat texto-do-grep.txt | grep -iv Ana

---

OBS:
Para usar comandos Linux o melhor é sempre obter o que precisa digitando o menos possível, mas em certos casos pode ser necessário digitar mais um pouco. Por isto, o Linux oferece ao usuário a criação de aliases. Aqui tem posts sobre como criar aliases. Aqui tem até listas de aliases que podem ser usados ou não por você. É só buscar aqui no blog.

---

Continuando...

---

O sinal -A significa after (depois). -A4 mostra 4 linhas depois da palavra indicada no comando. O sinal -B faz o oposto. Exemplo:

clear

grep -A4 beeg texto-do-grep.txt

grep -B4 beeg texto-do-grep.txt

---

Resultado:

EstudoLinux$ grep -A4
beeg texto-do-grep.txt
beeg
boog
# Comentário
Luag
luag

---

O comando acima é usado para analisar logs. Agora você pode saber o que vem antes e depois de uma string usando o grep.

---

OBS:
O fgrep não usa expressões regulares. O grep e o egrep usam. O melhor para expressões regulares neste momento, até ontem, é o egrep.

---

Tem muito mais a saber, mas isto aqui já dá para fazer bastante coisa e além disto, é um bom começo.


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! 🙂
---

Linux whatch exemplos

Linux comando whatch com exemplos


---
Comando watch do Linux - o utilitário watch permite executar um comando repetidamente. A seguir está a sintaxe deste comando:
---
watch [options] command
---
watch executa o comando repetidamente, exibindo sua saída e erros (a primeira tela cheia).
---
Isso permite que você observe a saída do programa mudar ao longo do tempo.
---
Por padrão, o programa é executado a cada 2 segundos. Por padrão, o relógio será executado até ser interrompido. Para interromper aperto duas teclas, as teclas Ctrl+c. A seguir estão alguns exemplos estilizados que devem dar uma boa idéia de como o comando watch funciona.
---
Como funciona o comando watch? O uso básico do watch é muito fácil - tudo o que você precisa fazer é executar a ferramenta com um nome de comando como entrada. Por exemplo:
watch date
---
Como funciona o comando watch? A primeira linha da saída informa que a saída do comando 'date' está sendo atualizada a cada 2 segundos (esse é o intervalo de tempo padrão), seguida pela data / hora atual do sistema. A segunda linha é a saída real do comando 'date' que é atualizada após alguns segundos.
---
Como fazer o relógio destacar a diferença entre as atualizações? Como já explicado na seção anterior, a saída do comando que está sendo rastreado é atualizada regularmente (após 2 segundos, por padrão). Caso você queira, você também pode fazer 'assistir' destacar a parte da saída que está mudando entre as atualizações. Isso você pode fazer usando a opção de linha de comando -d. Por exemplo:
watch -d date
---
Como já explicado, a saída do comando que está sendo rastreado é atualizada regularmente (após 2 segundos, por padrão). Caso você queira, você também pode fazer 'assistir' destacar a parte da saída que está mudando entre as atualizações. Isso você pode fazer usando a opção de linha de comando -d. Por exemplo:
watch -n 5 date
---
Este comando garantirá que a saída seja atualizada a cada 5 segundos. Por favor, note que intervalos inferiores a 0,1 segundos não são permitidos. Nota: Para garantir que o intervalo entre intervalos seja respeitado com muita precisão, use a opção de linha de comando -p.
---
Faça o watch tentar executar o comando a cada intervalo de segundos. Experimente com ntptime e observe como os segundos fracionários ficam quase) o mesmo, ao contrário do modo normal, onde eles aumentam continuamente.
---
Como desligar o cabeçalho na saída? Se desejar, você também pode pedir 'watch' para desativar o cabeçalho, mostrando o intervalo, o comando e a hora atual na parte superior da tela, bem como a seguinte linha em branco. Isso pode ser feito usando a opção de linha de comando -t. Por exemplo:
watch -t date
---
Como fazer o relógio sair quando a saída muda? Se você quiser que o comando 'watch' seja encerrado após a detecção de uma alteração na saída, use a opção de linha de comando -g. Por exemplo:
watch -g free
---
Assim, sempre que o consumo de memória no sistema for alterado, o comando watch será encerrado.
---
Para saber mais visite:
fonte
---
Até breve! 🙂
---

Linux configure o MAME


Linux configure o MAME


Olha, não é só instalar e jogar. É fácil instalar o MAME. Hoje em dia uma criança de 5 anos instala o MAME no Linux. Hoje em dia uma criança de 5 anos pode invadir seu computador também. Eu disse a uns esquisitos tira-onda-de-esperto anos atrás que um dia isto ia acontecer, eles iam se ferrar e eu ia ficar quieto no meu canto rindo da arrogância deles enquanto a casa caia.

Mas voltando ao assunto, o MAME é apenas um emulador. Não é um jogo por si só. O que ele faz é fingir ser o hardware que os jogos arcade originalmente usavam. O MAME precisa da informação original do jogo, conhecida como imagem ROM.

Para recuperar a imagem da ROM, você precisa copiar as informações do jogo original e colocar essas informações em um computador. Aí então você pode começar a descobrir como o jogo é codificado e programar o MAME, que é apenas um outro programa de emulação, para trabalhar com o código do jogo na imagem da ROM.

Saiba que em um sentido puro, uma imagem da ROM para um jogo deveria funcionar com todos os emuladores codificados para suportar esse jogo. Porém não é verdade.

Isso não é verdade no mundo real.

O nome do arquivo da imagem da ROM pode ser diferente entre os emuladores, mesmo que a informação seja a mesma. Alguns emuladores também aceitam alguns atalhos para improvisar as coisas também. Isso significa que a ROM pode ou não precisar de informações adicionais para funcionar corretamente em um determinado emulador.

MAME: Multiple Arcade Machine Emulator.

Como configurar o MAME? É isso que a maioria das pessoas quer.

Muito site posta como instalar e poucos ensinam como configurar o MAME aqui no Brasil porque?

Acho que é talvez por motivos legais e principalmente por razões financeiras. Existem emuladores que se vendem e cobram dinheiro para fazer a mesma coisa que o MAME faz de grátis. Ou não.

Tem pessoas que tiram seu sustento de sites voltados para serviços ligados ao Linux, RedHat, Microsoft,Google, Udemy, cursos online feitos em casa, no quarto, banheiro Etc... Ou não. Talvez não.

Mas não me engano, no final, todos acabamos trabalhando para eles, querendo ou não, eu admito.

Não sei. Posso estar errado. Todo mundo é tão legal e tão gente boa se o usuário tem dinheiro no lugar certo na hora certa em ambientes controlados. Mas o assunto aqui é configurar o MAME! Para configurar o MAME como é mesmo?

Afinal o que é um gabinete de arcade com jogos de arcade certo?

MAME é um dos emuladores mais fáceis de configurar e pode ser o mais difícil de acertar. É o mais difícil de acertar a configuração correta.

O MAME é muito personalizável e pode ser ajustado até o último detalhe.

Se você não tem idéia do que estou falando, acesse veja a fonte no fim do post

---

Isto aqui que você está lendo, é escrito para MAME básico e algum conhecimento da linha de comando é necessário.

A maioria dos front-ends usa a versão de linha de comando do MAME assim eles agem como uma gui (interface gráfica do usuário).

Quando você iniciar o MAME, você receberá um erro informando que nenhum jogo foi encontrado.

Vá em frente abre o MAME e feche o MAME.

Se você já tentou isto feche o MAME e vamos a luta.

---

Depois de encontrar jogos ou roms, coloque-os em seu diretório/pasta 'roms'.

Se você não tem um, você pode fazer um.

(Normalmente no seu diretório/pasta mame para manter tudo organizado.)

---

Pode ser que talvez no endereço abaixo encontre umas ROMs de teste:

veja a fonte no fim do post

---

Para começar: Quando você começar a mame, você receberá um erro informando que nenhum jogo foi encontrado. Vá em frente e saia. Depois de encontrar jogos ou roms, coloque-os no diretório 'roms'. Se você não tem um, você pode fazer um. (Normalmente, na pasta /home/usuwarrior/.mame/ para manter tudo organizado.) Agora você precisa abrir um terminal. Pressione Alt + F2 no terminal tipo caixa pop-up (será muito por distro). Uma vez lá, digite:

cd .mame

mame -cc

---

Isto criará um arquivo mame.ini na pasta em que você está. Isto criará um arquivo mame.ini na pasta em que você está. (Você sempre pode executar o comando mame -cc novamente e ter um novo mame.ini Se você estragar tudo muito mal. Seu mame.ini será algo parecido com isto:

#
# CORE CONFIGURATION OPTIONS
#
readconfig 1
writeconfig 0

#
# CORE SEARCH PATH OPTIONS
#
rompath <-AQUI!
hashpath
samplepath
artpath
ctrlrpath
inipath
fontpath
cheatpath
crosshairpath

---

OBS:

Não apagar a linha que tem a palavra rompath.

---

O rompath (barulho) é a única coisa que preocupa agora. Você pode apagar todas as linhas até, mas não a linha que tem a palavra rompath.

---

Então digite:

$HOME/.mame/roms

---

Agora salve as alterações agora digite seu terminal mame e inicie-o.

Você deve ver uma caixa azul com uma lista de jogos que você tem.

Você pode pressionar enter para iniciar um jogo ou pressionar esc para sair.

Sua mame agora funciona!

Você pode iniciar um jogo em um terminal e iniciar um jogo diretamente digitando o nome do jogo mame. Exemplo:

mame odumorr

---

Em um terminal, será iniciado o odumorr sem o gamelist (que é como os front ends, como o modo de atração, funcionam). Rom problemas: Primeiro nunca descompacte uma rom a menos que você saiba o que está fazendo! MAME não pode carregar uma rom descompactada. Roms podem ser obtidos cantando ou em pacotes de atualização. Você precisa ter todos os arquivos necessários no zip e todos os arquivos zip necessários.

Exemplo: você tem galaga.zip, mas existem outros arquivos necessários (arquivos .zip) para iniciar. Por que não apenas colocá-los todos juntos? Bem, você pode e mame vai ser feliz e carregar bem. No entanto, alguns desses arquivos estão em outros jogos da Namco (por exemplo, mappy, rally X, ect.) Então agora você os tem duas vezes, ou mais, e é um desperdício de espaço.

Carregar a partir de um terminal emitirá erros de arquivos ausentes e informará os roms extras de que você precisa. Para mais informações quiçá você encontra em:

xente1

xente2

---

Arquivos chd:

Disco rígido compactado (ou pedaços comprimidos [de] dados ... dependendo de com que você está falando.)

São arquivos de dados grandes (alguns são ENORMES).

Principalmente esta é uma imagem do disco rígido (ex. 'Instinto assassino') ou um CD-ROM (ex. 'Street fighter III') ou um disco laser (ex 'cliffhanger').

Estes precisam ser colocados em uma subpasta na sua pasta roms com o nome da rom. (por exemplo, /.mame/roms/kinst/)

---

Sons perdidos: Com alguns jogos mais antigos, você precisa do que chamamos de amostras de som. Estes não são sons emulados por palavra, mas arquivos de som raw chamados pelo mame no momento apropriado.

"Sem eles você não ouve os sons do jogo. Jogar galaga sem samples de som quando você morre sua nave explode sem som. Quem é que vai querer isto!?

Então, depois de encontrar as amostras de som, coloque-as em sua pasta (por exemplo, .mame / samples) e, em seu mame.ini, altere seu caminho samplepath:

#
# CORE SEARCH PATH OPTIONS
#
rompath $HOME/.mame/roms
hashpath
samplepath <---AQUI!
artpath
ctrlrpath
inipath

---

Apague tudo que estiver na frente do que diz samplepath e digite:

$HOME/.mame/samples

---

Agora salve as novas alterações. Agora, quando você corre um jogo como galaga, você terá todos os seus sons Por que é uma tela minúscula! Para ir em tela cheia, procure em seu mame.ini por:

#
# VIDEO OPTIONS
#
video opengl
numscreens 1
window 0
maximize 1
keepaspect <---AQUI!
unevenstretch <---AQUI!
centerh 1
centerv 1
waitvsync 0
syncrefresh 0
scalemode none

---

Alterar manter aspecto e alongamento irregular de um zero (0) para um (1). Espero que você comece bem com estas noções básicas de MAME.

Jogue feliz! Se diverte!

---

fonte

---

Até Breve! Entre em contato. Faça doações. Doe o que puder. Faça o que puder. Comentários, correções, críticas construtivas são sempre muito bem-vindas! Fale comigo se quiser e eu falo com você!

shell script REGEX e File Globbing

Linux shell script REGEX e File Globbing

---

Alguns comandos para usar no linux:

cd
cd ~
cd ..
cd ../../
cd -
cd ~/Documentos/
cd ~/Vídeos/Legendas/Niver-Legendas/

pwd

clear

ls
ls -ltr
ls -ltC
ls -1

ps
ps axu
ps axu | more

touch nome-do-arquivo-a-ser-criado
touch arquivo-existente-atualiza-o-horário

man touch

echo palavra-a-ser-ecoada
echo 'palavra a ser ecoada'
echo -e '\nAcima \n\tNo meio \nAbaixo\n'
echo -e "\ncoluna1\tcoluna2\tcoluna3\t\n"
man echo

mkdir nome-do-diretório
mkdir -p nome-do-diretório/nome-do-sub-diretório/

rm -f nome-do-arquivo
rm -r nome-do-diretório

cp nome-do-arquivo-original nome-da-cópia-do-arquivo-original

cp -r nome-do-diretório-original nome-da-cópia-do-diretório-original

mv nome-do-arquivo-original novo-nome-para-o-arquivo

sleep 10

cat nome-do-arquivo
cat -b nome-do-arquivo
cat -A nome-do-arquivo

tac nome-do-arquivo

tail nome-do-arquivo
tail -n3 nome-do-arquivo

head nome-do-arquivo
head -n1 nome-do-arquivo
head -c8 nome-do-arquivo

wc nome-do-arquivo
wc -l nome-do-arquivo
wc -c nome-do-arquivo
wc -m nome-do-arquivo
wc nome-do-arquivo*

tail -n5 nome-do-arquivo | wc -w

sort nome-do-arquivo
sort -r nome-do-arquivo
sort -k2 nome-do-arquivo

tail /etc/passwd
tail /etc/passwd | sort -k3 -t ":" -g

uniq nome-do-arquivo
sort nome-do-arquivo | uniq
sort nome-do-arquivo | uniq -u
sort nome-do-arquivo | uniq -d
sort nome-do-arquivo | uniq -c

sort nome-do-arquivo | uniq -c | sort
sort nome-do-arquivo | uniq -c | sort -r
sort nome-do-arquivo | uniq -c | sort -r | head -n1

---

Funcionamento do Linux:

hardware > kernel > shell > usuário

---

O shell interpreta o script.

---

O shell padrão no linux é o bash. Ele é melhoria do shell sh e incorpora csh e ksh.

O shell csh traz recursos da linguagem C é diferentes e faz coisas que os outros não fazem.

---

echo $0
echo $SHELL
tail /etc/passwd

---

Uso de aspas:

caracteres especiais.

* / $ ``

As `` fazem um sub-comando dentro do shell.

---

Aspas protegem.

echo *

echo "*"

aspas duplas protegem o caractere.

Pode usar apóstrofos para proteger.

echo '*'

Mas aspas simples se comportam diferente de aspas duplas.

A barra invertida protegeo caractere seguinte. O shell não interpreta o caractere.

echo \*

ls "aluno*"

ls 'aluno*'

ls aluno\*

---

Aspas duplas não protegem cifrão, crase e a barra normal:

$ ` /

---

Quando temos variável cifrão ele estará buscando uma variável.

---

Aspas simples (apóstrofo) protegem tudo. 3 Exemplos:

1) echo $SHELL

2) echo "$SHELL"

3) echo 'SHELL'

---

Todos tem utilidade depende do caso. As aspas duplas são mais usadas.

---

Exemplo de barra invertida:

echo '5espaços 5espaços 5espaços'

echo 5espaços\ \ \ \ \ \5espaços 5espaços

---

Abro o editor de texto Gedit ou nano.

---

Expressões regulares:

File Globbing é diferente de Regex.

File Globbing: Forma do bash de selecionar arquivos de diretórios. Usa carcteres especiais para selecionar arquivos de diretórios.

---

Exemplo de File Globbing:

touch Aula1.txt Aula2.txt Aula3.txt Aula4.txt Aula5.txt aula6.txt

---

OBS:
Note que todos os arquivos começam com maiúsculas menos aula6.txt

---

ls Aula*

ls Aula2*

ls -la Aula[1234]*

ls -la Aula[1-5]*

ls -la Aula[1-6]*

ls -la [Aa]ula[1-6]*

ls -la [Aa]ula[156]*

ls -la *[12]*

ls {Aula,aula}[16]*

ls {Aula,aula}[16].txt

ls -l *5*

ls -l *5.txt

ls -l {Aula,aula}4*

ls -l {Aula,aula}4.txt

---

OBS File Globbing:

Os colchetes [] fazem listas e as chaves {} escolho as strings que me interessam.

---

Mais exemplos File Globbing:

ls -la Aula2*

ls -la Aula2?

ls -la Aula2????

---

File Globbing funciona com quase todos os comandos GNU/Linux.

---

Regex: Expressão regular. Usa caracteres para selecionar um padrão de texto. É para seleção de texto.

---

Usando o Regex:

---

Exemplos comando:

--

echo -e '\nEste texto vai para Aula1.txt.\n\nEle contém algumas palavras:\n\nCada, Cardo, Arame, Arca, Bote, boca, vira, Voa, Dura, dedo, Elfo, eifel, fardo, Fargo, guia, Guria, hostel, Hostil, Juno, jim, Inca, indo, Karma, kraken, Lele, lili, Mosca, mouse \nNunca \n \n# Um comentário \n \nnever\nOpera \nopus \nbaiog \nbeirag \nbicag \nquerer \nQueijo \nLeva \nLinux \nlinux \nLinuxDistro \nHostel \nhostel \nLinux \nlinux \nSistema operacional Linux \nGNU \ngnu \nGNULinux \ngnulinux \n' > Aula1.txt

---

Comandos para imprimir o texto no terminal:

cat Aula1.txt
cat Aula1*

---

Usar grep ou egrep ou grep -e.

---

Para aparecer colorido criam um alias para o egrep pode ser em ~/.bashrc (muitos .bashrc já vem com esta opção):

#
alias egrep='egrep --color=auto'
#

---

OBS:
Abro o terminal onde está o arquivo Aula1.txt e executo:

egrep "[Hh]ostel" Aula1.txt

---

Resultado do comando acima:

$ egrep "[Hh]ostel" Aula1.txt
Cada, Cardo, Arame, Arca, Bote, boca, vira, Voa, Dura, dedo, Elfo, eifel, fardo, Fargo, guia, Guria, hostel, Hostil, Juno, jim, Inca, indo, Karma, kraken, Lele, lili, Mosca, mouse
Hostel
hostel

---

Executo os REGEX abaixo:

egrep [Gg]NULinux Aula1*

egrep [GgNnUu][Ll]inux Aula1*

---

Resultados da execução do REGEX:

$ egrep [Gg]NULinux Aula1*
GNULinux

$ egrep [GgNnUu][Ll]inux Aula1*
GNULinux
gnulinux

---

Executo o REGEX "b[a]*" com File Globbing (Aula1*):

egrep "b[a]*" Aula1*

---

Resultado do REGEX com File Globbing:

$ egrep "b[a]*" Aula1*
Cada, Cardo, Arame, Arca, Bote, boca, vira, Voa, Dura, dedo, Elfo, eifel, fardo, Fargo, guia, Guria, hostel, Hostil, Juno, jim, Inca, indo, Karma, kraken, Lele, lili, Mosca, mouse
baiog
beirag
bicag

---

O REGEX trabalha com o texto ou com as strings que estão escritas dentro de um arquivo. O File Globbing trabalha por fora do arquivo ou diretório, ajudando a localizar. Por exemplo Aula1*.

---

Comando REGEX:

egrep "b[a-i]*" Aula1*

---

Resultado:

$ egrep "b[a-i]*" Aula1*
Cada, Cardo, Arame, Arca, Bote, boca, vira, Voa, Dura, dedo, Elfo, eifel, fardo, Fargo, guia, Guria, hostel, Hostil, Juno, jim, Inca, indo, Karma, kraken, Lele, lili, Mosca, mouse
baiog
beirag
bicag

---

Comando REGEX:

egrep "^Linux" Aula1.txt

---

Resultado do comando REGEX:

$ egrep "^Linux" Aula1.txt
Linux
LinuxDistro
Linux

---

Comando REGEX:

egrep -v "^[Ll]inux" Aula1.txt

---

Resultado do comando REGEX:

$ egrep -v "^[Ll]inux" Aula1.txt
Este texto vai para Aula1.txt.
Ele contém algumas palavras:
Cada, Cardo, Arame, Arca, Bote, boca, vira, Voa, Dura, dedo, Elfo, eifel, fardo, Fargo, guia, Guria, hostel, Hostil, Juno, jim, Inca, indo, Karma, kraken, Lele, lili, Mosca, mouse
Nunca
# Um comentário
never
Opera
opus
baiog
beirag
bicag
querer
Queijo
Leva
Hostel
hostel
Sistema operacional Linux
GNU
gnu
GNULinux
gnulinux

---

Comando REGEX:

egrep "Linux" Aula1.txt

---

Resultado:

$ egrep "Linux" Aula1.txt
Linux
LinuxDistro
Linux
Sistema operacional Linux
GNULinux

---

REGEX para linhas em branco:

egrep "^$" Aula1*

egrep -v "^$" Aula1*

---

OBS:
No uso de caracteres especiais há diferenças entre REGEX e File Globbing

---

Asterisco *

Comando exemplos REGEX asterisco:

egrep "A[a-r]*" Aula1*
egrep "A[a-r]e*" Aula1*

---

OBS:
e* Pode não existir ou pode exitir uma ou várias vezes.

---

Para por aqui hoje. Sabe, aqui no Brasil a crise tá braba mesmo!

A gente paga para aprender qualquer coisa na internet.

Paga para aprender a digitar, paga para saber shell script, para para saber File Globbing e para caro para aprender REGEX e eu também pago.

Mas não cobro nada para transmitir o conhecimento meu, que foi adquirido por mim através do meu estudo e esforço pessoal.

Existem bloqueios para conteúdo gratúito oferecido por outros sites em outros países, em universidades gratúitas do exterior que você poderia aprender tudo de graça se souber estudar estas coisas em inglês. Mas se você está no Brasil tudo passa por um filtro e quem quer aprender é rastreado e muitas vezes corre o risco de ser hackeado. Não por estrangeiros, mas talvez pelos nossos irmãos brasileiros que precisam sobreviver. Talvez. Ou não. Ou não.

---

Até Breve!

---

:)

---



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)!


Anotação VIM atualizada (2019)


Anotação VIM atualizada

---

  • Eu acho que se por acaso você aprender todas estas coisas deste post, você se tornará um Ninja do VIM! Eu tô na faixa branca tá sabendo?

    ---

    EDITOR de TEXTO VIM - COMANDOS E EXEMPLOS

    ---

  • Depois de iniciar o vim, pressione F1 ou use :h no modo ex para inserir a ajuda on-line.
  • Você pode ir para uma seção ou tópico específico colocando o cursor sobre ele e, em seguida, pressionando Ctrl+] (Ctrl e, em seguida, o colchete de fechamento).
  • Depois de terminar, pressione Ctrl+t para retornar à tela anterior.

- Alternativamente, você pode procurar um assunto ou comando específico com :h .

Por exemplo:

:h x

---

  • Os dois modos principais do Vim são: Modo de Comandos (Esc) e Modo de Inserção (i).

---

  • O primeiro modo, é voltado para comandos e inicia por padrão junto com o vim. As teclas estão configuradas para servirem de atalhos a operações muito especiais, como movimentação do cursor, salvar e abrir arquivos, copiar e colar texto, fazer buscas por palavras-chave, etc.

---

  • Se deseja digitar um texto, precisa acessar o Modo de Inserção e, para isso, usa-se a tecla de atalho i. Basta pressioná-la quando estiver no modo de comandos e, em seguida, iniciar ou modificar um arquivo de texto. Para retornar ao modo de comandos, use a tecla ESC.

---

  • Caps Lock: Tudo o que você digita no vi possui um significado diferente quando as letras estão maiúsculas. Tenha cuidado em acioná-la sem querer. Você não recebe um aviso que está com o Caps ativado – simplesmente, as coisas irão funcionar de forma estranha.

---

  • Ctrl+G: Se você esquecer-se do que está editando, ao pressionar estas teclas mostra o nome do arquivo que você está editando e a linha atual que você se encontra no final da tela, além de outras informações.

---

CRIAR E SALVAR ARQUIVO NO VIM

Se quiséssemos, por exemplo, criar um arquivo de texto chamado aprender-usar-vim.txt, cujo conteúdo seria a frase "Teste do tutorial", seguiríamos os seguintes passos:

1) no terminal, executaríamos o comando vim aprender-usar-vim.txt.

2) dentro do Vim, pressionaríamos a tecla i para passar do Modo de Comandos para o Modo de Inserção.

3)digitaríamos a frase "Teste do tutorial".

voltaríamos ao modo de comandos com a tecla ESC.

digitaríamos :wq, pressionando Enter logo em seguida. Esse comando (:wq) é utilizado para salvar (write) o arquivo e sair (quit) do Vim.

Tente repetir esses passos em seu computador.

---

OBS:

Importante se acostumar a entrar e sair da inserção de texto. ('i') inserção ('Esc') modo de comando.

  • Para se movimentar no texto aperte a tecla ('Esc'): h j k l

i = insere texto
insert = insere texto
esc = sai de inserção de texto
:w = salva o texto
:q = sai do vim
:wq = sai do vim salvando o texto
:x! = alternativo sair salvando o texto
dd = exclui uma linha por completo
yy = copia uma linha por completo
p = cola a linha
v = copia parte do texto modo visual
u = Desfaz
Ctrl+R = refaz

---

Para quebrar linhas longas no vim acho que funciona usar:

:%norm! gww

---

vim comando para restruturar/forçar texto para 80 colunas. Comando:

:set textwidth=80

---

Mover para o início do arquivo. Pode ser feito com:

Ctrl+Home

gg

gqG.

---

No vim pode abrir dois arquivos de texto ao mesmo tempo.

:split /caminho/para/o/novo/texto

---

  • Se quer abrir dois arquivos (teste1, teste2) horizontalmente abra o terminal onde estão os arquivos e execute:

vim -o teste1 teste2

Para abrir em janelas verticais:

vim -O teste1 teste2

---

  • Você pode mudar o cursor de uma janela para outra com a rotina habitual de movimentos vi / m (h: direita, l: esquerda, j: inferior, k: superior)

Ctrl+w k – superior
Ctrl+w j – inferior
Ctrl+w l – esquerda
Ctrl+w h – direita

---

Talvez possa dividir textos horizontalmente com as teclas:

Ctrl+W S

Verticalmente:

Ctrl+W v

Para fechar uma delas:

Ctrl+W Q

Para mudar intuitivamente:

Ctrl+W J K H L

Ctrl+W seta para cima seta para baixo

---

  • Para alterar textos no vim: Ctrl+W seta para cima, Ctrl+W seta para baixo.
  • Pode copiar uma parte de um texto para o outro.
  • Para sair de um dos textos usar Ctrl+w seta para cima ou para baixo depende do texto a ser fechado.

- Para sair do texto:
:q

- Para sair sem salvar:
:q!

- Pode executar comandos do Bash sem sair do vim. Exemplo:
:!ls -lC

- Comando que insere resultado de comando executado dentro do texto:
:.!uname -r = insere resultado dentro do texto atual.

- Para salvar e sair:
:wq

- Ou:
:zz

- Pode habilitar o número de cada linha:
:set number

- Para desabilitar o número de cada linha:
:set nonunber

- Habilitar sysntax higlight:
:syntax

- Para desabilitar syntax higlight:
:syntax off

---

  • No vim certos procedimentos que levariam muito tempo para fazer em outros editores de texto, são executados pelo vim muito rapidamente. O vim foi criado mais ou menos na década de 60, mas creio que até hoje está em desenvolvimento. Quem consegue entrar na onda do vim, descobre depois de um tempo, poderes inimagináveis e não larga mais. Talvez um dia a gente chega lá. O mundo tá muito cheio de coisa e não dá para abraçar tudo, não é mesmo?

---

MOVENDO PELO ARQUIVO

Há diversos meios de mover-se pelo arquivo. Para estes exemplos, use arquivos grandes que você não poderá danificar. (Tente copiar /var/log/messages to/tmp e abra-o no vi).

Ctrl+F: página próxima, uma página por vez.

Ctrl+B: página anterior, uma página por vez.

Ctrl+D: página próxima, meia-página por vez.

Ctrl+U: página anterior, meia página por vez.

G: vá para a última linha do arquivo.

1G: vá para a primeira linha do arquivo. (Você poderá usar qualquer número – o número usado será a linha correspondente no arquivo).

---

BUSCANDO POR TEXTO

Para buscar a próxima ocorrência de texto no arquivo, use tanto a barra (/) ou o ponto de interrogação (?).
Exemplos:

/linux: procura (sentido horário) pela palavra linux.

?computadores: Procura (sentido anti-horário) pela palavra computadores.

/Rubber.*Soul: procura (sentido horário) por uma linha que possua a palavra Rubber e, após isso, em algum lugar, a palavra Soul.

?[bB]eatles: procura (sentido anti-horário) por beatles ou Beatles.

O editor vi foi originalmente baseado no editor ex, que não lhe deixa trabalhar no modo de tela cheia. No entanto, lhe permite rodar comandos que o permitam encontrar e mudar texto em uma ou mais linhas por vez. Segue abaixo alguns exemplos de comandos ex para a busca e mudanças no texto:

:g/Natal: procura pela palavra Natal e mostra cada ocorrência daquela linha no arquivo.

:s/Natal/Natalino: substitui Natalino pela palavra Natal na linha atual.

:g/Natal/s//Natalino: substitui a primeira ocorrência da palavra Natal em cada linha do arquivo com a palavra Natalino.

:g/Natal/s//Natalino/g: substitui cada ocorrência da palavra Natal com a palavra Natalino no arquivo inteiro.

:g/Natal/s//Natalino/gp: substitui cada ocorrência da palavra Natal pela palavra Natalino no arquivo inteiro, e depois mostra cada linha para que você veja as mudanças.

---

USANDO NÚMEROS COM COMANDOS

Você pode preceder muitos comandos vi com números, para ter o comando repetido tantas vezes. Alguns exemplos:

3dw: deleta as próximas três palavras.

12j: Move 12 linhas para baixo.

  • Observação: quando você chama o vi em muitos sistemas Linux, você está na verdade chamando o editor de texto vim, que roda no modo de compatibilidade do vi. Os mais aficionados em programação preferem usar o vim, porque mostra diferentes níveis de código em cores distintas, além de possuir outros recursos interessantes, como a capacidade de abrir um documento com o cursor no mesmo lugar que estava na última vez que você saiu.

---

  • Alterar letras, palavras ou linhas inteiras para MAIÚSCULAS ou minúsculas:

Para alterar uma série de letras para maiúsculas, posicione o cursor na primeira letra, digite gUX no modo execução e, finalmente, pressione a seta para a direita no teclado.

Para alterar o número X de palavras, coloque o cursor no início da palavra e digite gUXw no modo execução.

Para alterar uma linha inteira para maiúscula, coloque o cursor em qualquer lugar na linha e digite gUU no modo execução.

---

  • Exclua caracteres, palavras ou o início de uma linha no modo INSERIR.

Embora você possa excluir caracteres ou várias palavras de uma vez no modo ex (ou seja, dw para excluir uma palavra), você também pode fazê-lo no modo Inserir:

Ctrl + h: exclui o caractere anterior para o local onde o cursor está localizado no momento.

Ctrl + w: apaga a palavra anterior para o local onde o cursor está localizado no momento.

Para que isso funcione corretamente, o cursor deve ser colocado em um espaço vazio após a palavra que você precisa excluir.

Ctrl + u: apaga a linha atual começando pelo caractere imediatamente à esquerda do lugar onde o cursor está.

---

  • Contar correspondências resultantes de uma pesquisa por padrão e passar de uma ocorrência para outra.

Esta dica é baseada no comando substituto, com a exceção de que não removerá nada, já que o comportamento substituto é substituído pela opção n, resultando na contagem de ocorrências do padrão especificado: Certifique-se de não omitir nenhuma das as barras para frente.

:%s/pattern//gn

Exemplo:

:%s/liberto//gn

---

SALTAR PARA FRENTE DE PARA TRÁS USANDO MARKS

Se você estiver editando um arquivo maior que uma tela, você apreciará a funcionalidade fornecida pelas marcas.

Você pode pensar em uma marca no vim como um marcador - uma vez que você a coloca em algum lugar, você pode voltar rapidamente e facilmente.

Suponha que você esteja editando um arquivo de configuração de 300 palavras e, por algum motivo, precise alternar repetidamente entre as linhas 30 e 150, por exemplo.

para criar uma marca chamada 'a' na linha 30. Em seguida, vá para a linha 250 (com: 250 no modo ex) e pressione `a (crase, a) para retornar para marcar a na linha 30.

Você pode usar letras maiúsculas e minúsculas para identificar marcas no vim (agora repita o processo para criar uma marca chamada A na linha # 250). Você pode ver suas marcas com

:marks aA

---

  • Inserindo caracteres Unicode especiais. Se o layout do seu teclado não permitir a inserção fácil de caracteres Unicode especiais em um arquivo, ou se você se encontrar na frente de um servidor com configurações de idioma diferentes daquele que está acostumado, esse truque será útil. Para fazer isso, pressione Ctrl + v no modo de inserção seguido da letra u e do código numérico hexadecimal do caractere que você deseja inserir. Você pode verificar os gráficos Unicode para obter uma lista de caracteres especiais e seus códigos numéricos correspondentes

Exemplos:

Ctrl+v followed by returns
u0040 @
u00B5 μ
u20AC €

---

  • Buscar e substituir:

:%s/old/new/g

- Então, o que você quer ser solicitado antes de fazer substituições? Fácil. Basta adicionar um c no final do comando acima, da seguinte maneira:

:%s/old/new/gc

---

Linux comando curl (com exemplos)

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

Linux: Exemplos de Comandos Curl

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

Eu entendo que comando "curl" é uma ferramenta de linha de comando usada para transferir dados de/para um servidor.

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

A ferramenta suporta vários protocolos como:

DICT, ARQUIVO, FTP, FTPS, GOPHER, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMB, SMBS, SMTP, SMTPS, TELNET e TFTP.

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

Exemplos do comando Curl...

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

Exemplos:

1-Faço o download e armazeno a saída em um arquivo

Usando a ferramenta, posso baixar dados representados por uma URL e armazená-los em um arquivo.

Veja como posso usar a ferramenta para baixar os dados de um URL:

curl [url]

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

Por exemplo:

curl http://www.nomono.com

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

O comando acima exibirá os dados baixados como saída no meu terminal. Para armazenar a saída em um arquivo, executo o seguinte comando:

curl [url]> [nome do arquivo de saída]

curl http://www.nomono.com > nomono.html

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

Tenho em mente que o Curl exibirá um medidor de progresso no terminal, independentemente de como ele está sendo executado.

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

Aqui está a saída do comando acima:

curl-command-arquivoguardado

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

Alternativamente, posso usar a opção -o para salvar a saída (dados baixados) em um arquivo específico.

curl -o [nome do arquivo de saída] [url-name]

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

Por exemplo:

curl -o nomono.html http://www.nomono.com

Da mesma forma, também existe uma opção -O ("O" em maiúsculas) que permite salvar os dados baixados em um arquivo com o mesmo nome do arquivo remoto.

curl -O [url]

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

Por exemplo:

curl -O https://nomono/docs/manpage.html

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

O comando acima salvará os dados baixados em um arquivo chamado "manpage.html".

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

Exemplo: saída do comando 2 Silent Curl

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

Se eu não quiser que o Curl exiba detalhes do andamento e erros na saída, uso a opção -s.

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

Por exemplo, considero o seguinte caso no qual o Curl lança um erro:

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

curl https://nomono-command-silent

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

Para silenciar erros como esses, uso a opção -s.

$ curl -s [url]

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

Por exemplo:

$ curl -s https://nomono.com

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

Aqui está a saída:

curl-command-silent-s

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

OBS:
nenhum erro é mostrado na saída.

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

Caso eu queira que o Curl exiba apenas erros e não outros detalhes (como os detalhes do progresso exibidos por padrão), use a opção -S junto com a opção -s.

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

Por exemplo:

$ curl -s -S https://nomono.com (opção curl-comando-com-s-S)

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

Exemplo: 3 Download de vários arquivos

Usando a ferramenta, posso baixar vários arquivos através de um único comando.

$ curl -o / O [url1] -o / o [url2]

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

Por exemplo:

$ curl -O https://nomono.se/docs/manpage.html -O https://nomono/docs/manual.html

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

OBS:
Quando eu usar a opção "-o", preciso fornecer um nome de arquivo no comando para armazenar a saída.

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

Exemplo: 4 Lidar com redirecionamentos de URL usando o comando curl

Suponha que eu forneço um URL para o comando Curl, mas a página da Web não existe (digamos, foi movida para outro local).

Nesse caso, posso usar a opção de linha de comando -L, que fará com que o curl refaça a solicitação no novo local.

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

Por exemplo, considero um caso em que, em Curl, há um erro como "página movida".

curl-command-semL

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

Mas se acessar a página da Web por meio de um navegador da Web, observo um redirecionamento.

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

Para garantir que o Curl também lide com esse redirecionamento, uso a opção de linha de comando -L.

$ curl -L [url]

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

Por exemplo:

$ curl -L nomon.com

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

Aqui está a saída:

curl-command-with-L

Exemplo: 5 Informações sobre o URL usando a opção -v / –trace

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

Posso recuperar informações detalhadas sobre uma operação Curl. Esse recurso pode ser acessado usando a opção -v.

As linhas que começam com '>' e '<' exibem os dados de cabeçalho que são enviados e recebidos, respectivamente, por Curl e *, significam informações adicionais fornecidas pela ferramenta.

$ curl -v [url]

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

Por exemplo:

$ curl -v https://curl.nomon/docs/manpage.html
Aqui está a saída:

curl-command-verbose

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

Se não estiver satisfeito com os detalhes que obtevie usando a opção -v e quiser acessar mais informações, uso a opção –trace.

$ curl –trace [arquivo-que-quero-guardar-output] [url]

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

Por exemplo:

$ curl - info de rastreamento https://nomono/docs/manpage.html

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

Aqui está a saída:

curl-command-trace

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

Exemplo: 6 Pesquisar palavra-significado usando o protocolo DICT com o comando curl

Usando a ferramenta, posso procurar uma palavra no terminal usando o protocolo dict. Um url do dicionário dict.org é passado para ele. Existem cerca de 77 dicionários suportados pelo servidor dict.org.

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

Para listar todos os dicionários suportados no meu terminal, executo o seguinte comando:

$ curl dict: //dict.org/show: db

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

Aqui está a saída:

curl-command-showalldict

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

Agora, para pesquisar uma palavra em um dicionário específico, uso o seguinte comando:

$ curl dict: //dict.org/d: [palavra a ser pesquisada]: [nome do dicionário]

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

Por exemplo:

$ curl dict: //dict.org/d: comando: gcide

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

Nota: gcide é um nome curto para um dicionário chamado “The Collaborative International Dictionary of English”.

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

Aqui está a saída:

curl-command-singledictsearch

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

Se quiser pesquisar uma palavra em todos os dicionários, executo o seguinte comando:

$ curl dict: //dict.org/d: [palavra a ser pesquisada]: *

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

Por exemplo:

$ curl dict: //dict.org/d: comando: *
curl-command-dictionary

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

Conclusão:

Este é o básico. O Curl oferece um conjunto de recursos que posso acessar por meio das várias opções de linha de comando.

Até Breve!

🙂

.

Linux – Dominando comandos e shell script

Linux - Dominando comandos e shell script

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

Este artigo (aprendendo comandos-linux e shell-script) é para iniciantes (EU). Tudo que tem neste artigo executei por minha conta e risco sem problemas. Tudo foi bem. Recomendo que faça o mesmo (por sua conta e risco). O método aqui é leitura, noção, execução e repetição. Execução, repetição, leitura, entendimento, execução.

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

APRENDENDO COMANDOS LINUX E SHELL SCRIPT

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

O que é o shell chamado de Bash?

O GNU Bourne-Again SHell (BASH) incorpora recursos do C Shell (csh) e do Korn Shell (ksh) e está em conformidade com as especificações do shell POSTIX 2.

Ele fornece uma interface de linha de comando (CLI) para trabalhar em sistemas * nix e é o shell mais comum usado em sistemas Linux.

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

No seu diretório home, 3 arquivos têm um significado especial para o Bash, permitindo que você configure seu ambiente automaticamente quando você faz login e quando invoca outro shell Bash, e permite executar comandos quando você efetua logout.

Esses arquivos podem existir em seu diretório inicial, mas isso depende muito da distribuição do Linux que você está usando e de como o seu administrador de sistemas (ou você) configurou sua conta.

Se eles estão faltando, saiba que o Bash usa o padrão /etc/profile.

Você pode facilmente criar esses arquivos usando o seu editor de texto favorito.

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

Arquivos que devem estar em sua pasta home:

1) .bash_profile: le os comandos e executa pelo Bash toda vez que você efetuar login no sistema.

2) .bashrc: le os comandos e executa pelo Bash toda vez que você inicia um subshell.

2) .bash_logout: le os comandos e executa pelo Bash toda vez que um shell de login sai.

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

O Bash permite 2 sinônimos.

Para .bash_profile: .bash_login e .profile.

Estes são derivados do arquivo do shell C.

Arquivos de .login e dos arquivos shell Bourne e Korn são chamados de .profile.

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

OBS:
Apenas um desses arquivos é lido quando você efetua login.

Se o .bash_profile não estiver lá, o Bash procurará .bash_login.

Se isso também estiver faltando, ele procurará .profile.

.bash_profile é lido e executado apenas quando você inicia um shell de login (isto é, quando você efetua login no sistema).

Se você iniciar um subshell (um novo shell) digitando bash no prompt de comando, ele lerá os comandos do .bashrc.

Isso permite separar comandos necessários no login daqueles necessários ao invocar um subshell.

No entanto, a maioria das pessoas deseja que os mesmos comandos sejam executados, independentemente de se tratar de um shell de login ou de um subshell. Isso pode ser feito usando o comando source de dentro de .bash_profile para executar .bashrc.

"Você simplesmente coloca todos os comandos em .bashrc." - Escritos em shell script, usando aliases.

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

Esses arquivos são úteis para executar automaticamente comandos como: set, alias, unalias e configuração das variáveis PS (1-4), que podem ser usadas para modificar seu ambiente bash.

Você pode usar o comando source para aplicar as mudanças que você acabou de fazer em um arquivo de configuração.

Por exemplo, se você adicionar um alias ao /etc/profile para aplicar as alterações à sua sessão atual. Se desejar execute:

source /etc/profile

Se quiser fazer valer o .bashrc execute:

source .bashrc

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

Aliases ativos podem ser visualizados executando o comando alias.

Alguns arquivos comuns que podem modificar aliases são:

1) ~/.bashrc
2) ~/.bash_profile
3) ~/.profile
4) /etc/bashrc
5) /etc/profile
6) arquivos em /etc/profile.d.

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

Programas CLI, são programas em modo texto. Por exemplo programas cli podem interagir com o terminal. Um programa cli bastante usado no Linux é o Dialog por exemplo.

.

FLUXOS DE ENTRADA/SAÍDA PADRÃO E OPERADORES DE FLUXO

.

Os fluxos padrão são canais de entrada/saída (E/S) entre um programa de computador e o ambiente (tipicamente um terminal de texto) que são pré conectados no início da execução.

.

A entrada padrão Stdin do Linux é o teclado. A gente se comunica com o sistema operacional e programas usando o teclado. Claro que podemos usar tela sensível ao toque, mouse, joystick, toutchpad, etc...

Stdin = Standart Input

É representada pelo número 0.

.

Abro meu terminal pelo menu do sistema. Digito/Copio e colo no meu terminal:

ls /dev/stdin ; echo Stdin = Standart Input - valor = 0

.

A saída padrão Stdout do Linux é o monitor. Quase sempre as informações mais importantes são obtidas pelo terminal do sistema operacional. A gente recebe informação do sistema operacional e programas pelo monitor.

Stdin = Standart Output

É representada pelo número 1.

.

Copio e colo no meu terminal:

ls /dev/stdout

.

A saída de erro padrão Stderr do Linux é o monitor. Por ele são enviadas mensagens de erro geradas por aplicativos. A gente recebe informação de erro do sistema operacional e programas pelo monitor. Estas informações são muito úteis para podermos corrigir problemas. Quase sempre as informações de erro mais importantes são obtidas pelo terminal do sistema operacional.

Stderr = Standart Error

É representada pelo número 2.

.

Copio e colo no meu terminal:

ls /dev/stderr

.

Os 3 são usados por redirecionadores. Você redireciona a saída deles para um arquivo de texto por exemplo. Podemos redirecionar a saída de um comando para um arquivo em determinado diretório. Então lembre que:

1) Stdin=0
2) Stout=1
3) Stderr=2

.

Podemos manipular as saídas e entradas com 3 operadores.

O Pipe (|) Liga a saída de um programa a entrada de outro.

O Write (>) Redireciona para arquivo de texto por exemplo sobrescrevendo.

O Append (>>) Redireciona para arquivo de texto por exemplo, sem apagar o que já estiver escrito.

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

OS PROMPTS PADRÃO DO LINUX SÃO:

.

1) Para root:

- # -

2) Para os outros usuários:

- $ -

.

Exemplo:

~$ echo -e "\nBem Vindo(a) \n \na \n \nComandos Linux \n \ne \n \nShell Script \n"

.

SISTEMA DE PERMISSÃO DE ARQUIVOS

.

Todo arquivo possui uma dada permissão para cada usuário.

Leitura (r), escrita (w) e execução (x)

.

TUDO É ARQUIVO:

Pasta é arquivo.
Dispositivo é arquivo.
Usuário é arquivo.

.

Temos arquivos de texto, arquivos de áudio, arquivos de vídeo, arquivos de imagem, etc.

.

A ÁRVORE DE ARQUIVOS DOS SISTEMAS LINUX:

.

A árvore de diretórios/arquivos dos sistemas Linux é composto de diversos diretórios/arquivos conforme lista a seguir(pode haver variação de acordo com versão/distribuição):

1) /bin
2) /dev
3) /mnt
4) /root
5) /tmp
6) /vmlinuz
7) /boot
8) /etc
9) /opt
10) /run
11) /srv
12) /usr
13) /vmlinuz.old
14) /cdrom
15) /home
16) /lib
17) /media
18) /proc
19) /sbin
20) /sys
21) /var

.

Cada um desses diretórios tem uma função especifica dentro do sistema. Segue a lista dos principais com sua respectiva função.

.

Diretório: /bin

O /bin é onde ficam os arquivos binários (executáveis) dos comandos básicos do sistema, e assim sendo estes arquivos podem ser executados por qualquer usuário do sistema. Estamos falando de comandos essenciais como cp, mv, cd, ls...

Diretório: /usr

Ao contrário do que muitos pensam usr não se refere a usuário, mas a "Unix System Resources". É neste diretório que a maioria dos programas são instalados, assim como bibliotecas e documentação dos programas

Diretório: /boot

É onde ficam arquivos referentes a inicialização do sistema.

Diretório: /dev

Este é interessante. Os arquivos contidos aqui, não são arquivos de texto, ou binários mas sim apontadores que indicam dispositivos de hardware conectado. Como no Linux TUDO VIRA ARQUIVO, os dispositivos não são diferente.

Diretório: /etc

Onde ficam arquivos de configuração do sistema e de outros softwares. Os arquivos de configuração são comumente apresentados como arquivos de texto facilitando a edição manual.

Diretório: /lib

É onde ficam as bibliotecas usadas pelos programas que ficam em /bin e /sbin.

Diretório: /home

Dentro do /home normalmente é criada uma pasta para cada usuário. É onde ficam os arquivos pessoais, documentos, músicas e vídeos do usuário(exceto para o usuário root).

Diretório: /mnt

É usado para "montar" unidades de disco ou de rede por meio do comando mount. Após montar o diretório a unidade fica disponível como se fosse mais um diretório do sistema.

Diretório: /proc

Diretório onde ficam arquivos que armazenam informações sobre processos do sistema.

Diretório: /tmp

Arquivos e pastas criadas temporariamente ficam nesse diretório.

Diretório: /root

É uma pasta analoga as pastas de usuário que ficam no Diretório: /home, mas para o usuário root.

Diretório: /

Por fim o mais importante dos diretórios, é o diretório / também chamado de diretório raiz. É dentro desse diretório que ficam todos os outros. É a base para toda a árvore de arquivos.

.

OBS:
Existe um comando muito simples que apaga o diretório root e nunca deve ser executado, a menos, que a pessoa queira destruir o sistema:

sudo rm -rf /

.

O SHELL SCRIPT É O MAIS ALTO NÍVEL QUE UM SISTEMA LINUX COMUM POSSUI.

.

O Shell padrão do Linux é o Bash. Quando o usuário digita comandos no terminal eles são interpretados pelo Bash.

.

Se o usuário escreve um arquivo de texto com comandos da maneira correta este arquivo de texto se torna um shell script.

.

O shell script é bastante usado pelas pessoas para a automação de tarefas. É muito perigoso executar Shell Scripts como root, isto pode
danificar o sistema.

.

O MELHOR TERMINAL PARA USAR É O QUE JÁ VEM INSTALADO NO TEU SISTEMA. MAS EXISTEM OUTROS TERMINAIS QUE PODE USAR. TEM O TILIX, TEM O TERMINATOR POR EXEMPLO.

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

USAR O TERMINAL CHAMADO TERMINATOR

.

Tem um terminal legal para estudar comandos e shell script Linux chamado TERMINATOR.
Ele pode ser dividido horizontalmente (Ctrl+Shift+O) e verticalmente (Ctrl+Shift+E).
Pode redimensionar as divisões do terminator com (Ctrl+Shift+seta).
Para mover de uma janela de terminal para outra (Ctrl+Shift+N) (Ctrl+Tab).
Para fechar o terminal (Ctrl+Shift+W).
Procuro o TERMINATOR pelo software center da minha distro. Instalo. Abro ele pelo menu do sistema.
Com o TERMINATOR posso ler este artigo em uma subdivisão do terminal e usar outras para executar as instruções do artigo por exemplo.
Isto porque é só copiar este texto para um editor de texto salvar como estudo-linux.txt e abrir ele no terminal.

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

TERMINATOR EXEMPLO DE USO

.

APERTO AS TECLAS:

1) Ctrl+Shift+O
2) Ctrl+Shift+E
3) Ctrl+Shift+N
4) Ctrl+Shift+Seta para esquerda/ direita/ cima/ baixo
5) Ctrl+Shift+W

.

Para copiar no terminal: Shift Ctrl C

Para selecionar tudo: Shift Ctrl A (depois seta para cima)

.

Para pesquisar:

1) Shift Ctrl F (localizar)
2) Shift Ctrl G (anterior)
3) Shift Ctrl H (próximo)

.

Para ampliar: Ctrl +
Para reduzir: Ctrl -
Tamanho normal: Ctrl 0
Tela cheia: F11

.

Para colar no terminal: Shift Ctrl V

.

Após escrever comandos no meu terminal, eles são examinados pelo Shell, que no meu caso é o Bash. Após o exame do Shell, os comandos informados são passados para o Linux, que executa o comando ou exibe uma mensagem de erro que ajuda quando for executar o comando correto.

.

COMANDOS DO LINUX TEM QUASE SEMPRE A SEGUINTE FORMA:

.

comando [-opções] [argumentos]

Exemplo:

ls -t /Downloads/pasta_teste

du -h /Downloads/pasta_teste

.

comando [argumento]

Exemplo:

cat /Downloads/pasta_teste/arquivo1.txt

.

comando [- opções]

Exemplo:

ps -aux

.

O que é um argumento?

Um argumento é uma informação extra, como o nome ou tamanho de um arquivo a ser encontrado por um comando.

.

O que é parâmetro? É o mesmo que opção. Um comando quase sempre, tem como opção vários parâmetros. Por exemplo o parâmetro de ajuda do comando ls é --help. Fica assim:

ls --help (o ls tem várias opções)

.

Para me confundir menos, por enquanto, comandos Linux tem opções e argumentos.

.

Primeiro preciso de um local no sistema para estudar para não se misturar com meus outros arquivos. Abro o terminal pelo menu do sistema e colo:

cd ; cd Downloads/ ; mkdir EstudoEmDown ; cd EstudoEmDown/ ; clear

.

Agora estou no local (cd ; cd Downloads/EstudoEmDown/) que daqui para frente, será o lugar onde posso estudar comandos e shell script. Pelo menos por enquanto. Beleza.

.

Agora vou ler este artigo e executar comandos no terminal. Vamos?

.

1) Digito no terminal: whoami
2) Aperto a tecla Enter.
3) Digito no terminal: cd
4) Aperto a tecla Enter.
5) Digito no terminal: cd -
6) Digito no terminal: clear

.

Uso o exemplo abaixo para digitar no terminal:

ls -tli /home/seu_user_é_whoami/Downloads/

ls -tli ~/Downloads/

ls -t /home/seu_user_é_whoami/Downloads/

ls -t ~/Downloads/

du -h ~/Downloads/

.

No exemplo acima:

1) ls (É o comando.)
2) -tli (É a opção.)
3) /home/seu_user_é_whoami/Downloads/ (É o argumento)

.

1) du (Comando)
2) -h (Opção)
3) ~/Downloads/ (Argumento)

.

TEMOS ENTÃO:

comando + opção + argumento

.

O QUE SÃO STRINGS?

.

"Expressão contendo qualquer caracter alfanumérico, formando ou não palavras."

.

São cordas. Longas cadeias de comandos. Strings possuem comandos, opções, argumentos, metacaracteres, expressões regulares, pipes e palavras. Podem ser executadas no terminal, mas a casa delas é nos shell scripts.

Strings creio que são palavras dentro de um arquivo.

Comandos, códigos, palavras executadas em um terminal.

Dentro de um arquivo existem caracteres, palavras, frases e parágrafos.

Podemos digitar códigos/palavras/comandos (strings) diretamente no terminal.

As palavras podem ser "palavras exatas" ou "expressões regulares".

As strings podem conter "comandos" "opções" "argumentos" "palavras exatas" ou "expressões regulares".

.

Executo no terminal o exemplo abaixo:

1)

STRING="Isso ===== é ===== uma STRING!"

2)

echo 'Quer saber o que é uma string?' ; echo $STRING

3)

unset STRING

4)

clear

5)

exit

.

O QUE É EXPRESSÃO REGULAR?

Expressões regulares acho que são maneiras de usar curingas e caracteres especiais importantes no Bash que é o interpretador de comandos padrão no terminal do Linux.

.

Exemplo:

.

ifconfig | grep "wl[^ || :]*" -o

.

ifconfig | grep "wl[^ || :]*"

.

O QUE É SED?

Sed creio que é um editor de fluxo para os sistemas operacionais Unix e Linux. Ele pode ser utilizado para manipular o texto de várias maneiras, incluindo procurar e substituir cadeias encontradas em arquivos de texto.

.

O formato básico para a substituição com sed é:

sed -i ‘s/FIND_STRING/REPLACE_STRING/g’

sed -i "s/encontrar_string/substituir_string/g" nome_do_arquivo

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

.

Explicação:

O "-i" opção diz para editar a linha de texto.

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 você 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

.

O QUE É PERL?

Perl penso ser uma linguagem de programação que pode ser usado a partir da linha de comando para manipular arquivos de texto.

Perl foi criado para manipular relatórios de texto ASCII de forma eficiente.

O método de Perl para procurar e substituir as cordas é semelhante ao comando sed. O formato é o seguinte:

Perl- pi -e 's/find_string/replace_string/g' nome-do-arquivo

.

EXECUTO OS EXEMPLOS ABAIXO PARA ENTENDER COMO OBTER AJUDA:

1) man --help
2) man grep (para sair aperto a tecla Q)
3) apropos mkdir
4) whatis bash
5) whereis sh

.

QUERO SABER A VERSÃO DA DISTRIBUIÇÃO DIGITO:

.

1) lsb_release -a
2) cat /etc/issue
3) reset

.

ME INFORMO SOBRE O KERNEL E ARQUITETURA DA MÁQUINA (faço sempre que posso pra eu não esquecer):

.

1) uname -a
2) uname -r
3) arch

.

EU QUERO APRENDER ATALHOS DE TERMINAL DO GNU/LINUX ENTÃO EU LEIO O TEXTO ABAIXO:

.

Teclas de Atalho + Função

1) Ctrl + a (Move o cursor para o início da linha)
-----------------------
2) Ctrl + e (Move o cursor para o final da linha)
-----------------------
3) Ctrl + l (Limpa a tela, semelhante ao comando clear)
-----------------------
4) Ctrl + u (Apaga do cursor para trás)
-----------------------
5) Ctrl + k (Apaga do cursor para frente)
-----------------------
6) Ctrl + w (Apaga uma palavra antes do cursor)
-----------------------
7) Ctrl + Shift + _ (Desfaz as últimas mudanças)
-----------------------
8) !! (Executa o último comando no histórico)
-----------------------
9) !abc (Executa último comando no histórico começando com abc)
-----------------------
10) !n (Executa comando de número n no histórico)
-----------------------

.

PARA APRENDER O QUE LI ACIMA, EXECUTO O ENSINAMENTO ABAIXO:

.

Abro o terminal pelo menu do sistema.

.

Colo o texto abaixo no terminal, mas poderia ser qualquer frase:

.

Frase: "Ctrl + Apaga do cursor ao início da linha."

.

Agora aperto duas teclas, as teclas:

Ctrl + A

.

Aperto a seta do teclado para a direita quatro vezes. Então aperto as teclas:

.

Ctrl + U

.

Aperto duas teclas, as teclas Ctrl + E

(Control e E)

.

Aperto a tecla seta para esquerda 7 vezes.

.

Aperto as teclas Ctrl + K

.

Aperto as teclas Ctrl + W

.

Aperto 3 teclas: Crtl + Shift + _

(Control, Shift e Underline.)

.

Aperto a tecla seta para cima algumas vezes.

.

Aperto a tecla seta para baixo algumas vezes.

.

Pronto. Já estou sabendo alguma coisa.

Com isto, já aprendi bastante sobre atalhos de teclado para o terminal Linux.

Aperto Ctrl+U e digito: history (aperto a tecla Enter).

Digito: !w (aperto a tecla Enter).

Digito: !whe (aperto a tecla Enter).

Digito: !who (aperto a tecla Enter).

Digito: !ar (aperto a tecla Enter).

Digito: !4 (aperto a tecla Enter).

Digito: !5 (aperto a tecla Enter).

.

Até Agora Tudo Beleza!!!

.

RECORDO QUE:
-----------------------
Terminal: Teclas de Atalho + Função
Ctrl + a (cursor p/ início da linha)
Ctrl + e (cursor p/ fim da linha)
Ctrl + l (Limpa tela)
Ctrl + u (Apaga do cursor p/ trás)
Ctrl + k (Apaga do cursor p/ frente)
Ctrl + w (Apaga antes do cursor)
Ctrl + Shift + _ (Desfaz mudanças)
!! (Exec último cmd no hist)
!abc (Exec último cmd no hist começando com abc)
!n (Exec cmd de núm n no histórico)
-----------------------

.

O PIPE "|"

.

O pipe "|" é um operador que liga um comando a outro comando. Liga a saída de um comando a entrada de outro comando.

.

Lembro que eu criei um local de estudo em Downloads com o comando abaixo:

cd ; cd Downloads/ ; mkdir EstudoEmDown

.

Para navegar até ela, uso o comando abaixo:

cd ; cd Downloads/EstudoEmDown

.

OBS:
Quando for estudar comandos e shell script abro o terminal na pasta EstudoEmDown.

.

LER UM ARQUIVO DE TEXTO PELO TERMINAL DO LINUX

.

Copio e colo o código abaixo no meu terminal Linux:

echo -e '\nPoema: Pela Luz Dos Olhos Teus \n \nQuando a luz dos olhos meus \nE a luz dos olhos teus \nResolvem se encontrar \nAi que bom que isso é meu Deus \nQue frio que me dá o encontro desse olhar \nMas se a luz dos olhos teus \nResiste aos olhos meus só para me provocar \nMeu amor, juro por Deus me sinto incendiar \nMeu amor, juro por Deus \nQue a luz dos olhos meus já não pode esperar \nQuero a luz dos olhos meus \nNa luz dos olhos teus sem mais lará-lará \nPela luz dos olhos teus \nEu acho meu amor que são se pode achar \nQue a luz dos olhos meus precisa se casar. \n \n --Vinicius de Moraes \n ' > arq-poema.txt

.

Para ler o arq-poema.txt todo pelo terminal e mais coisas, copio e colo os comandos abaixo no meu terminal Linux um de cada vez:

1) cat arq-poema.txt

2) cat -n arq-poema.txt

3) du -h arq-poema.txt

4) grep "precisa" arq-poema.txt

5) find arq-poema.txt

6) ls arq-poema.txt

7) file arq-poema.txt

.

Para ler linhas do "arq-poema.txt" Executo:

1) cat arq-poema.txt | head -n 3

2) cat arq-poema.txt | head -n 5

3) cat -n arq-poema.txt | head -n 3

4) cat -n arq-poema.txt | head -n 5

5) clear

.

Para ler as três ultimas linhas do poema:

1) cat arq-poema.txt | tail -n 3

2) cat -n arq-poema.txt | tail -n 3

.

Será que nas quatro primeiras linhas existe a palavra olhos? Vamos ver. Copio e colo o comando abaixo no terminal:

1) cat arq-poema.txt | head -n 4 | grep olhos

2) cat -n arq-poema.txt | head -n 4 | grep olhos

.

Quais das 7 primeiras linhas que NÃO POSSUEM a palavra olhos?

1) cat arq-poema.txt | head -n 7 | grep -v olhos

2) cat -n arq-poema.txt | head -n 7 | grep -v olhos

.

Crio um arquivo comprimido. Um arquivo tar. com o comando:

tar -cvf arq-poema.tar arq-poema.txt

ls -t

.

Vejo o arquivo tar existente:

tar -tvf arq-poema.tar

.

Crio um arquivo xz do arq-poema.tar o resultado será "arq-poema.tar.xz".

xz arq-poema.tar

.

Crio uma pasta:

mkdir pasta-arq-poema

.

Movo o arq-poema.tar.xz para a pasta criada:

mv arq-poema.tar.xz pasta-arq-poema/

.

Navego para a pasta-arq-poema:

cd pasta-arq-poema/

.

Para descompactar um arquivo tar.xz:

tar -Jxf arq-poema.tar.xz

.

Confiro o arquivo descompactado:

cat arq-poema.txt

.

Volto para a pasta anterior:

cd ..

.

Para remover arq-poema.txt uso o comando abaixo no mesmo terminal que estou executando os comandos até o momento:

1) rm -f arq-poema.txt (mas não removo)

.

ACHOU INTERESSANTE ATÉ AGORA?

.

ENTÃO SIGAMOS EM FRENTE!

.

Copio e colo no terminal o texto abaixo. Vai criar um arquivo de texto onde vou repetir os comandos que já aprendi e mais adiante, alguns que irei aprender. Aperto Enter:

echo -e '\nEntão queres ser um escritor? \nSe não sair de ti explodindo apesar de tudo, não o faças. \nA menos que saia sem perguntar do teu coração e da tua cabeça e da tua boca e das tuas entranhas, não o faças. \nSe tens que sentar por horas olhando a tela do teu computador ou curvado sobre a tua máquina de escrever procurando palavras, não o faças. \nSe o fazes por dinheiro ou fama, não o faças. \nSe o fazes porque queres mulheres na tua cama, não o faças. \nSe tens que te sentar e reescrever uma e outra vez, não o faças. \nSe dá trabalho só pensar em fazê-lo, não o faças. \nSe tentas escrever como algum outro escreveu, não o faças. \nSe tens que esperar para que saia de ti a gritar, então espera pacientemente. \nSe nunca sair de ti a gritar, faz outra coisa. \nSe tens que o ler primeiro à tua mulher ou namorada ou namorado ou pais ou a quem quer que seja, não estás pronto. \nNão sejas como muitos escritores, não sejas como milhares de pessoas que se consideram escritores, não sejas estúpido nem enfadonho e pedante, não te consumas com auto-devoção. \nAs bibliotecas de todo o mundo têm bocejado até adormecer com os da tua espécie. \nNão sejas mais um. \nNão o faças. \nA menos que saia da tua alma como um míssil, a menos que o estar parado te leve à loucura ou ao suicídio ou homicídio, não o faças. \nA menos que o sol dentro de ti te esteja a queimar as tripas, não o faças. \nQuando chegar mesmo a altura, e se foste escolhido, vai acontecer por si só e continuará a acontecer até que tu morras ou morra em ti. \nNão há outra forma. \nE nunca houve. \n \n(Charles Bukowski)\n' > charles_texto-escritor.txt

.

Executo o comando abaixo para ler o arquivo criado:

cat charles_texto-escritor.txt

.

Para criar uma pasta pelo terminal uso o comando mkdir. Executo:

mkdir pasta-teste

.

Para criar um arquivo uso o direcionador write (>). Executo:

Executo:

> arquivo-teste.txt

ls -t

.

Poderia criar um arquivo com o direcionador append (>>).

Executo:

>> arq-test5.txt

ls -t

.

Pego este texto:

.

Quando eu estava subindo a escada,
Encontrei um homem que não estava lá.
Ele não estava lá hoje também.
Ah, como eu queria que ele fosse embora!

--Willian Hughes Mearns.

.

Executo:

echo -e '\nQuando eu estava subindo a escada, \nEncontrei um homem que não estava lá. \nEle não estava lá hoje também. \nAh, como eu queria que ele fosse embora!\n \n --Willian Hughes Mearns\n' > arq_nao_estava.txt >> arquivo-teste.txt

ls -t

.

Leio o texto com o comando:

cat arq_nao_estava.txt

cat arquivo-teste.txt

.

Conto palavras:

wc -w arq_nao_estava.txt

wc -w arquivo-teste.txt

.

Para ver arquivos criados e me localizar digito:

ls -t

pwd

ls -l -i

ls -at ~/

pwd ~/

ls -t ~/Downloads/

clear

pwd ~/Downloads/

.

Para mover o arquivo-teste.txt para pasta-teste uso o comando mv:

mv arquivo-teste.txt pasta-teste

.

Para navegar para a pasta-teste uso o comando cd:

cd pasta-teste/

.

Para ver o que tem na pasta-teste uso o comando ls -t:

ls -t

.

Para voltar uma pasta atrás uso o comando cd ..:

cd ..

.

Confiro:

ls -t

.

Navego para a pasta anterior:

cd -

.

Para remover a pasta-teste uso o comando rm -r:

rm -r pasta-teste (mas não removo)

.

Se removi confiro se a pasta foi removida:

ls -t

.

EXECUTANDO MAIS COMANDOS ÚTEIS PELO TERMINAL (É comum repetir comandos já executados. Vou me acostumar.)

.

VERIFICO INFORMAÇÕES DA MINHA CPU:

cat /proc/cpuinfo

.

Me lembro que o TERMINAL do Linux tem SENSIBILIDADE a letras MAIÚSCULAS e MINÚSCULAS. Um arquivo chamado Texto.txt é diferente de texto.txt

.

VERIFICO INFORMAÇÕES SOBRE A MEMÓRIA:

cat /proc/meminfo

.

Quero saber que dia é hoje para o terminal, digito:

1) date

2) d

.

Quero saber quando cairá certo dia em outro ano anterior ou posterior usando pipe "|" e "less":

1) cal 2017 | less (para sair aperto a tecla Q)

2) cal 2018 | less (aperto: /, digito: do, aperto: Enter)

3) cal 2019 | less

.

Aperto a tecla Q para sair do calendário. O pipe "|" serve para unir um comando a outro. No GNU/Linux posso unir programas que trabalharão juntos.

.

Se quiser mandar o calendário para um arquivo de texto para depois imprimir este arquivo de texto em uma folha de papel:

1) cal 2018 | less > calendario-de-2018.txt

2) ls -t

3) cat calendario-de-2018.txt | less

.

EM QUAL DIA DA SEMANA CAIRÁ O DIA DAS CRIANÇAS?

date --date='12 Oct' +%a

.

EM QUAL DIA DA SEMANA CAIRÁ O DIA DAS CRIANÇAS ANO QUE VEM?

date --date='12 Oct 1 year' +%a

.

QUE DIA FOI ONTEM?

date --date='1 day ago'

.

QUE DIA SERÁ AMANHÃ?

date --date='1 day'

.

A PARTIR DESTE DIA, DAQUI A UM ANO UM MÊS E UM DIA, QUE DIA SERÁ?

date --date='1 day 1 month 1 year'

.

QUE DIA FOI A UM ANO UM MÊS E UM DIA?

date --date='1 day 1 month 1 year ago'

.

PARA SABER INFORMAÇÃO SOBRE O SISTEMA E O HARDWARE:

(os comandos que começarem com sudo, pedirão senha então caso não queira, pule eles.)

.

Info CPU

cat /proc/cpuinfo

.

Info memória

cat /proc/meminfo

.

Detalhes da versão

cat /proc/version

.

Detalhes da partição

cat /proc/partitions

.

LER O .BASHRC E .BASH_HISTORY

1) cat ~/.bashrc

2) cat ~/.bash_history

.

Detalhes dispositivos SCSI/Sata

cat /proc/scsi/scsi

.

Info dispositivos SATA

hdparam /dev/sda1

.

Lista componentes do Hardware

sudo lshw

.

Imprime info do hardware

sudo hwinfo --short

.

Lista dispositivos scsi

sudo lsscsi

.

Lista todos os dispositivos PCI

lspci

.

Lista dispositivos USB

lsusb

.

Lista dispositivos de bloco

lsblk

.

Mostra informação sobre a arquitetura da CPU

lscpu

.

COMANDOS PARA MANIPULAÇÃO DE ARQUIVOS E DIRETÓRIOS:

.

LISTA DE COMANDOS:
1) pwd (Informa o nome do diretório corrente)
2) cd (Navega entre diretórios)
3) cd (Volta para a home)
4) cd . (Diretório atual)
5) cd .. (Retrocede um diretório)
6) cd - (Avança para o último diretório em que esteve)
7) ls, ls1 (Lista arquivos e diretórios)
8) ls -a (Lista diretórios, arquivos e arquivos ocultos)
9) ls -t (Lista arquivos e diretórios por data de modificação)
10) cp (Copia arquivos e diretórios)
11) mv (Move ou renomeia arquivos e diretórios)
12) ln (Estabelece ligações entre arquivos)
13) ln -s (Estabelece ligações simbólicas entre arquivos)
14) mkdir (Cria um diretório)
15) mkdir -p pasta1/sub-pasta1 (Cria um diretório e um sub-diretório)
16) mkdir ../nome-pasta-a-ser-criada (Cria pasta abaixo da pasta onde está)
17) rmdir (Remove um diretório vazio)
18) rm -f (Apaga arquivos)
19) rm -r (Apaga pastas/diretórios)
20) rm -I (Pede confirmação antes de remover)
21) file (Indica tipo de arquivo)
22) grep (Pesquisa arquivos por conteúdo)
23) wc (Conta palavras, linhas e caracteres)
24) df -h (confere espaço em disco)
25) more (ler arquivos de texto)
26) clear (limpa a tela do terminal)
27) cat (exibe o que tem dentro de um arquivo)
28) find (procura por arquivos em pastas)
29) du -h, du *, du arq.txt (informa espaço utilizado)

#

OBS:

Grep pesquisa nos arquivos de entrada (ou na entrada padrão caso nenhum arquivo seja informado ou o nome do arquivos seja igual a - ), por linhas que contenham o padrão informado. Por padrão, grep lista as linhas coincidentes. O pacote "grep" instala: grep, egrep e fgrep.

.

(comandos para saber sobre o grep usando o terminal)

1) man grep
2) grep --help
3) info grep
4) man egrep
5) man fgrep
6) man pgrep

#

Exemplos:

1) grep palavra-que-procura nome-do-arquivo.txt (deve estar com o terminal aberto onde está o arquivo-de-texto.txt)

2) grep -i palavra-que-procura arquivo-de-texto.txt

3) grep -r palavra-que-procura ~/Downloads/

.

Executo:

1) grep não arq-poema.txt

2) grep -r teus ~/Downloads/

3) grep -n root /etc/passwd

4) grep -v bash /etc/passwd | grep -v nologin

5) grep -c false /etc/passwd

.

Exemplos:

grep -i arquivo-que-procura caminho/para/pasta

grep -i aluno arq-poema.txt /home/Downloads/EstudoEmDown

grep "frase que procuro em minusculas" -r /home/seu-usuario-whoami/nome-da-pasta-onde-esta-o-arquivo/ (Procurar uma frase em todos os arquivos de um diretório)

.

Executo:

grep -r teus arq-poema.txt

.

Exemplo:

grep -i "frase que procuro em minusculas" -r /home/seu-usuario-whoami/nome-da-pasta-onde-esta-o-arquivo/

.

Executo:

grep -i "Mas se a luz dos olhos teus" -r

.

Executo:

1) echo -e 'Linux [ Unix babig O linux descer Unix\nbaleix # nunix festa mais menos cat \nFESTA MAIS MENOS escritor beba barrigudas \nbibliotecas resolvem Carl catia do decolar big bebig teus \nLinux faça não Aluno8 Carlos tempestades \nbeira # cet Charles GNU Mariana Descer nano \ngedit sonda NaNo GediT servo.linux.vibrador Certo { unix \ncitatel Decolar bibig cit universo GNU festa Unix\ncetico mais O dia mercenario jobs linux gnu ALUNO8 teus menos Circo \nLinux Unix bin no } desalmado do linux bebe ALUNO8 no jobs \nbiBliOtecAs ] Sonda navE Unix sonda nave O Unix' > arq-grep-palavras.txt ; clear ; cat -n arq-grep-palavras.txt

2) grep -lr "nano"

3) grep -Lr "universo"

4) grep -r --color=always "teus"

5) grep "tempestades" arq-grep-palavras.txt

6) grep -E "unix|nave" arq-grep-palavras.txt (grep -E procura por todas em qualquer lugar)

7) grep -E --color=always "unix|nave" arq-grep-palavras.txt

#

OBS:
Para procurar em um arquivo as linhas que contenham uma palavra OU outra palavra deve estar com o terminal aberto onde está o arquivo que contém a palavra.

Exemplo:

egrep '(palavra_um|palavra2)' nome-do-arquivo

.

Executo:

egrep '(olhos|luz)' arq-poema.txt

egrep '(mais|nave)' arq-grep-palavras.txt

egrep '(imortal|arcano)' arq_marciano.txt

clear

.

COMANDO FGREP:

.

"O fgrep retorna as ocorrências de palavras simples na linha de comando."

.

Executo:

1) fgrep "universo" arq-grep-palavras.txt

2) fgrep -i "nano" arq-grep-palavras.txt

3) fgrep -c "nano" arq-grep-palavras.txt

4) fgrep -n "sonda" arq-grep-palavras.txt

5) clear

.

COMANDO EGREP:

"O egrep, por padrão, reconhece e utiliza expressões regulares simples e estendidas."

.

Executo:

1) egrep "mais" arq-grep-palavras.txt

2) egrep -i "nano" arq-grep-palavras.txt

3) egrep -c "menos" arq-grep-palavras.txt

4) egrep -n "universo" arq-grep-palavras.txt

5) clear

6) egrep descer arq-grep-palavras.txt

7) egrep "[Dd]escer" arq-grep-palavras.txt

8) egrep "c[aei]t" arq-grep-palavras.txt

egrep "c[a-i]t" arq-grep-palavras.txt

9) egrep "C[a-v]" arq-grep-palavras.txt

10) egrep "^Linux" arq-grep-palavras.txt (tudo que começar com Linux)

11) egrep -v "^Linux" arq-grep-palavras.txt

12) egrep "Unix$" arq-grep-palavras.txt

egrep " $" arq-grep-palavras.txt (procura linhas que tem espaço no final)

13) egrep "[a-i]g*" arq-grep-palavras.txt

14) egrep "b[a-i]g*" arq-grep-palavras.txt

15) egrep "b[a-i]g+" arq-grep-palavras.txt (o caracter anterior tem que aparecer pelo menos uma vez)

15) egrep "b[a-i]g?" arq-grep-palavras.txt (caractere anterior nenhuma ou apenas uma vez)

16) egrep "O.Unix" arq-grep-palavras.txt

egrep "O.linux" arq-grep-palavras.txt

17) egrep "O.*linux" arq-grep-palavras.txt

18) egrep "[Ll]inux" arq-grep-palavras.txt

19) egrep "[Ll]inux." arq-grep-palavras.txt

19) egrep "[Ll]inux\." arq-grep-palavras.txt

20) egrep "\[Ll\]inux\." arq-grep-palavras.txt

21) sed '/^#/d' arq-grep-palavras.txt

sed '/^Linux/d' arq-grep-palavras.txt

22) sed 's/[Ll]inux/Unix/g' arq-grep-palavras.txt

#

O COMANDO FIND:

"find (Localiza arquivo por suas características)"

.

Exemplos:

find ./ (exibe os arquivos existentes na pasta onde está)

find -name "palavra-termo-de-busca"

find -iname "palavra-termo-de-busca"

.

Exemplo:

find -name nome-do-arquivo -exec rm {} \; (Executa o comando cmd .

A finalidade do comando é considerada encerrada quando um ponto e vírgula (;) é encontrado. A cadeia {} é substituída pelo nome de cada arquivo que satisfaz ao critério de pesquisa e a linha assim formada é executada. Assim como foi dito para a opção - name, o ponto e vírgula (;)deve ter antes uma contrabarra, ou deve estar entre aspas ou apóstrofos)

.

Executo (faço o teste pelo terminal):

touch 01-arquivo.txt

ls -t

find -name 01-arquivo.txt -exec rm {} \;

ls -t

.

Executo:

> 01-arqvo.txt

echo 'Locate, Find, Estudo, Linux, pipe, casar, anos, Casar, Zuenir, Xerox, Caesar, caesar, Aluno5, um' > 01-arqvo.txt

cat 01-arqvo.txt

find 01-arqvo.txt

.

"O find é para realizar buscas por arquivos e diretórios, mas também, através da utilização de diversos parâmetros adicionais, serve para realizar outras operações, em conjunto."

.

Executo os comandos abaixo:

.

1)

cd ; mkdir ~/Downloads/EstudoEmDown/

2)

cd ; mkdir ~/Downloads/EstudoEmDown/pasta-find/ ; cd ~/Downloads/EstudoEmDown/pasta-find/ ; echo -ne 'amore \njuros \nencontrar \nbola \nbibliOteCAs \nalunos6 \nescritor \nAlunos6 \nfalantes \nmarina \nluz \nCharles \nalto \nfeira \nescritor \nMoreira \nZuenir \nfaça \nolhos \nescada \nluz \nhomem \nfalantes \nfaça \nesfinge \nporta \nEscada \nmartelo \nAluno6 \nescritor \ncasar \nvulcano \nalto \nporta \nMariana \nfeira \nmarina \nmarina \nAluNos6 \nalto \nLuz \nisto \nescritor \nfeira \nporta \nFeira \nEsfinge \nporta \nPorta \nluz \nmoreira \ncasar \nAna \nCharles \nana \ncharles \nbibliotecas \nMartelo \nAlto \nFeira \nhomem \nEsfinge \nOlhos \nMartelo \namor' > arq-find.txt

.

Executo:

1) find . -name "arq-find.txt"
2) find ~/Downloads/EstudoEmDown/pasta-find/ "arq-find.txt"
3) find . -iname "aRq-fInD.txt"
4) find . -iname "aRq-fInD.txt" -exec ls -lt {} \;
5) find . -iname Arq-FiNd.txt -print0 | xargs -0 ls -til
6) find . -name "*.txt" -print0 | xargs -0 grep -Hin "amor" {} \;
7) find . -name "*.txt" -print0 | xargs -0 grep -Hin "Esfinge" {} \;
8) find . -name "*.txt" -mtime -2 -exec grep -Hin --color=always "ana" {} \;
9) find . -name "*.txt" -mtime -2 -exec grep -Hin --color=always "escada" {} \;
10) find . -name "*.txt" -mtime -2 -exec grep -Hin --color=always "arcano" {} \;
11) find . -name "*.txt" -mtime -2 -exec grep -Hin --color=always "luz" {} \;
12) find . -name "*.txt" -mtime -2 -exec grep -Hin --color=always "marciano" {} \;
13) find . -name "*.txt" -exec grep -l "faça" {} \;
14) ls -tli ~/Downloads/EstudoEmDown/pasta-find
15) find . -type f -print0 | xargs -0 ls -l
16) find . -maxdepth 1 -print0 | xargs -0 ls -l
17) find . -maxdepth 1 -type f -exec ls -l {} \; | less

.

OBS:
Aperto a tecla Q

.

18) find ~/Downloads/ mais

.

OBS:
Executar o comando 19 com cautela/cuidado.

.

19) find . -maxdepth 1 -type f -exec rm -f {} \;

20) find ~/Downloads -type f -atime -5 (Procura arquivos acessados há mais de 5 horas.

.

COMANDO BASENAME:

.

basename nome-do-arquivo (Devolve o nome de um arquivo recebendo o caminho completo)

Exemplo:

~ $basename Documentos/
Documentos

.

COMANDO DIRNAME:

dirname nome-do-diretório (Devolve o nome do diretório recebendo o caminho completo)

.

Executo:

> nome-do-arquivo.extensão (Cria arquivo vazio)

touch nome-do-arquivo.extensão1 nome-do-arquivo2.extensão (Cria um ou mais arquivos vazios)

cat nome-do-arquivo.extensão > nome-do-arquivo.extensão (Cria arquivo)

ls -alit

ls -l

cat nome-do-arquivo.extensão

cd ~

pwd

cd -

pwd

.

Executo:

echo -e 'Linux Olhar nada Faça Tudo Nada\n nada isso isto perfil luz \nUnix Festa Sonia amos Nada \ntudo Carlos martelo nada tordos \npoente perfil Aluno1 Maria nada \nluz Sonia Tudor nada Charles \nlinux UNIX unix LINUX nada \nhomem escada tambem lá estava nada' > arq-faz-de-conta.sh

cat arq-faz-de-conta.sh

.

REPETINDO:

1) cd - Navegando entre pastas/diretórios

2) cd . (pasta atual)

3) cd .. (pasta anterior)

4) cd ~ (pasta home do usuário)

5) cd - (última pasta)

.

COMANDO LS

ls - Lista arquivos e pastas

.

ls [opções] [arquivo/diretório/pasta]

.

Executo:

ls -l

.

ls -t

.

ls *.txt

(asterisco representa qualquer coisa ligada a .txt)

.

ls *.sh

(asterisco representa qualquer coisa ligada a .sh)

.

ls -lat

.

ls -lah

.

ls ?????????.txt (procura arquivos .txt com 9 caracteres)

(o ponto de interrogação substitui um e somente um caractere)

.

ls ????*.sh

.

ls [at]*.mp3

(listar todos os arquivos começados por a ou t, seguido por qualquer coisa * e terminados por .mp3).

.

Exemplo:

$ls [at]*.mp3
alcione_ne_me_quitte_pas.mp3 alex_cohen_quem_de_nos_dois.mp3
alex_cohen_hotel_california.mp3

.

Executo:

1) ls [ap]*.txt

2) ls [b-f]*.txt

3) ls [a-z]*.txt

.

CP - COPIA ARQUIVOS E DIRETÓRIOS

.

cp [opções]

.

1) Se usar:

cp -i

.

É o modo interativo. Talvez uso se não tenho certeza de que o arquivo foi copiado previamente, pois copiar novamente sobrescreve o arquivo copiado e posso perder alguma coisa...

.

2) Se usar:

cp -v

.

Mostra o que está copiando

.

Executo:

cp -v arq-faz-de-conta.sh arq-faz-de-conta-backup.sh

ls1

.

3) Se usar:

cp -r

.

Copia recursivamente arquivos pastas e subpastas

.

COMANDO: MV

mv - MOVER ARQUIVOS E PASTAS/DIRETÓRIOS

.

É usado para renomear arquivos, é quase o mesmo que copiar o arquivo origem para o arquivo destino e depois remover o arquivo origem. As opções do mv são parecidas com as do comando cp.

.

Se eu crio o arquivo-teste.txt pelo terminal com o comando touch e escrevo algo nele com o comando echo redirecionando a saída do echo para o arquivo-teste.txt, depois leio o que escrevi com o comando cat eu posso copia-lo para o 2arquivo-teste-novo.txt com o comando mv.

.

EXECUTO COPIANDO E COLANDO OS COMANDOS ABAIXO UM DE CADA VEZ:

.

echo -e '\nOlá!\nTudo\nFirme?' >> 05-arq.txt

echo -e '2-Olá!\n2-Tudo\n2-Firme?\n' >> 05-arq.txt

echo "Aprendendo Linux !" >> 05-arq.txt

echo -e '\nOs dedos dormentes !\n \nOs olhos vermelhos !\n' >> 05-arq.txt

echo -e '\nTodos esses que aí estão \nAtravandando meu caminho, \nEles passarão... \nEu passarinho! \n \n-- Mario Quintana \n' > parq-passarinho.txt

ls -tl1

cat 05-arq.txt

cat parq-passarinho.txt

cat -n 05-arq.txt

cat -n parq-passarinho.txt

touch arquivo-teste.txt

ls -li

ls -t1

find -iname 05-arq.txt

find ./* -type f -exec grep -l Tudo {} \; (Este busca textos ou strings dentro de arquivos)

find ./* -type f -exec grep -l passarinho {} \;

echo 'Aprendendo Linux !' >> arquivo-teste.txt

cat -n arquivo-teste.txt

echo 'Estou Aprendendo Linux ! Nós Estamos Aprendendo Linux ! Tudo Linux ! passaro Linux tudo' > arquivo-teste.txt

find ./* -type f -exec grep -l Linux {} \;

grep "Linux" -r ./

find /home -size +100k

grep luz arq-poema.txt

egrep "faça" -r ./

egrep "faça" -r ?*.txt

find ./* -size +100k

find ./* -type f -exec grep -l faça {} \;

grep "Tudo" -r ./

egrep "passarinho" -r ./

find ./* -size +20k

fgrep "Linux" -r ./

echo 'Aprender Linux é Divertido !' >> arquivo-teste.txt

clear

cat arquivo-teste.txt

find -name "arq*"

find -iname "arq*"

find *.txt

find *.txtt

find /home -size -1G

find ./* -size -1G

find ./* -size -190k

mv arquivo-teste.txt 2arquivo-teste-novo.txt

ls1

ls2

ls3

ls0

clear

ls -R

ls -li

ls -t

cat 2arquivo-teste-novo.txt

find -name 2arq*

find -iname "2arq*"

find ./* -type f -exec grep -l Divertido {} \;

find /home -size +2G (encontrar arquivos pelo tamanho)

find /home/* -mtime 30

whoami

find /home/user-whoami -mtime 15 (encontrar arquivo modificado nos últimos 15 dias)

cd ..

find . -mtime 2

find . -size +2048 -print

find . -size +2M -print (procura arquivos maiores que 2048 que é igual a 2 megabytes)

find . -atime +3 -print | head (procura no diretório corrente arquivos que não foram acessados a mais de 3 dias )

find . -iname "*.jpg" | wc -l

cd -

.

MAIS COMANDOS...

Por exemplo, o comando mv é útil quando eu tenho um arquivo que vou refazer mas quero guardar o arquivo antigo como base para o novo arquivo.

.

O comando mv pode mover o 2arquivo-teste-novo.txt para a pasta Downloads.

.

Executo os comandos abaixo:

cd

ls -li

ls -t

pwd

mv 2arquivo-teste-novo.txt Downloads/

cd ..

pwd

ls -li

ls -t

cat 2arquivo-teste-novo.txt

find -name "2arq*"

find *.txt

cd -

cd Downloads/EstudoEmDown/

ls1

.

OBS:
Agora renomeio o 2arquivo-teste-novo.txt para 3arquivo-teste-velho.txt:

.

mv 2arquivo-teste-novo.txt 3arquivo-teste-velho.txt

cat 3arquivo-teste-velho.txt

find -name "3ar*"

.

CONTINUO EXECUTANDO UM COMANDO DE CADA VEZ.

.

pwd

ls -t

mv -b 3arquivo-teste-velho.txt 3arquivo-teste-back.txt

ls -t

pwd

cat 3arquivo-teste-back.txt

mv -i 3arquivo-teste-back.txt 4arquivo-teste-velho.txt

ls -t

pwd

cat -n 4arquivo-teste-velho.txt

find -name "4arq*"

find *.txt

find -iname "4arq*" -exec rm {} \;

ls -t

find *.txt

.

LN - ESTABELECE LIGAÇÕES ENTRE ARQUIVOS

.

ln [-s]

.

O comando ln cria ligações (links).

.

Existem dois tipos de ligações:

HARD LINK E LINK SIMBÓLICO.

.

Hard Link: neste caso, os dois compartilham os dados. Se apagar o arquivo original o hardlink permanece funcionando. Somente é possível fazer hardlink em arquivos que estejam em uma mesma partição de disco. Somente o usuário proprietário do sistema pode criar/desfazer hardlinks.

.

Executo:

> arq3-test.txt

ls -t

ln arq3-test.txt arq3-hard-link

ls -lit (veja se possuem o mesmo número Inode e o mesmo device)

echo '1-Aprendendo sobre hard link.' >> arq3-test.txt

cat arq3-hard-link

echo '2-Mais uma linha escrita: Aprendendo sobre hard link.' >> arq3-hard-link

ls -lit

cat arq3-test.txt

rm -f arq3-test.txt

ls -lit

cat arq3-hard-link

.

Link Simbólico é somente o caminho do
arquivo-origem. Diferente do hard link pode-se fazer links simbólicos em arquivos e pastas. Nenhum dos dois precisam estar na mesma partição de disco.

.

Uso mais Link Simbólico. Para entender vou criar links. Executo os comandos abaixo um de cada vez.

.

Ex:

touch arq4-test.txt

ls -t

ln -s arq4-test.txt arq4-link-simb

ls -tli

echo 'Aprendendo sobre link simbolico.' >> arq4-link-simb

cat arq4-test.txt

ls -t

rm -f arq4-test.txt (Este é o arquivo origem)

cat arq4-link-simb

ls -t

rm arq4-link-simb

.

Comandos que leem da entrada padrão (stdin/teclado) e escrevem na saída padrão (stdout/monitor de vídeo). O propósito destes filtros quase sempre é o de modificar a saída de outros, por isso, geralmente são utilizados em combinação com mais comandos. Exemplo:

1) cat
2) wc
3) sort
4) head
5) tail

.

1) cat (Exibe conteúdo de arquivos)

2) wc (Conta caracteres, palavras e/ou linhas de arquivos)

3) sort (Ordena o conteúdo de arquivos)

4) head (Exibe o início dos arquivos)

5) tail (Exibe o final dos arquivos)

.

Os comandos/filtros acima se não forem direcionados para um arquivo, irão aparecer na tela do terminal.

.

APRENDENDO SHELL SCRIPT - COMANDOS MAIS USADOS DO SHELLSCRIPT

.

SOBRE O COMANDOS MAIS USADOS DO SHELLSCRIPT:

É para iniciantes. Pretende oferecer o máximo de informação possível em pouco tempo, para que a pessoa ao terminar de EXECUTAR este artigo entenda bastante coisa sobre shell script e seja capaz de criar scripts úteis para si mesma. Desde o primeiro artigo eu editei ele umas oito ou nove vezes. Para mim este ficou mais interessante. Longe de ser perfeito, peço que faça vista grossa a erros de digitação ou definições ligeiramente incoerentes. O negócio é que este artigo é realmente útil para mim e espero que seja útil para você também. A maior parte deste artigo é pesquisa, mas alguns pedaços foram reescritos.

.

Não esqueça de dar intervalos em seus estudos para se esticar, hidratar, etc.

.

SABE POR QUE?

Porque depois de executar alguns trechos deste artigo a ficha cai, a pessoa fica animada e não quer parar (tipo eu).

.

VAMOS LÁ?

.

Qual é o seu usuário?
Se você esqueceu ou não tem certeza qual é o seu usuário, use o comando "whoami" sem aspas, para saber.
Abra o terminal pelo menu do sistema. Não mude de terminal, eu recomendo.

.

DIGito ESTES COMANDOS ABAIXO UM DE CADA VEZ:

.

apropos shell

whereis bash

whatis bash

echo $SHELL

echo $$

clear

echo

echo ''

echo ""

echo "Olá!"

printf 'Bem vindo ao bash!' (Aperte a tecla enter e digito: ls)

echo '#!/bin/bash'

echo "#!/bin/bash"

ls -t

ls -a

echo ; echo "Olá!" ; echo

echo -e 'Bom\nDia\nMundo!'

echo -e "Bom\nDia\nMundo!"

echo -e "\nBom\nDia\nMundo! \n"

echo "Hello world!"

echo "Hello "world"!"

echo "Hello \"world\"!"

echo "Alô \"Mundo\"!"

echo -e "1\t2\t3"

echo -e '1\t2\t3'

echo -e '1\t\v2\t\v3'

echo -e "Nós\tVós\tEles(as)"

echo -e 'Olá\t\vMundo\t\vLinux'

echo -e 'Olá\t\vMundo\t\vLinux\t\vpassarinho\t\volhos'

echo -e 'Olá\t\vMundo\t\vLinux\t\vpassarinho\t\volhos' >> test.txt

cat test.txt

echo -e 'Nós\tVós\tEles(as)'

printf "Hello world" (Aperto a tecla enter e digito: df -h)

pwd

clear

ls -tali

sleep 7

echo ; echo 'Olá!' ; sleep 3 ; ls -t

free -h -t

free -th

sleep 4

date

date -d "yesterday"

date -d "2 days ago"

date +%d

date +%m

date +%Y

date +"%d/%m/%Y"

cal

du -h

du -hc

clear

du -hcs

du -lhs ~/Downloads

du -lsh ~/Imagens

du -lsh ~/Vídeos

uptime

uname -a

free -tmlh

whatis df

df -a -h

df -k -l

df -T -m

whatis history

history

echo ; whoami ; echo

ls ; echo ; pwd ; echo

echo ; ls -at ; echo

echo "sou \n um \n texto"

echo -e "sou \n\v um \n\v texto"

echo -e "\nsou \n\t\v um \n\t\v texto\n"

whatis du

du *

.

OBS:
O comando "du" é utilizado para saber o espaço utilizado em disco, por pastas ou arquivos, de maneira rápida e fácil, diretamente no terminal.

.

du -h *

ls -lah

ls -li

du * | ls -lah

du -hcs

du -ach

clear

du * | ls -t | df -h

lsb_release

lsb_release -a

whatis cat

cat /etc/hostname

cat -n /etc/hostname

cd ..

pwd

cd -

ls -t ; w

VARIAVEL1 = Valor

echo $VARIAVEL1

VARIAVEL1=Valor

echo $VARIAVEL1

VARIAVEL2 = linux comandos shell script

echo $VARIAVEL2

VARIAVEL2= "linux comandos shell script"

echo $VARIAVEL2

VARIAVEL2 ="linux comandos shell script"

echo $VARIAVEL2

VARIAVEL2="linux comandos shell script"

echo $VARIAVEL2

echo $$ (mostra o pid da seção atual)

ps aux |grep bash

VARIAVEL="Meu diretório atual é o `pwd`"

echo $VARIAVEL

VARIAVEL="Este diretório contem: `ls -t`"

echo $VARIAVEL

VARIAVEL="Hoje é: `d`"

echo $VARIAVEL

unset VARIAVEL

echo $VARIAVEL

ls

cd -

pwd

ls

clear

echo ; echo 'df: Relata o espaço de disco usado pelo sistema (Usado e Livre)' ; echo ; df -h ; echo

ls -hat

echo ; echo "du: Relata o espaço utilizado no disco de tal arquivo ou diretório" ; echo ; du -hcs ; echo

echo ; echo 'env (Este comando oferece uma lista de variáveis. Entre elas PWD, USER, SESSION_MANAGER e LANG)' ; sleep 4 ; echo ; env ; echo

clear

echo $PWD

echo ${PWD}

echo $USER

echo "Eu estou logado como usuário $USER"

echo $SESSION_MANAGER

echo ${SESSION_MANAGER}

echo $LANG

VALOR="Linux"

echo $VALOR

echo ${VALOR}

echo $VALOR $VALOR

echo ${VALOR} ${VALOR}

VALOR='ls -t'

$VALOR

${VALOR}

VALOR='history'

echo $VALOR

$VALOR

echo ${VALOR}

${VALOR}

unset VALOR

VALOR=$(cat /etc/hostname)

echo $VALOR

$VALOR

clear

VALOR='free -h -t'

$VALOR

${VALOR}

echo $VALOR

echo ${VALOR}

echo VALOR

echo -e '\nSaiba que ao usar o comando read VALOR\n \n(Aperte a tecla enter, digito: "ls" sem aspas e aperte enter.)\n \nDepois execute $VALOR\n \nVamos ver isto logo abaixo:\n'

read VALOR

$VALOR

${VALOR}

read VALOR

.

OBS: Aperto a tecla enter, digito: "uptime" sem aspas e aperte enter.

.

echo $VALOR

$VALOR

${VALOR}

echo "Entre com o valor para a variável: " ; read VARIAVEL

$VARIAVEL

unset VARIAVEL

VALOR='du -hcs'

echo ; $VALOR ; echo ; $VALOR ; echo

echo ; $VALOR ; sleep 4 ; echo ; $VALOR ; echo

echo ; ${VALOR} ; sleep 4 ; echo ; ${VALOR} ; echo

clear

unset VALOR

echo ; $VALOR

$VALOR

${VALOR}

echo ; ${VALOR}

VALOR='lsb_release -a'

$VALOR

VALOR=$(lsb_release -a)

echo $VALOR

echo -e '\nOlá!\nVamos \nSaber \nOs \nComandos \ndo \nShellscript \nLinux!'

clear ; echo -e '\n \nOlá!\n \nVamos\n \nSaber\n \nOs\n \nComandos\n \ndo\n \nShellscript Linux!\n'

HOJE=$(lsblk)

echo "Informação sobre dispositivos de bloco: $HOJE"

echo "Informação sobre dispositivos de bloco: ${HOJE}"

HOJE=$(cal)

echo "Informação sobre o calendário atual: $HOJE"

HOJE=$(uptime)

echo "Informação sobre tempo de funcionamento desta máquina: $HOJE"

clear

HOJE=$(lsblk)

echo 'Informação sobre dispositivos de bloco: $HOJE'

echo 'Informação sobre dispositivos de bloco: ${HOJE}'

unset HOJE

echo $HOJE

echo ${HOJE}

echo `expr 3 + 2`

echo $((3+2))

echo `expr 9 + 4`

echo $((9+4))

echo $((2*3))

echo 'dois vezes três é:' $((2*3))

echo $((2*4-2/2+3))

VALOR=44

echo $VALOR

echo $((VALOR*1))

echo $((VALOR*2))

echo $((VALOR*3))

echo $VALOR

VALOR=$((VALOR+1))

echo $VALOR

VALOR=$((VALOR+11))

echo $VALOR

VALOR=$((VALOR+1))

echo $VALOR

VALOR=$((VALOR+11))

echo $VALOR

unset VALOR

echo $VALOR

VALOR="echo -e \nBom\nDia\nMundo\nLinux\n"

$VALOR

echo $VALOR

echo ${VALOR}

VALOR=$(uname -a)

echo $VALOR

HOJE=$(arch)

echo $HOJE

clear

VALOR=$(uname -a) ; echo ; echo "Informação sobre o kernel: $VALOR" ; sleep 4 ; echo ; VALOR=$(arch) ; echo "Informação sobre a arquitetura do sistema: $USER" ; echo ; sleep 2

unset VALOR

unset HOJE

clear

printf "%-5s %-10s %-4s\n" No Nome Pontos

printf "%-5s %-10s %-4.2f\n" 1 Marta 8

printf "%-5s %-10s %-4.2f\n" 2 Joel 9

printf "%-5s %-10s %-4.2f\n" 3 Carlos 7

echo -e "\e[1;31m Este é o texto em vermelho \e[0m"

echo -e "\e[1;32m Este é o texto em verde \e[0m"

echo -e "\e[1;32m Este é o \e[1;34mtexto \e[1;31mmisturado \e[0m"

VALOR="echo -e \e[1;31m\nBom\nDia\nMundo\nLinux\n\e[0m"

$VALOR

echo $VALOR

echo ${VALOR}

unset VALOR

$VALOR

echo $VALOR

unset HOJE

echo $HOJE

STRING="Isso é |=_=_=| uma | =_=_=> StrinG"

echo ; echo 'Quer saber o que é uma string?' ; echo ; echo $STRING ; echo

unset STRING

cd

pwd

cd ~/Downloads

cd ~/Downloads/EstudoEmDown

pwd

clear

exit

.

Muito bom que digitamos um comando de cada vez.

Os comandos mais longos pode copiar e colar no terminal se quiser, mas no início seria melhor digitar.

Saiba que a partir deste momento você já está entendendo coisas extremamente úteis para escrever shellscript usando o Bash!

Uma coisa interessante sobre a maior parte dos comandos acima, é que para estudar eles, você não precisa estar conectado a internet.

Os comandos acima oferecem informações interessantes e úteis. Podemos colocar todos eles em um só script e executar. Dependendo do caso, é mais fácil que digitar um a um de cada vez toda vez que precisar.

.

SE PUDER, ANTES DE CONTINUAR EXECUTE OS COMANDOS ACIMA QUE TE CHAMARAM MAIS A ATENÇÃO DE NOVO POIS, EXECUTAR ELES É MUITO DIDÁTICO. NADA MELHOR QUE APRENDER PRATICANDO.

.

ALGUMAS DICAS ÚTEIS QUE SERÃO REPETIDAS DURANTE O CAMINHO (Vou repetir muitas coisas):

.

1)

Não execute shell script como root.

.

2)

O shell script Linux usando o interpretador de comandos Bash começa com o shebang:

#!/bin/bash

.

3)

Abro um editor de texto e colo nele o script salvando com um nome que termine com extensão .sh

.

4)

Dar permissão para executar o script pode ser só para você ou para todos usarem:

chmod +x MeuScript.sh (só você)
chmod a+x MeuScript.sh (todos os usuários do PC)

.

OBS:
Para remover a permissão de um shell script:

1) chmod -x MeuScript.sh
2) chmod a-x MeuScript.sh

.

UM SCRIPT PODE SER EXECUTADO DE 3 MODOS:

1) bash MeuScript.sh
2) sh MeuScript.sh
3) ./MeuScript.sh

.

Exemplo para começar bem. Copio e colo o código abaixo no terminal que você vai abrir pelo MENU DO SISTEMA:

.

echo -e '#!/bin/bash \nclear \necho \necho Olá usuário Linux! \nsleep 2 \necho \necho Olá Mundo! \nsleep 2 \necho \nVALOR=GNU/Linux \nVALOR2=whoami \necho Você quer aprender comandos $VALOR? \nsleep 2\necho \necho Então vamos aprender comandos $VALOR!\nsleep 2 \necho \necho Vamos aprender Shell Script!\nsleep 2\necho\necho 'Até Breve usuário Linux:' ; sleep 2 ; echo ; $VALOR2\necho\nsleep 2\nexit' > 03-olauser.sh ; chmod +x 03-olauser.sh ; bash 03-olauser.sh

.

Para remover o script criado pelo código acima, o arquivo 03-olauser.sh, use o mouse e o gerenciador de arquivos ou copio e colo o comando abaixo no mesmo terminal onde executou o código:

.

clear ; unset VALOR ; sleep 2 ; rm -f 03-olauser.sh ; sleep 2 ; ls -t ; sleep 3 ; exit

.

CRIAR, TRABALHAR E SALVAR ARQUIVO NO VIM (Atualizado)

.

Questões de diversos concursos estão ligadas ao Vim. Exames para obter certificações Linux vão pedir conhecimento sobre ele então é bom procurar saber alguma coisa.

.

O Vim é um bicho brabo. Tudo é pelo teclado. O Vim usa todas as teclas do teclado para comandos e quando acabam-se as minúsculas ele usa comandos em letras maiúsculas. Para mim o Vim não é para usuários comuns (EU) e sim para programadores, porém, eu quero e vou saber alguma coisa deste editor de texto. Só usaria diariamente se fosse caso de vida ou morte.

.

Instalo o Vim pelo gerenciador de pacotes da minha Distro.

.

Digito: man vim

.

Por tudo que é mais sagrado! A man page do Vim é vastíssima e toda em inglês e para mim extremamente técnica. Dá para pescar uma coisa aqui e alí, mas o que me ajuda é pesquisar na rede.

.

Longe, longe do aconchego do lar quando se trabalha profissionalmente com shell script e programas, dizem que quase sempre não tem ambiente gráfico para quem administra sistemas. Então há de se acostumar a usar editores de texto que funcionam no terminal. Por exemplo o nano e o Vim. O mais usado pelos profissionais parece que é o Vim então mesmo sendo iniciante, alguns exercícios básicos de como usar o Vim são importantes para mim. Vou pesquisar e fazer isto. Vou tentar aprender a usar o editor de textos Vim.

.

No Vim as teclas mais apertadas por mim são a tecla "Esc" e a tecla "i". A tecla "Esc" faz o editor entrar em modo de comando para poder salvar e se movimentar pelo texto entre outras coisas. A tecla "i" é o modo de inserção onde posso digitar palavras entre outras coisas.

.

Com o Vim eu posso acessar o terminal, apertando Esc e digitando por exemplo:

:!ls -t

:!pwd

:!uptime

Aperto Enter, confiro e aperto Enter voltando ao Vim.

.

Para procurar aperto Esc e digito / depois escrevo a palavra de busca. / procura de cima para baixo para procurar o próximo aperto N.

.

? (procura de baixo para cima.)

.

NO VIM PARECE QUE O ESQUEMA É MAIS OU MENOS ASSIM:

.

Aperto Esc

Para recortar uma linha uso: dd

Para recortar 5 linhas: d5d

Para colar aperto p de paste.

Para copiar y5y depois aperto p para colar.

.

LISTA DE COMANDOS VIM:

1) Inserção (de texto) -> Tecla i

2) Comandos (manipular texto) -> Tecla Esc

3) Linha de comando (manipular arquivo) -> Tecla :

4) Visual (seleção visual de texto) -> Tecla v

5) Busca (busca de padrões de texto) -> Tecla /

6) Reposição (insersão sobrescrevendo) -> Tecla R

7) Sair e salvar - aperto a tecla Esc e digito -> :x (salva e sai)

PARA ABRIR O VIM:

1) vim nome-do-arquivo.sh (se o arquivo não existe, ele cria)

2) vim nome-do-arquivo.txt (abre o arquivo com o cursor no fim do arquivo)

3) vim nome-do-arquivo.sh.txt +9 (abre o arquivo com o cursor na linha 9)

4) vim MeuArquivoVim.txt +/frase (abre o arquivo na primeira vez que tiver a palavra frase)

.

NO TERMINAL DIGITO: vim UmArquivoVim.txt

.

ESCREVENDO NO VIM:

Com o vim aberto, aperto a tecla Esc. Aperto a tecla i. Digito algumas linhas. Exemplo:

.

Uma frase escrevo no editor de texto - Lista de palavras:

Manute mamute Carlos carlos Sonia sonia Letra
luz olhos não maria Maria joão João isto
Unix Carlos Aluno4 kernel GNU/Linux
Unix GNU/Linux Kernel Linux
Unix olhos Kernel luz
.

SAIO E SALVO:

Aperto Esc, digito ZZ (maiúsculo)

.

Volto ao Vim com o comando: vim nome-do-arquivo.txt

.

VIM: COPIAR/COLAR
1) Aperto ESC
2) Posiciono o cursor no início do texto que quero copiar
3) Digito v minúsculo
Usando as teclas de direção, marco o texto a ser copiado
4) Digito y minúsculo
5) Posiciono o cursor no ponto onde desejo colar o texto
6) Digito p minúsculo

.

VIM: RECORTAR/COLAR
1) ESC
2) Posicione o cursor no início do texto que quer recortar
3) Digite v minúsculo
4) Usando as teclas de direção, marque o texto a ser recortado
5) Digite d minúsculo
6) Posicione o cursor no ponto onde deseja colar o texto
7) Digite p minúsculo

.

PARA ABRIR VÁRIOS ARQUIVOS (janelas horizontais):

Exemplo:

vim -o arqu1.txt Arquiv2.txt arq-teste3.txt texto-teste4.txt

.

PARA ABRIR VÁRIOS ARQUIVOS (janelas verticais):

Exemplo:

vim -O arqu1.txt Arquiv2.txt arq-teste3.txt texto-teste4.txt

.

PARA TROCAR DE JANELAS APERTO AS TECLAS:

1) Esc

2) Ctrl ww

.

No editor de texto Vim quase tudo é feito apenas usando o teclado. Porem pode por exemplo copiar um texto selecionado com o mouse e colar no Vim. Então devo aprender a apertar teclas para fazer as coisas no Vim.

.

APERTANDO TECLAS:

.

i (Modo de Inserção)

No modo de inserção (Esc a) começo a digitar a partidor do local onde o cursor está.

No modo de inserção (Esc o) começo a digitar numa linha abaixo do cursor.

No modo de inserção (Esc r) começo a digitar sobrescrevendo.

Esc (Modo de Comandos)

Esc h (Vai para esquerda)

Esc j (Desce)

Esc k (Sobe)

Esc l (Vai para a direita)

Esc :wq (salva e sai)

Esc :x (salva e sai)

Esc ZZ (zalva e zai)

Esq :q! (sai mesmo que não tenha salvo)

Esc qa (fecha todos os arquivos que não foram alterados)

Esc :q (sai sem ligar se salvou, modificou ou não)

Esc :wqa (salva e sai de todos os arquivos que estiverem abertos)

Esc :W (salva o que foi escrito)

Esq :set autowrite (salva a cada operação feita)

Esc :set aw (salva a cada operação feita)

Esc :wa (salva todos os arquivos que estiverem abertos)

Esc :syntax on (Deixa o script colorido)

.

Executo este exercício no meu terminal abrindo ele pelo Menu do meu sistema:

.

Para entrar em MeuArquivoVim.txt em pasta-estudo-vim:

cd

cd Downloads/EstudoEmDown/

mkdir pasta-estudo-vim

cd pasta-estudo-vim/

touch MeuArquivoVim.txt

ls -t

vim MeuArquivoVim.txt

.

Para entrar em modo de inserção teclo:

i

.

Digito frases... Frases...

Mais frases....

La la la la la

Ba ba ba Ba Ba

Pi pi pi pi pi

Duma duma duma duma duma duma

Loba loba loba loba

Longe longe longe longe Longe

frase Frase frase frase Frase frase

Molinete molinete molinete molinete

Otorrino otorrino otorrino otorrino

Rajada Rajada Rajada Rajada Rajada

(Aperto a tecla x, Aperto a tecla Delete)

Escrevo: Pedra pedra pedra pedra

(Aperto Esc)

(Aperto as teclas h, j, k, l)

(Aperto as teclas :w)

(Aperto Enter)

(Aperto a tecla i)

Escrevo: Alguma palavra

(Aperto Esc)

(Aperto as teclas :syntax on)

Se este texto fosse um script, com :syntax on ele ficaria mais colorido.

(Aperto as teclas :set autowrite)

(Aperto Enter)

(Aperto a tecla i)

Escrevo: Mula mula Jaca janela

(Aperto Esc)

(Aperto as teclas :wq)

(Aperto a tecla i)

.

Volto ao modo de comandos teclando:

Esc

.

Salvar e sair:

:wq

.

Digito:

ls -t

du -h

.

Volto ao Vim:

vim MeuArquivoVim.txt

.

Aperto a tecla:

Esc

.

Saio do Vim:

ZZ (zalva e zai) ou:

:q!

.

Digito:

ls -t

pwd

.

Volto ao Vim:

vim MeuArquivoVim.txt

.

Aperto:

Esc

.

Saio do Vim:

:q!

.

Volto ao Vim:

vim MeuArquivoVim.txt

.

Para entrar em modo de inserção teclo:

i

.

Digito mais frases. Umas 6 linhas mais ou menos.

.

Volto ao modo de comandos teclando:

ESC

.

Salvar e sair (ESC + :wq) (ESC + ZZ):

:wq

ZZ (zalva e zai)
.

Listo arquivos e pastas:

ls -t

.

Volto ao arquivo usando o Vim:

vim MeuArquivoVim.txt

.

Volto ao modo de comandos teclando:

ESC

.

Vou para o modo de inserção teclando:

i

.

Aperto as teclas (estou no modo de inserção):

h, j, k, l

.

Aperto a tecla:

ESC

.

Aperto as teclas (estou no modo de comandos):

h, j, k, l

.

Vou para o início do arquivo teclando:

gg

.

Vou para o Final teclando:

G

.

Acesso a linha 8, 5, 1, 13, 15 e 11 digito:

1) 8G
2) 5G
3) 1G
4) 13G
5) 15G
6) 11G

.

Saio do Vim:

:q!

.

Volto ao Vim:

vim MeuArquivoVim.txt

.

Teclo:

ESC

.

Desço:

j

.

Subo:

k

.

Esquerda:

h

.

Direita:

l

.

Procuro pela palavra "frase" digito:

/frase

.

Aperto a tecla:

ESC

.

Aperto a tecla:

a (começa a digitar a direita do cursor)

.

Aperto a tecla:

O (modo de inserção uma linha antes do cursor)

.

yy para copiar a linha atual
yw para copiar a próxima palavra.

.

Se quiser copiar as próximas 3 palavras, tento y3w.
y$ para copiar do ponto atual até o final da linha

.

Depois de copiado, basta mover o cursor para o local, no texto, em que desejo inserir o conteúdo do buffer e teclar p

.

Copiar ou recortar palavras:

1) Esc

2) :

3) yw

4) dw

.

dd recorta a linha (atual) em que o cursor se encontra

.

dw recorta a palavra que se encontra à direita do cursor

.

db recorta a palavra à esquerda

.

3d recorta 3 linhas inteiras

.

O comando p é usado para colar (inserir o conteúdo do buffer no texto).

.

Depois de recortar o que quero, basta posicionar o cursor no ponto em que deseja colar o texto “apagado” e pressionar ‘p’ - para reinserir o conteúdo do buffer.

.

Se quiser, é possível multiplicar a quantidade de vezes em que é reinserido.

.

Tecle ‘5p’, por exemplo, para inserir o conteúdo do buffer 5 vezes.

.

Para selecionar um trecho:

V (para linhas)

v (para caracteres)

Uso: h j k l

Digito p para colar.

.

Para desfazer uma ação:

u

.

Para repetir um comando:

Ctrl+r

.

Buscar:

/palavra

.

Nova ocorrência:

N

.

:e - Abrir um arquivo.

.

Sintaxe

:e /root/teste.sh

.

:sp - Abrir em outra janela.

.

A Sintaxe pode ser :sp somente ou :sp /root/teste.sh

.

:enew - Novo documento.

A sintaxe

:enew

.

:sav - Salvar como.

A sintaxe

: sav nomedoarquivo.txt

.

u - Serve para Desfazer / Refazer.

.

A sintaxe " u " sem aspas, quando voce fizer uma coisa errada

.

. - Serve para repetir.

.

A Sintaxe " . " sem aspas.

.

[p - Serve para colar antes.

.

o comando eh simplesmente [p

.

]p - Server para colar depois.

.

o comando é simplesmente ]p

.

ggVG - Seleciona tudo.

.

"+x - Serve para recortar.

.

A sintaxe é escrita com da forma a cima (Aspa dupla)+(Sinal de mais)+(x).

.

"+y - Serve para colocar .

.

A sintaxe é escrita com da forma a cima (Aspa dupla)

.

+(Sinal de mais)+(y).

.

:wqa - Serve para salvar e sair.

A sintaxe é

:wqa

.

:qa - Serve para sair somente.

.

A sintaxe eh :qa

.

x - Serve para deletar

.

O comando para deletar eh somente " x " sem as aspas.

.

:set hls! - Serve para Ativar / Desativar Realce de padroes

.

REVISANDO:

Para criar um arquivo de texto chamado MeuArquivoVim.txt, cujo conteúdo seria a frase "Teste tutorial criar e salvar arquivo no VIM" faria assim:

.

Executo o comando: vim MeuArquivoVim.txt

.

Agora estou no Vim.

.

Pressiono a tecla: i (para passar do MODO DE COMANDOS para o MODO DE INSERÇÃO)

.

Digito a frase: Teste tutorial criar e salvar arquivo no VIM

Digito a frase:

.

Volto ao modo de comandos apertando a tecla: ESC

.

Digito o símbolo e as 2 letras abaixo:

:wq

.

Pressiono Enter logo em seguida.

.

O comando (:wq) é utilizado para SALVAR (write) o arquivo e SAIR (quit) do Vim.

.

Repito esses passos em meu computador algumas vezes e, ao fim, tenho o arquivo MeuArquivoVim.txt em meu diretório de trabalho.

.

Para listar arquivos e verificar a presença do MeuArquivoVim.txt digito:

ls -tli

.

COMANDOS PRINCIPAIS DO VIM

Agora que aprendi como alternar entre os modos de comando e inserção e já executei o meu primeiro comando (:wq), é hora de aprender mais teclas de atalho e novos comandos. Mas, antes de prosseguir, vale a pena prestar a atenção em dois detalhes importantes.

.

Primeiro, lembro de retornar ao Modo de Comandos pressionando a tecla ESC, caso esteja digitando um texto no Vim.

.

Caso contrário, os comandos desta lista não funcionarão e meu arquivo de texto acabará com sequências do tipo :q! no meio de alguma palavra.

.

Em segundo lugar, noto que o Vim faz uso de quase todas as letras do alfabeto e, na falta de opções, acaba apelando para maiúsculas.

.

Isto quer dizer que os comandos o e O são diferentes.

.

MOVIMENTANDO-SE NO ARQUIVO

.

Com isso em mente, posso começar a movimentar o cursor do Vim entre as linhas e letras de um arquivo de texto.

.

Para isso, pressiono ESC (para sair do modo de inserção, caso esteja nele) e, em seguida, uso as teclas:

h, j, k, l

As teclas (h, j, k, l) movem o cursor para esquerda (h), para baixo (j), para cima (k) e para a direita (l).

.

As setas direcionais também podem ser usadas para esse fim, mas podem não funcionar em qualquer distro ou mapa de teclado.

.

Se quiser me mover para o início do arquivo, digito gg e, quando quiser ir ao final, pressiono G (maiúsculo).

.

Também é possível pular de palavra em palavra com teclas w e b, além de ir diretamente para uma linha em específico. Se quiser acessar a 27ª linha do texto, por exemplo, digito 27G.

.

ABRIR, SALVAR E OUTRAS OPERAÇÕES DE ARQUIVOS

.

Abrir um arquivo de textos com o Vim é simples.

.

Basta informar o caminho e nome do arquivo como parâmetro ao comando vim, quando for executá-lo.

.

Se quisesse abrir o arquivo /etc/passwd, por exemplo, executaria no terminal:

vim /etc/passwd

.

Para sair do editor de textos, digito :q.

.

Se quiser forçar a operação de sair, sem me preocupar com a possibilidade de salvar o arquivo que estava sendo editado, pressiono :q!.

.

Para salvar o arquivo no qual estou trabalhando, uso o comando :w, enquanto que, para salvar e sair, com já visto acima, uso :wq.

.

MUDAR DE MODOS

.

Então pressionar a tecla i faz com que o Vim passe para o Modo de Inserção.

.

Pressionar a tecla ESC retorna para o Modo de Comandos.

.

Porém, é possível fazer um uso mais preciso dessa operação. A tecla i, na verdade, inicia a inserção de texto à esquerda da localização atual do cursor.

.

Se quiser começar a digitar à direita do cursor, pressiono a.

.

Da mesma forma, caso deseje entrar no modo de inserção uma linha antes do cursor, pressiono O, e, se preferir, o para uma linha após o cursor.

.

PESQUISAS E COMANDOS AVANÇADOS

.

Apesar da simplicidade aparente do Vim, o editor permite realizar ações mais complexas.

.

Para começar, posso desfazer a última ação pressionando a tecla u.

.

Caso queira refazer ou repetir um comando, uso Ctrl+r.

.

Se quiser procurar por um termo ou frase no arquivo de texto, digito / seguido da expressão, sem espaço.

.

Para buscar a palavra MeuArquivo, por exemplo, uso /MeuArquivo.

.

Para procurar pela ocorrência seguinte da palavra, após ter realizado a pesquisa, basta pressionar n.

.

Se quiser voltar uma ocorrência, pressiono N.

.

ALGUNS DOS COMANDOS DO VIM NO MODO DE COMANDOS:

0 : mover o cursor para o início da linha em que o cursor está posicionado.

a : inserir texto após a posição atual do cursor.

A : inserir texto no final da linha atual.

dd : deletar linha atual.

[n]+dd : deletar n linhas a partir da linha atual.

G : ir para o fim do arquivo.

[n]+G : ir para a n-ésima linha do arquivo.

h : voltar um caractere.

H : ir para a primeira linha exibida na tela atual.

i : inserir texto a partir da posição atual do cursor.

I : inserir texto no início da linha atual.

j : descer uma linha.

J : juntar a linha atual com a linha seguinte.

[n]+J : juntar n linhas consecutivas a partir da linha atual.

k : subir uma linha.

l : avançar um caractere.

L : ir para a última linha exibida na tela atual.

n : procurar, a partir da posição atual do cursor, a próxima ocorrência do texto definido no último comando /.

N : procurar, a partir da posição atual do cursor e indo em direção ao início do arquivo, a próxima ocorrência do texto definido no último comando /.

o : inserir uma linha em branco após a linha atual.

O : inserir uma linha em branco acima da linha atual.

p : inserir linhas copiadas após a linha atual.

P : inserir linhas copiadas antes da linha atual.

r : substituir o caractere atual.

R : substituir um conjunto de caracteres.

s : deletar o caractere atual e inserir texto.

S : apagar linha e inserir novo texto na linha.

u : desfazer a última alteração feita no texto e ainda não desfeita.

U : desfazer a última alteração feita no texto.

x : apagar caractere onde o cursor está posicionado.

$ : mover o cursor para o fim da linha em que o cursor está posicionado.

[n]+y : copiar n linhas a partir da linha atual.

yy : copiar a linha atual.

[n]+Y : copiar n linhas a partir da linha atual.

YY : copiar a linha atual.

CTRL+B : voltar uma página.

CTRL+F : avançar uma página.

F1 : exibir tela de ajuda.

[n]+ENTER : ir para n linhas abaixo da linha atual.

[n]+. : repetir o último comando que alterou o texto n vezes a partir da posição atual do cursor.

[n]+~+ENTER : inverter a caixa (case) dos n caracteres seguintes ao cursor.

/texto : procurar pela primeira ocorrência do texto especificado a partir da posição atual do cursor.

.

PROGRAMAÇÃO SHELL SCRIPT - REVISANDO COMANDOS BÁSICOS PARA SHELL SCRIPT

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

- Veja só! Execute este pequeno scriptzinho matemático no terminal do seu Linux (execução sequencial de comandos no shell):

cd ; cd Downloads/EstudoEmDown ; echo -e '#!/bin/bash\n x=8 # variável x valor 8\n y=4 # variável y valor 4\n# agora determinamos a soma de x e y para z:\n z=$(($x + $y))\necho\necho "A soma de $x + $y é $z"\necho\n# Fim do soma-scriptzinho.sh' > soma-scriptzinho.sh ; chmod +x soma-scriptzinho.sh ; sh soma-scriptzinho.sh

#

1) Copio e colo estes comandos no terminal do Linux. Será útil para aprender coisas interessantes.

#

2) Criando o local/pastas/arquivos de estudo em Downloads/:

cd ; cd Downloads/EstudoEmDown/ ; mkdir -p estudo-shell-script/arquivos ; cd estudo-shell-script/arquivos/ ; echo -e 'Ana Claudia Bodhi\nAna Claudia Kafka\nAndre Gonçalves\nAntonio Silva\nBento Silva\nCarlos Augusto\nDaniel Sandra\nEliseu Padilha\nFernanda Padilha\nKant Rosa Bela\nHorácio Nunes\nIngrid Damacena\nMaria Antonieto Sousa\nOlimpio Silva\nPaulo Freitas\nRafaela dos Santos\nRoff Silvaciano\nSilvia Oliveira\nZuenir Mello\nXerxes Alvez' > alunos2.txt ; echo -e 'Aluno1\n Aluno2\n Aluno3\n Aluno4\n Aluno1\n Aluno4\n Aluno5\n Aluno6\n Aluno1\n Andre\n Paulo\n Junior \n Daiana\n Fernanda\n Fernanda\n Maria\n Daiana\n Maria\n Maria\n Nunes\n Gonçalo' > alunos.txt

#

3) Criando arquivos para estudo:

echo -e 'Ana Claudia\nAna Claudia Kafka\nAndre Gonçalves\nAntonio Silva\nBento Silva\nCarlos Augusto\nCarlos Roberto \nDaniel Sandra\nEliseu Padilha\nFernanda Padilha \nLucas Carmo \nKant Rosa\nHorácio Nunes\nIngrid Damacena\nMaria Antonieto Sousa\nOlimpio Silva\nPaulo Freitas\nRafaela dos Santos\nRoff Silvaciano\nSilvia Oliveira\nZuenir Mello\nXerxes Alvez' > alunos3.txt ; echo -e 'Aluno1\n Aluno2\n Aluno3\n Aluno4\n Aluno1\n Aluno4\n Aluno5\n Aluno6\n Aluno1\n Andre\n Paulo\n Pamela Castro\n Junior \n Daiana Neres\n Fernanda Dark\n Fernanda Light\n Maria\n Daiana\n Maria\n Maria Fernanda\n Nunes\n Gonçalo' > alunos4.txt

#

4) Copio e colo no terminal (se já não fiz isto). Vai criar um arquivo de texto. Aperte Enter:

echo -e '\nEntão queres ser um escritor? \nSe não sair de ti explodindo apesar de tudo, não o faças. \nA menos que saia sem perguntar do teu coração e da tua cabeça e da tua boca e das tuas entranhas, não o faças. \nSe tens que sentar por horas olhando a tela do teu computador ou curvado sobre a tua máquina de escrever procurando palavras, não o faças. \nSe o fazes por dinheiro ou fama, não o faças. \nSe o fazes porque queres mulheres na tua cama, não o faças. \nSe tens que te sentar e reescrever uma e outra vez, não o faças. \nSe dá trabalho só pensar em fazê-lo, não o faças. \nSe tentas escrever como algum outro escreveu, não o faças. \nSe tens que esperar para que saia de ti a gritar, então espera pacientemente. \nSe nunca sair de ti a gritar, faz outra coisa. \nSe tens que o ler primeiro à tua mulher ou namorada ou namorado ou pais ou a quem quer que seja, não estás pronto. \nNão sejas como muitos escritores, não sejas como milhares de pessoas que se consideram escritores, não sejas estúpido nem enfadonho e pedante, não te consumas com auto-devoção. \nAs bibliotecas de todo o mundo têm bocejado até adormecer com os da tua espécie. \nNão sejas mais um. \nNão o faças. \nA menos que saia da tua alma como um míssil, a menos que o estar parado te leve à loucura ou ao suicídio ou homicídio, não o faças. \nA menos que o sol dentro de ti te esteja a queimar as tripas, não o faças. \nQuando chegar mesmo a altura, e se foste escolhido, vai acontecer por si só e continuará a acontecer até que tu morras ou morra em ti. \nNão há outra forma. \nE nunca houve. \n \n(Charles Bukowski)\n' > charles_texto-escritor.txt

#

5) Executando comandos de revisão:

echo $0

echo $SHELL

tail /etc/passwd

clear

#

6) Sem o software ls não tem o comando ls. Dizem que não existe terminal GNU/Linux sem o ls. Dizem também que sem ele (ls), todos os outros comandos não funcionam bem.

#

EXECUTO NO MEU TERMINAL:

cd ; cd ~/Downloads/EstudoEmDown/

touch estarq1 estarq2 estarq3 estarq12 estarq13

echo "Olá Mundo Linux!" > estarq1 >> estarq2 >> estarq3

touch ESTARQ1 ESTARQ2 ESTARQ3 ESTARQ12 ESTARQ13

echo "Olá estudante GNU/Linux! Linux! Unix!" >> ESTARQ1 >> ESTARQ2 >> ESTARQ3

cat estarq1 ; echo ; cat ESTARQ1

cat estarq2 ; echo ; cat ESTARQ2

cat estarq3 ; echo ; cat ESTARQ3

clear

ls -ltr

ls -R

ls -la estarq[123] (Funciona com outros comandos)

ls -lia estarq[1-3] (Funciona com outros comandos)

ls -la ESTARQ[2]

ls -lia *[12]

ls -l *1

ls -l {ESTARQ,estarq}2 (Funciona com outros comandos)

ls -l {ESTARQ,EsTARQ}3 (Funciona com outros comandos)

ls -l estar*

ls -l estarq1*

ls -l ESTARQ1?

ls -l estarq?

ls -l estarq?? (Funciona com outros comandos)

#

ls -1

ls -l /etc

ls -l /tmp

ls -la /var

ls -l /var/log/

ls -l /var/log/journal/

ls -l /var/log/samba/

ls -lh /var/lightdm

ls -lt /snap/

ls -lht /snap/bin/

ls -ltah /snap/bin/

ls -lit /root

clear

#

ps

#

ps axu

clear

ps -eF

ps -ejH

ps -eLf

ps axZ

clear

#

# ps axu - O que se usa mais no ps? Nome do usuario, pid do processo, consumo de cpu, memoria, horario de execução, nome completo do processo.

#

(colo os comandos abaixo no terminal)

touch arquivo-teste

> arquivo-tester

ls -t

#

echo (Mostra na tela o parâmetro que vc deu)

echo linux shell script

echo O sol de manhã

echo "linux shell script"

clear

echo 'O echo pode ser acompanhado das opções -n (do not output the trailing newline). E da opção -e (enable interpretation of backslash escapes)'

echo -n "linux shell script" (Aperto enter)

# Não vai quebrar a linha por que pode precisar colocar um leitura de variável, então é necessário não quebrar a linha.

echo -e

# Permite usar opções de tabulação.

echo -e "linux\nshell\nscript"

echo -ne "linux\nshell\nscript" (Aperto enter)

echo -e "curso shell\t script" # \t (Tabulação)

echo -ne "curso shell\t script" (Aperto enter)

echo -e "curso\nshell\tscript"

# \n e \t (Quebra de Linha e Tabulação)

echo -ne "curso\nshell\tscript"

echo -e "col1\tcol2\tcol3\t"

echo -ne "col1\tcol2\tcol3\t"

echo -e "\acol1\t\acol2\t\acol3\vcol5\vcol6\vcol7"

echo -ne "\acol1\t\acol2\t\acol3\vcol5\vcol6\vcol7"

echo -e "\acol1\t\acol2\t\acol3\vcol4 vertical\vcol5vertical\vcol6vertical"

echo -ne "\acol1\t\acol2\t\acol3\vcol4 vertical\vcol5vertical\vcol6vertical"

#

mkdir pasta1

ls -tli

mkdir pasta1/sub-pasta1 # Porque a pasta1 já existe.

# Se uma pasta não existe para criar uma sub-pasta adicona a opção -p

mkdir -p pasta2/sub-pasta2

ls pasta2

rm -r pasta2

#

OBS:
rmdir (Só remove pasta vazia)

#

Sito PARA APRENDER/CONSULTAR COMANDOS:

http://explainshell.com/

#

(Digito/Copio e colo)

cat alunos.txt

cat alunos2.txt

cat -b alunos2.txt (numera e ordena de A a Z)

cat --number-nonblank alunos2.txt (numera e ordena de A a Z)

cat -n alunos2.txt

clear

cat --number alunos2.txt

cat -A alunos2.txt

cat --show-all alunos2.txt

cat -vET alunos2.txt

cat -vET charles_texto-escritor.txt

cat /snap/README

clear

#

man tac

tac alunos.txt

tac alunos2.txt

tac -b alunos.txt

tac -r alunos2.txt

#

echo -e 'Mais porem escrevendo todavia \nA forma controversa é literal \nEscapa a fantasia pois \nO reduto da alegoria não \nSe refere a longevida \nInerente a espaço de um objeto concreto \nPercebe-se a listagem: \nLista1 \nLilista \nCiclista \nBravar \nLista2 \nAna Cara \nZarabatana \nArcaido \nCaldo alto \nLuz Ribaltazar \nLista5 \nLista3 \nLista6 \nPossante \nLista7 \nLista8 \nLista9 \nLista10 \nLista11 \nEntretanto \nArquivo longo \nEstende' > arquivolongo.txt

tail arquivolongo.txt

tail -n5 arquivolongo.txt

tail -n7 charles_texto-escritor.txt

tail -4 arquivolongo.txt

tail -n5 alunos2.txt | wc -w

tail /etc/passwd | sort -k3

#

clear

head arquivolongo.txt

head -n5 arquivolongo.txt

head -n1 arquivolongo.txt

head -c10 arquivolongo.txt (aperte a tecla Enter)

#

man wc

whatis wc (cada letra é um byte)

whereis wc

.

O comando wc é utilizado para contar caracteres, palavras e/ou linhas dos dados da entrada padrão e apresenta o resultado na saída padrão.

.

Sintaxe:

Comando + parâmetros + arquivo

Parâmetros:

-l: conta as linhas;
-w: conta as palavras;
-c: conta os caracteres.

.

OBS:
Arquivo de entrada cujas palavras, linhas ou caracteres serão contados e exibidos na saída padrão. Se este parâmetro for omitido, o wc lê da entrada padrão.

.

Exemplo a ser executados:

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

.

wc -l arq_marciano.txt (conta linhas)

wc -w arq_marciano.txt (conta palavras)

wc -c arq_marciano.txt (conta caracteres)

wc -m arq_marciano.txt

wc arq_marciano.txt (não foi especificado nenhum parâmetro, o wc listou tudo caracteres, palavras e linhas).

.

wc alunos.txt

clear

wc alunos2.txt

wc -l alunos2.txt

wc -l alunos2*

wc -l alunos*

wc -n alunos2.txt

clear

wc -w alunos2.txt

wc -c alunos2.txt

wc -m alunos2.txt

#

Executando mais comandos no arq_marciano.txt:

.

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

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

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

13) cat arq_marciano.txt | tail -n 3

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

23) grep -i "meu" arq_marciano.txt

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

36) grep -i "meu" arq_marciano.txt -v

37) grep -i marciano "arq_marciano.txt" -v

.

(Sort e Uniq, o sort vem antes do uniq)

#

sort alunos2.txt

sort -r alunos2.txt

sort -k2 alunos2.txt # Ordena pelo segundo campo

#

SITE PARA APRENDER COMANDOS:

http://explainshell.com/

#

sort alunos.txt # Primeiro sort para organizar

#

uniq alunos.txt # Depois pode usar o unic se não, o unic repete palavras iguais que não estiverem na sequência

#

sort alunos.txt |uniq -c

sort alunos.txt |uniq -d

sort alunos.txt |uniq -u

clear

#

(As principais opções do uniq são)

-u (o que apareceu uma só vez)

-d (duplicadas)

-c (conta repetições)

#

sort alunos.txt -u

sort alunos.txt -d

clear

sort alunos.txt -c

sort alunos.txt |uniq -d # Linhas duplicadas

sort alunos.txt |uniq -c |sort

clear

sort alunos.txt |uniq -c |sort -r

uniq -c alunos.txt

sort alunos.txt |uniq -c |sort -r|head -n1

#

O COMANDO TR (O que é tr?)

#

Ex:

$whatis tr
tr (1) - translate or delete characters
tr (1p) - translate characters

#

(whatis tr - traduz ou deleta caracteres - dentro de uma string)

#

(Trocar toda letra a pela letra e)

cat alunos.txt |tr a e

cat alunos.txt |tr a e > alunos-troca-letra-a-por-e.txt

cat alunos-troca-letra-a-por-e.txt

#

(O tr serve para substituir/trocar vários tipos de coisa)

#

cat alunos.txt | tr a-z A-Z (Vai trocar toda vez que encontrar caractere minúsculo)

cat alunos.txt | tr aei AEI

(Posso trocar por símbolos, espaços, tabulação, quebra de linha, etc...)

#

cat alunos2.txt |tr ' ' '\t'

#

Ex:

$cat alunos2 |tr ' ' '\t'

cat: alunos2: Arquivo ou diretório não encontrado

#

cat alunos2.txt |tr ' ' '\t'

#

cat alunos2.txt |tr ' ' '\t' | cat -A

#

Ex:

$cat alunos2.txt |tr ' ' '\t' | cat -A

Ana^IClaudia$
Ana^IClaudia^IKafka$
Andre^IGonM-CM-'alves$
Antonio^ISilva$
Bento^ISilva$
Carlos^IAugusto$
Daniel^ISandro$
Eliseu^IPadilha$
Fernanda^IPadilha$
Kant^IRosa$
HorM-CM-!cio^INunes$
Ingrid^IDamacena$
Maria^IAntonieto^ISousa$
Olimpio^ISilva$
Paulo^IFreitas$
Rafaela^Idos^ISantos$
Roff^ISilvaciano$
Silvia^IOliveira$
Zuenir^IMello$
Xerxes^IAlvez$

#

cat alunos2.txt |tr -d aei (deletar as letras aei na saida do comando, o arquivo em si continua sem alteração)

#

$cat alunos2.txt |tr -d aei
An Clud
An Clud Vsconclos
Andr Gonçlvs
Antono Slv
Bnto Slv
Crlos Augusto
Dnl Sndro
Elsu Pdlh
Frnnd Pdlh
Gustvo Ros
Horáco Nuns
Ingrd Dmcn
Mr Antonto Sous
Olmpo Slv
Pulo Frts
Rfl dos Sntos
Rcrd Prodncno
Slv Olvr
Zunr Mllo
Xrxs Alvz

#

echo "Curso Shell Script" | tr l L

echo "Curso Shell Script" | tr S s

#

(comprimir toda vez que encontrar letras repetidas)

echo "Curso Shell Script" | tr -s 'l'

echo "Cuurso Sheeeelll Scriiiippttt" | tr -s 'u e l i p t'

#

echo Curso Shell Script | tr [:lower:] [:upper:]

#

(cut recorta pedaços de uma palavras escritas no terminal ou em shell script, as chamadas strings eu acho. Pode cortar por caracteres e por campos)

#

cut -d: -f 1 /etc/passwd

cut -d: -f 1,3 /etc/passwd

cut -c 1-10 /etc/passwd

date | cut -d: -f1

cat alunos2.txt | cut -c1-5

cat alunos2.txt | cut -c1,2,6

cat alunos2.txt | cut -c1,6,2

cat alunos2.txt | cut -c1,2,3

cat alunos2.txt | cut -c3,2,1

cat alunos2.txt | cut -c1,2,2

cat alunos2.txt | cut -c1,2

free | tr -s ' ' | sed '/^Mem/!d' | cut -d" " -f2

clear

#

(Cada comando GNU/Linux me parece que faz um e apenas um serviço bem feito)

#

(Do 5 para frente)

cat alunos2.txt | cut -c5-

#

(Até o 5)

cat alunos2.txt | cut -c-5

#

(Até o 10)

cat alunos2.txt | cut -c-10

#

(1, 2 e do 10 para frente)

cat alunos2.txt | cut -c1,2,10-

#

(cada palavra é um campo. pode usar o cut com campos)

cat alunos2.txt | cut -f1 (falta alguma coisa)

clear

cat alunos2.txt | cut -d" " -f1

cat alunos2.txt | cut -d" " -f1,3 (1 e 3)

cat alunos2.txt | cut -d" " -f1-3 (1 ao 3)

cat alunos2.txt | cut -d" " -f2-

cat alunos2.txt | cut -d" " -f-2

clear

#

tail /etc/passwd

tail /etc/passwd | cut -d":" -f1,5

#

(comando diff compara 2 arquivos)

cat alunos.txt

cat alunos3.txt

diff alunos.txt alunos3.txt

(resultado)

$diff alunos.txt alunos3.txt

bash: diff: comando não encontrado
arquivos $diff alunos.txt alunos3.txt
1,9d0
log.out

ls -l alunos.tdt > log.out 2> log-erro.out

#

(a saida de erro sera a mesma que a saida padrao)

ls -l alunos.txt3 > log.out 2>&1

ls -l alunos.txt3 >> log.out 2>&1

clear

(jogar a saida de erro para lugar nenhum)

ls -l alunos.txtxt 2> /dev/null

#

(redirecionamento da entrada usando o sinal de menor, o conteúdo do arquivo vira a entrada do comando)

(util para redirecionamento de e-mail)

tr 'a' 'Z'

.

Exemplos:

.

mkdir ~/Downloads/EstudoEmDown/

touch ~/Downloads/EstudoEmDown/E_S_arq.txt

echo -e 'Bom\nDia\nMundo\nLinux\nLista:\nAzul, Beleza, Simone, Aluno3, luz, olhos, marciano, Carlos, marciano, Mariana, Maria, Carlos, Mariana' > ~/Downloads/EstudoEmDown/E_S_arq.txt > Arquivos.txt

ls ~/Downloads/EstudoEmDown/

cat ~/Downloads/EstudoEmDown/E_S_arq.txt

ls -lR ~/Downloads/EstudoEmDown/E_S_arq.txt

find ~/ -iname "*.txt" > ~/Downloads/EstudoEmDown/E_S_arq.txt 2> ~/Downloads/EstudoEmDown/ErroE_S_arq.txt

.

Acima o redirecionamento é destrutivo, isto é, ele apaga o conteúdo anterior do arquivo para onde será redirecionada a saída.

.

É possível redirecionamento NÃO-DESTRUTIVO. Usa-se a notação >> no lugar de > e implica em ACRESCENTAR a saída ao FINAL do arquivo para onde está sendo feito o redirecionamento.

.

Exemplos:

1) touch ~/Downloads/EstudoEmDown/Arquivos.txt

2) ls -lR ~/ >> ~/Downloads/EstudoEmDown/Arquivos.txt

3) find ~/ -iname "*.txt" >> ~/Downloads/EstudoEmDown/E_S_arq.txt 2> ~/Downloads/EstudoEmDown/ErroE_S_arq.txt > /dev/null

.

Exemplo:

1) ls -lit arq-erro3.txtt > /dev/null

.

Quando o usuário deseja que a saída padrão ou a saída de erros NÃO sejam exibidas na tela do terminal e tampouco sejam redirecionadas para um arquivo adicional, usa-se o redirecionamento para um arquivo especial: /dev/null. No exemplo acima, as mensagens de erro do comando find não serão exibidas, pois foram redirecionadas para /dev/null.

.

Executo:

1) ls -lit arq-erro.txtt

2) ls -lit arq-erro.txtt 2> log.out

3) cat log.out

4) ls -lit arq-erro2.txtt 2>> log.out

5) ls -lit arq-erro3.txtt 2>> log.out

6) cat log.out

7) ls -lit arq-erro.txtt > /dev/null

8) ls -lit arq-erro3.txtt > /dev/null

9) ls -lit arq-erro4 > log.out

10) ls -lit arq-erro5 > log.out 2> log-erro.out

11) ls -lit arq-erro6 > log.out 2>&1

12) ls -lit arq-erro7 >> log.out 2>&1

12) ls -lit arq-erro8 >> log.out 2>&1 /dev/null

13) cat -n log.out

.

PIPELINE (PIPE/CANO)

.

Imagino o seguinte exemplo:

.

sort ~/Downloads/EstudoEmDown/Arquivos.txt > ~/Downloads/EstudoEmDown/OrdenadoS.txt

less ~/Downloads/EstudoEmDown/OrdenadoS.txt

.

PIPE É UMA FORMA DE REDIRECIONAMENTO QUE CONECTA A SAÍDA PADRÃO DE UM PROGRAMA À ENTRADA PADRÃO DE OUTRO PROGRAMA.

.

Com pipes (símbolo |) o exemplo acima se transforma em:

.

sort ~/Downloads/EstudoEmDown/Arquivos.txt | less

.

PIPELINES PODEM SER USADOS EM QUALQUER QUANTIDADE EM UMA LINHA DE COMANDO (string):

ls -lR ~ | sort -r | cut -c1-10 | less

.

PIPELINES E REDIRECIONAMENTOS PODEM SER USADOS EM UMA MESMA LINHA DE COMANDO:

find /var -print 2>/dev/null | sort > ~/LOG

.

No exemplo acima, a saída de erros (STDERR) do find é redirecionada para /dev/null (isto é, não aparecerá na tela), mas a saída padrão (STDOUT) será redirecionada para o pipe. O comando sort ordena o resultado do find e redireciona o resultado final para o arquivo ~/LOG.

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

OBS:
O /dev/null é chamado de buraco negro.

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

EXPRESSÕES REGULARES BÁSICAS: CORINGAS, GREP

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

Uma EXPRESSÃO REGULAR é uma forma compacta de especificar um padrão genérico de caracteres. Existem muitos filtros em UNIX, tais como grep, sed e awk que usam tanto padrões exatos quanto expressões regulares.

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

* - Atua como um substituto para qualquer número e seqüência de caracteres.

? - Atua como substituto para qualquer caractere único.

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

EXECUTO:

ls -l /var/log/

ls -l /var/log/*.log

cat /var/log/Xorg.0.log

ls /var/log/u*

ls -l /var/log/

ls -l /var/log/*??.?.???

ls -l /var/log/[a-x]*.log

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

Executo:

awk '$2 ~ "luz" {print $1, "\t", $4}' arq-poema.txt

(imprime os campos 1 e 4 de cada linha de arq-poema.txt cujo segundo campo contenha "luz".)

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

Pode-se usar grep para encontrar em um arquivo por todas as linhas que tenham a letra ``H'', seguida de um número qualquer de letras minúsculas, seguida da letra ``m''.

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

EXPRESSÕES REGULARES são parte integrante de sistemas Linux e é EXTREMAMENTE IMPORTANTE aprender como usá-las.

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

Dentro de uma expressão regular, certos símbolos tem um significado especial.

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

. (Ponto)

Significa: qualquer caracter simples, exceto quebra de linha (newline)

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

* (Asterisco)

Significa: zero ou mais ocorrências do caracter precedente

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

^

Significa: início de uma linha

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

$

Significa: final de uma linha

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

\

Significa: final de uma palavra

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

[ ]

Significa: um, e apenas um dos caracteres indicados pelos colchetes

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

[^ ]

Significa: quaisquer caracteres que não estejam entre os indicados pelos colchetes

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

\

Significa: toma o caracter seguinte literalmente

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

[[:alnum:]]

Significa: [0-9A-Za-z]

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

[[:alpha:]]

Significa: [A-Za-z]

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

[[:digit:]]

Significa: [$0-9]

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

[a-d]

Significa: [abcd]

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

[a-dP-T]

Significa: [abcdPQRST]

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

[]a^[-]

Significa: um dos caracteres: a, ^, ], [ ou -.

O símbolo ^ perde seu significado especial se não está no início da expressão entre colchetes.

O símbolo - perde seu significado especial se é o último caracter da expressão entre colchetes.

O símbolo ] perde seu significado se é o primeiro caracter da expressão entre colchetes.

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

Eu vou usar este texto abaixo para tentar aprender alguma coisa. Copio e colo no terminal:

echo -e "Dag Linux liro dat but D 2 dag dagger dab\nDeg D deg det bet sonhando degree oi alo linux deeb\nDig dig buut unix digger dib\nDog dog GNU/Linux dot dogger tico C dob\nDug dug B dugger dut dab\nDugdadedidodu sonho Universo bit O 3 dugt Dugtrail \nRege Unix Degenerdio bot U degenerd" > arq-exp-reg.txt ; cp arq-exp-reg.txt texto-test-exp-reg.txt

.

EXECUTO:

1) cat -n arq-exp-reg.txt arq-exp-reg.txt

2) grep -e dag arq-exp-reg.txt

3) grep -e dag arq-exp-reg.txt -v

4) egrep "[Dd]ug" arq-exp-reg.txt

5) cat -n arq-exp-reg.txt

6) egrep "[Dd]ug" arq-exp-reg.txt -v

7) egrep "d[aei]g" arq-exp-reg.txt

8) egrep "d[aei]g" arq-exp-reg.txt -v

9) clear

10) cat -n "arq-exp-reg.txt"

11) egrep "d[aei]t" arq-exp-reg.txt

12) egrep "D[aei]g" arq-exp-reg.txt

13) egrep "^Rege" arq-exp-reg.txt

14) clear

15) cat -n arq-exp-reg.txt

16) egrep "^Dig" arq-exp-reg.txt

17) egrep "^Deg" arq-exp-reg.txt

18) egrep "^Deg" arq-exp-reg.txt -v

19) cat -n "arq-exp-reg.txt"

20) egrep "^Dig" arq-exp-reg.txt -v

21) egrep "dab$" arq-exp-reg.txt

22) egrep "dib$" arq-exp-reg.txt

23) clear

24) cat -n arq-exp-reg.txt

25) egrep "Degenerdio$" arq-exp-reg.txt

26) egrep -v "^ug$" arq-exp-reg.txt

27) egrep -v "^Dege$" arq-exp-reg.txt

28) egrep -v "^$" arq-exp-reg.txt

29) clear

30) cat -n "arq-exp-reg.txt"

31) egrep "d[a-i]g*" arq-exp-reg.txt

32) egrep "d[a-i]t*" arq-exp-reg.txt

33) egrep "d[a-i]g*" arq-exp-reg.txt -v

34) egrep "d[a-i]g+" arq-exp-reg.txt

35) egrep "d[a-i]t+" arq-exp-reg.txt

36) clear

37) cat -n arq-exp-reg.txt

38) egrep "d[a-i]t*" arq-exp-reg.txt -v

39) egrep "d[a-i]t+" arq-exp-reg.txt -v

40) egrep "d[a-i]g?" arq-exp-reg.txt

41) egrep "d[a-i]t?" arq-exp-reg.txt

42) clear

43) cat -n "arq-exp-reg.txt"

44) cat -A "arq-exp-reg.txt"

45) cat -b "arq-exp-reg.txt"

46) egrep "D.dag" arq-exp-reg.txt

47) egrep "U.dege*" arq-exp-reg.txt

48) egrep "U.[dege]d?" arq-exp-reg.txt

49) egrep "U.[dege]d*" arq-exp-reg.txt

50) egrep "[Ll]inux." arq-exp-reg.txt

51) egrep "[Ll]inux\." arq-exp-reg.txt

52) egrep "[Uu]nix." arq-exp-reg.txt

53) egrep "\[Uu\]nix\." arq-exp-reg.txt

54) sed '/^U/x' arq-exp-reg.txt

55) grep -E "liro" arq-exp-reg.txt

56) ls | grep -E '(oi)|(alo)' arq-exp-reg.txt

57) grep -E '(tico)' arq-exp-reg.txt

58) ls | grep -E Unix. *.txt

59) grep -E Univers. *.txt

60) ls | grep -E test[aeo]\.txt

61) grep -E sonh[ao] arq-exp-reg.txt

62) ls | grep -E test[^i]\.txt

.

FIM DA: REVISÃO DE COMANDOS BÁSICOS PARA SHELL SCRIPT

.

CONTINUANDO...

.

# (O nome deste símbolo é tralha)

.

! (O nome deste símbolo é exclamação)

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

./ (Ponto e barra significa onde você está)

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

#! (Tralha e exclamação significa Shebang)

.

DIRECIONADORES

.

(Write)

> (Este direcionador sobrescreve o que estiver escrito)

1) uptime > arq-uptime1.txt ; sleep 3

2) uptime > arq-uptime1.txt (leia o arquivo)

3) cat arq-uptime1.txt
.

(Append)

>> (Este direcionador não sobrescreve o que estiver escrito)

Exemplo execute os comandos abaixo um de cada vez:

1) uptime >> arq-uptime2.txt ; sleep 3

2) uptime >> arq-uptime2.txt (leia o arquivo)

3) cat arq-uptime2.txt

.

A Shebang para o Bash é a primeira coisa que se escreve em um shell scripr no Linux:

#!/bin/bash

.

Para ver qual é o shell padrão:

printenv SHELL

.

Para mudar o Shell padrão (não faça isto!) Ex:

chsh -s /bin/ash

.

Para sair do shell:

exit

.

Geralmente o primeiro script para quem nunca criou um shell script é criar uma pasta chamada pasta-estudos na pasta home.

cd ; mkdir pasta-estudos

.

Abrir a pasta-estudos e nela criar um arquivo de texto chamado de 01-script.sh.

cd pasta-estudos/

> 01-script.sh

.

Dá poder de execução ao arquivo 01-script.sh.

chmod a+x 01-script.sh

.

Abre o 01-script.sh com um editor de texto. Escreve com um editor de texto no arquivo 01-script.sh o seguinte:

#!/bin/bash

# Um comentário

echo "Olá, mundo!"

# Fim do Shell Script

.

Comentários também podem ser escritos assim:

#!/bin/bash # Um comentário

echo "Olá, mundo!" # Fim do Shell Script

.

SALVE O QUE FOI ESCRITO. FECHE O EDITOR DE TEXTO.

.

EXECUTA O SCRIPT USANDO UM COMANDO DE CADA VEZ.

comando 1:

sh 01-script.sh

comando 2:

./01-script.sh

comando 3:

bash 01-script.sh

.

TUDO ISTO ACIMA PODE SER FEITO DE UMA SÓ VEZ COM O CÓDIGO ABAIXO:

echo ; printenv SHELL ; echo ; cd ; mkdir pasta-estudos ; cd pasta-estudos/ ; > 01-script.sh ; chmod a+x 01-script.sh ; echo -e '#!/bin/bash\n# Um comentário\necho "Olá, mundo!"\n# Fim do Shell Script' > 01-script.sh ; sh 01-script.sh ; echo ; ./01-script.sh ; echo ; bash 01-script.sh ; ./01-script.sh ; sh 01-script.sh

.

Bloco de comentários tudo que estiver entre : bin-script.sh ; chmod a+x bin-script.sh ; cd ; cd Downloads/ ; bin-script.sh ; sleep 3 ; echo ; echo 'Estamos em:' ; echo ; sleep 2 ; echo ; pwd ; echo ; sleep 3 ; echo ; echo 'Funcionou porque o script foi executado na pasta Downloads' ; echo

.

VOCÊ NOTOU SE JÁ É CAPAZ DE LER ESTE CÓDIGO ACIMA E ENTENDER O QUE ELE FAZ?

.

ACRESCENTANDO O NOVO VALOR À VARIÁVEL $PATH:

cd

whoami

PATH=$PATH:/home/seu-usuario-whoami/bin/

.

PARA TORNAR O VALOR, QUE VOCÊ QUISER, PERMANENTE, TEM GENTE QUE FAZ O AJUSTE DA VARIÁVEL DENTRO DO ARQUIVO ".profile" OU ".bash_profile"

export PATH="$HOME/bin:$HOME/.local/bin:$PATH"

.

Exemplo:

cd

pwd

ls -a

echo 'PATH=$PATH:/home/seu-usuario-whoami/bin/' >> .profile

ls -a -t

.

PARA FUNCIONAR, TENTE EXECUTAR:

cd ; source .profile ; source .bashrc

.

COMANDO SHUTDOWN

.

PODE TAMBÉM APÓS ATUALIZAR, REINICIAR O SISTEMA. COMANDO PARA REBOOT:

1) sudo shutdown -r now (reinicia imediatamente)

2) sudo shutdown -r +25 (reinicia em 25 min)

3) shutdown -r +30 “O sistema será reiniciado em 30 minutos, salvem seus arquivos” (desliga em meia hora e informa a respeito)

.

OBS:

O comando shutdown Desliga/Reinicia o sistema de forma segura, informando todos os usuários conectados e impedindo que novos logons sejam efetuados. Pode executar o comando com um tempo para o desligamento(Contagem regressiva) ou simplesmente utilizar a forma padrão now/agora para desligar.

.

Ex.:

shutdown [opções] [tempo] [mensagem]

.

Comandos:

1) shutdown -h now
(desliga o sistema de imediato)

.

2) sudo shutdown -h 30
(desliga o sistema em 30 min)

.

3) sudo shutdown -c
(cancela o comando de desligar)

.

4) sudo shutdown -r 1 "O sistema será reiniciado em 1 min"

.

VERIFICANDO A NOVA VARIÁVEL:

echo $PATH

.

LINUX SHELL SCRIPT BRINCANDO COM 5 VARIÁVEIS:

#!/bin/bash

clear

# Este script testa o uso de variáveis

# Definindo 5 variáveis

echo ; echo 'Definindo 5 variáveis em 10 segundos.' ; sleep 3 ; echo

VALOR1='ls -t' ; sleep 2 ; VALOR2='pwd' ; sleep 2 ; VALOR3='cal' ; sleep 2 ; VALOR4='uptime' ; sleep 2 ; VALOR5='whoami' ; sleep 2

# Executando as 5 variáveis

echo 'Executando as 5 variáveis com explicações.' ; sleep 4 ; echo

echo 'Vamos listar o conteúdo desta pasta:' ; echo ; $VALOR1 ; sleep 4 ; echo ; echo 'Vamos saber onde estamos localizados no sistema:' ; sleep 4 ; echo ; $VALOR2 ; sleep 4 ; echo ; echo 'Vamos ver o calendário atual' ; sleep 4 ; echo ; $VALOR3 ; echo ; echo 'Vamos saber o tempo de funcionamento da máquina:' ; sleep 4 ; echo ; $VALOR4 ; sleep 4 ; echo ; echo 'Vamos saber qual é o usuário logado' ; sleep 4 ; echo ; $VALOR5 ; echo

sleep 5

echo 'Executando apenas as variáveis:' ; echo ; $VALOR1 ; sleep 2 ; $VALOR2 ; sleep 2 ; $VALOR3 ; sleep 2 ; $VALOR4 ; sleep 2 ; $VALOR5

# Removendo as 5 variáveis pois este script é apenas um teste

echo ; echo 'Removendo as 5 variáveis em 10 segundos, pois este script é apenas um teste' ; sleep 4 ; echo

unset VALOR1 ; sleep 2 ; unset VALOR2 ; sleep 2 ; unset VALOR3 ; sleep 2 ; unset VALOR4 ; sleep 2 ; unset VALOR5 ; sleep 2

echo ; echo '10 seg para testar as variáveis que não devem ecoar valores' ; sleep 4 ; echo

echo 'Testando as variáveis:' ; echo ; $VALOR1 ; sleep 2 ; $VALOR2 ; sleep 2 ; $VALOR3 ; sleep 2 ; $VALOR4 ; sleep 2 ; $VALOR5

exit

# Fim do script

.

LINUX SHELL SCRIPT - OlaUsuario.sh

.

#!/bin/bash

# Titulo: 01-olauser.sh

clear

USERL='Usuário-Linux'

echo

echo "Olá $USERL"

sleep 2

echo

echo "Tchau $USERL"

sleep 2

clear

exit

# Fim do script

.

ABRA O TERMINAL PELO MENU DO SISTEMA. ABRA O GERENCIADOR DE ARQUIVOS. COLOQUE OS DOIS LADO A LADO NA TELA DO COMPUTADOR. EXECUTE O SCRIPT ACIMA COPIANDO E COLANDO NO TERMINAL O CÓDIGO ABAIXO QUE VAI EXECUTAR O SCRIPT E DEPOIS VAI APAGAR O SCRIPT:

.

cd ; mkdir praticando-shellscript ; cd praticando-shellscript/ ; echo -e '#!/bin/bash\n \n# Titulo: 01-olauser.sh\n \nclear\n \nUSERL=Usuário-Linux\necho\necho Olá $USERL\n \nsleep 4\necho\necho Tchau $USERL\n \nsleep 4\necho\n \nsleep 2\nclear\n \nexit\n \n# Fim do script' > 01-olauser.sh ; chmod a+x 01-olauser.sh ; sh 01-olauser.sh ; sleep 2 ; cd .. ; unset USERL ; rm -rf praticando-shellscript/ ; echo ; pwd ; sleep 2 ; echo ; ls -t ; sleep 2 ; $USERL

.

LINUX SHELL SCRIPT IMPRIMIR SAÍDA COLORIDA:

.

Um script pode usar sequências de escape para produzir textos coloridos no terminal. As cores são representadas por códigos, temos 9 códigos:

reset = 0

black = 30

red = 31

green = 32

yellow = 33

blue = 34

magenta = 35

cyan = 36

white = 37

.

O caractere de escape para vermelho é: "\e[1;31m" após o texto em vermelho, usa "\e[0m" para resetar a cor voltando ao padrão. Substitua o código 31 por outra cor que desejar. Temos 9 códigos: 0, 30, 31, 32, 33, 34, 35, 36, 37.

.

Exemplo:

echo -e "\e[1;36m texto que vai ficar colorido \e[0m"

.

PARA IMPRIMIR UM TEXTO COLORIDO USE ESTES EXEMPLOS ABAIXO:

.

echo -e "\e[1;34m Este é o texto em azul! \e[0m"

echo -e "\e[1;30m Este é o texto em preto! \e[0m"

echo -e "\e[1;32m Este é o texto em verde! \e[0m"

echo -e "\e[1;33m Este é o texto em amarelo! \e[0m"

echo -e "\e[1;35m Este é o texto em magenta! \e[0m"

echo -e "\e[1;36m Este é o texto em cyan! \e[0m"

echo -e "\e[1;37m Este é o texto em branco! \e[0m"

.

PODEMOS IMPRIMIR TODOS ESTE TEXTOS AO MESMO TEMPO PARA TESTAR.

.

Copio o código que eu escrevi abaixo e colo no meu terminal:

.

echo -e "\e[1;34m Este é o texto em azul! \e[0m" ; sleep 3 ; echo -e "\e[1;30m Este é o texto em preto! \e[0m" ; sleep 3 ; echo -e "\e[1;32m Este é o texto em verde! \e[0m" ; sleep 3 ; echo -e "\e[1;33m Este é o texto em amarelo! \e[0m" ; sleep 3 ; echo -e "\e[1;35m Este é o texto em magenta! \e[0m" ; sleep 3 ; echo -e "\e[1;36m Este é o texto em cyan! \e[0m" ; sleep 3 ; echo -e "\e[1;37m Este é o texto em branco! \e[0m"

.

DÁ PARA CRIAR UM SHELL SCRIPT COM ISTO VEJA SÓ:

.

#!/bin/bash

clear

echo

echo -e "\e[1;34mVamos criar uma \e[1;31mpasta. \e[0m"

echo

sleep 4

mkdir pasta-teste

echo

echo -e "\e[1;30mVamos ver se a \e[1;31mpasta \e[1;30mfoi criada. \e[0m"

echo

sleep 4

ls -t

echo

sleep 3

echo -e "\e[1;32mVamos criar um \e[1;31marquivo de texto \e[1;32mvazio \e[0m"

echo

sleep 4

> texto-teste.txt ; echo ; ls -t ; echo ; sleep 5 ; echo

echo -e "\n\e[1;33mVamos \e[1;31mescrever \e[1;33me \e[1;35mmover \e[1;33mo \e[1;32mtexto-teste.txt \e[1;33mpara:\n \n\e[1;34mpasta-teste\n \e[0m"

echo

sleep 4

echo -e "Esta frase\nserá escrita\nem\ntexto-teste.txt" > texto-teste.txt ; sleep 3 ; mv texto-teste.txt pasta-teste

echo

echo -e "\n\e[1;35mEntrar em \e[1;32mpasta-teste \e[1;35me conferir o conteúdo dela \e[0m\n"

echo

cd pasta-teste/ ; echo ; ls -t ; sleep 4 ; echo ; pwd ; echo ; sleep 4

echo

echo -e "\e[1;36mCopiando \e[1;37mtexto-teste.txt \e[1;36mpara \e[1;34mtexto-teste2.txt \e[0m"

echo

sleep 4

cp texto-teste.txt texto-teste2.txt ; echo ; ls -t ; echo ; sleep 4 ; echo ; pwd ; echo ; sleep 4

echo -e "\e[1;37mFim do script. \e[1;31mPode apagar tudo \e[1;32musando o \e[1;37mmouse. \e[0m"

echo

sleep 4

echo -e "\e[1;37mOu pode executar o comando: \e[1;31mrm -rf pasta-teste\e[1;32m mas antes confere os arquivos de texto.\e[0m"

echo

sleep 4

exit

# Fim do script

.

COMANDOS MAIS USADOS EM SHELL SCRIPT NO LINUX

.

ASPAS SIMPLES/APÓSTROFOS ' E ASPAS DUPLAS ":

1) Os caracteres especiais são interpretados pelo shell. As aspas em certos casos, fazem o shell ignorar estes caracteres especiais.

.

Executo:

echo -e "\e[1;30mVamos ver se a \e[1;31mpasta \e[1;30mfoi criada. \e[0m" >> texto-teste.txt >> texto-teste.sh

cat texto-teste.sh

cat "texto-teste*"

ls texto-teste*

ls "texto-teste*"

echo estou aprendendo shell script

echo "estou aprendendo shell script"

.

2) A barra invertida (\) protege o caractere seguinte.

.

Executo:

ls texto-teste\*

echo estou \ aprendendo \ shell script

.

3) Aspas duplas permitem interpretar caracteres especiais em variáveis por exemplo.

VALOR="ls -t texto-teste*"

echo $VALOR

MAS SE:

VALOR="ls -t texto-teste\*"

echo $VALOR

.

4) Aspas simples (apóstrofos) desabilitam esta interpretação e alguns casos por exemplo em variáveis.

ls texto-teste*

ls 'texto-teste*'

.

COMANDOS: CARACTERES DE ESCAPE

echo "Hello \"world\"!"

.

TODO SCRIPT ESCRITO PARA RODAR NO BASH COMEÇA COM:

#!/bin/bash

Após "#!/bin/bash" de um espaço entre linhas e então pode começar a digitar comandos.

.

Exemplo para executar:

#!/bin/bash

clear

echo ; date ; echo ; sleep 4

echo ; cal ; echo ; sleep 4

echo ; uptime ; echo ; sleep 4

echo ; df -h ; echo ; sleep 4

echo ; free -html ; echo ; sleep 4

echo ; whoami ; echo ; sleep 4

echo ; pwd ; echo ; sleep 4

echo ; ls -at ; echo ; sleep 4

echo ; whereis bash ; echo ; sleep 4

echo ; echo 'Este é o fim do script 01-script.sh' ; echo ; sleep 4

exit

# Fim do script

.

ESTE SCRIPT ÚTIL E INOFENSIVO ACIMA SERÁ SALVO NA PASTA HOME, A PASTA DA CASINHA, USANDO UM EDITOR DE TEXTO E TERÁ O NOME DE:

01-script.sh

.

Posso melhorar/tornar mais amigável este script acima explicando sobre cada comando:

.

#!/bin/bash

clear

echo ; echo 'Hoje é data:' ; echo ; sleep 2

echo ; date ; echo ; sleep 4

echo ; echo 'Hoje pelo calendário é:' ; echo ; sleep 2

echo ; cal ; echo ; sleep 4

echo ; echo 'Esta máquina está funcionando a:' ; echo ; sleep 2

echo ; uptime ; echo ; sleep 4

echo ; echo 'Sobre o tamanho desta pasta:' ; echo ; sleep 2

echo ; df -h ; echo ; sleep 6

echo ; echo 'Sobre a memória RAM:' ; echo ; sleep 2

echo ; free -html ; echo ; sleep 6

echo ; echo 'Você está logado como:' ; echo ; sleep 2

echo ; whoami ; echo ; sleep 4

echo ; echo 'Você está em:' ; echo ; sleep 2

echo ; pwd ; echo ; sleep 4

echo ; echo 'Neste diretório/pasta tem:' ; echo ; sleep 2

echo ; ls -at ; echo ; sleep 6

echo ; echo 'O Bash está em:' ; echo ; sleep 2

echo ; whereis bash ; echo ; sleep 4

echo ; echo 'Este é o fim do script 01-script.sh' ; echo ; sleep 4

exit

# Fim do script

.

No Linux o script deve ter permissão de execução, isto pode ser feito abrindo o terminal pelo menu do sistema e executando o comando:

chmod +x 01-script.sh

.

Depois de salvo você tem que executar o arquivo, dessa forma:

./01-script.sh

.

Viu alguma utilidade neste pequeno script?

Então siga adiante.

.

IMPORTANTE:

Para estudar shell script tem que ser como usuário normal. Se você está acessando o sistema como usuário administrador (root), saia e entre como um usuário normal. É muito perigoso estudar shell usando o superusuário, você pode danificar o sistema com um comando errado.

Ok, continuemos.

.

Para exibir um manual do bash ou mesmo do comando 'chmod', digito na linha de comando:

man bash

man chmod

.

É possível executar o arquivo mesmo sem modificar a permissão de execução, por exemplo, se for um arquivo escrito para ser executado pelo bash, usar:

sh ./"Nome do arquivo, sem aspas"

.

SHELL

É importante saber o que é um Shell.

Na linha de comandos de um shell, podemos utilizar diversos comandos um após o outro, ou mesmo combiná-los numa mesma linha.

Se colocarmos diversas linhas de comandos em um arquivo texto simples, teremos em mãos um Shell Script, ou um script em shell, já que Script é uma descrição geral de qualquer programa escrito em linguagem interpretada, ou seja, não compilada.

Outros exemplos de linguagens para scripts são o PHP, Perl, Python, JavaScript e muitos outros. Podemos então ter um script em php, um script perl e assim em diante.

Uma vez criado, um ShellScript pode ser reutilizado quantas vezes for necessário.

Seu uso, portanto, é indicado na automação de tarefas que serão realizadas mais de uma vez.

Todo sistema Unix e similares são repletos de scripts em shell para a realização das mais diversas atividades administrativas e de manutenção do sistema.

Os arquivos de lote (batch - arquivos *.bat) do Windows são também exemplos de ShellScripts, já que são escritos em linguagem interpretada e executados por um Shell do Windows, em geral o command.com ou hoje em dia o cmd.exe.

Os Shells do Unix, porém, são inumeras vezes mais poderosos que o interpretador de comandos do Windows, podendo executar tarefas muito mais complexas e elaboradas.

.

OS SCRIPTS SHELL PODEM SER AGENDADOS PARA EXECUÇÃO ATRAVÉS DA TABELA CRONTAB, ENTRE OUTRAS COISAS.

.

O shell é uma ferramenta indispensável aos administradores de sistemas Unix.

O Shell mais comum e provavelmente o que possui mais scripts escritos para ele é também um dos mais antigos e simples, o sh.

Este shell está presente em todo o sistema tipo Unix, incluído o Linux, FreeBSD, AIX, HP-UX, OpenBSD, Solaris, NetBSD, Irix, etc. Por ser o shell nativo mais comum é natural que se prefira escrever scripts para ele, tornando o script mais facilmente portável para outro sistema.

Os Shells não estão diretamente associados a um ou outro tipo de Unix, embora várias empresas comerciais tenham suas próprias versões de Shell. No software livre o Shell utilizado em um sistema em geral é exatamente o mesmo utilizado em outro. Por exemplo, o bash encontrado no Linux é o mesmo shell bash encontrado no FreeBSD e pode também facilmente ser instalado no Solaris, Windows através do Cygwin [1] ou outros sistemas Unix comerciais para passar a ser utilizado como interface direta de comandos ou como interpretador de scripts. O mesmo acontece com o tcsh e vários outros shells desenvolvidos no modelo de software livre.

.

INTERAGIR COM O USUÁRIO

.

Para o script ficar mais completo, vamos colocar uma interação mínima com o usuário, pedindo uma confirmação antes de executar os comandos.

.

#!/bin/bash

clear

echo "Vou buscar os dados do sistema. Posso continuar? [S/n] "

read RESPOSTA

test "$RESPOSTA" = "n" && exit

echo ; echo "Data e Horário:" ; echo

date

echo

echo "Uso do disco:" ; echo

df -ht

echo

echo "Usuários conectados:" ; echo

w

echo ; echo "Seu nome de login é:"

whoami

echo

exit

# Fim do script

.

O comando "read" leu o que o usuário digitou e guardou na variável RESPOSTA. Logo em seguida, o comando "test" verificou se o conteúdo dessa variável era "n". Se afirmativo, o comando "exit" foi chamado e o script foi finalizado. Nessa linha há vários detalhes importantes:

O conteúdo da variável é acessado colocando-se um cifrão "$" na frente

O comando test é útil para fazer vários tipos de verificações em textos e arquivos

O operador lógico "&&", só executa o segundo comando caso o primeiro tenha sido OK. O operador inverso é o "||"

.

MELHORAR O CÓDIGO DO SCRIPT

Com o tempo, o script vai crescer, mais comandos vão ser adicionados e quanto maior, mais difícil encontrar o ponto certo onde fazer a alteração ou corrigir algum erro. Para poupar horas de estresse, e facilitar as manutenções futuras, é preciso deixar o código visualmente mais agradável e espaçado, e colocar comentários esclarecedores.

.

#!/bin/bash

# nome-do-script - script que mostra informações sobre o sistema

# Autor: Fulano da Silva

# Pede uma confirmação do usuário antes de executar

clear

echo "Vou buscar os dados do sistema. Posso continuar? [S/n]"

read RESPOSTA

# Se ele digitou 'n', vamos interromper o script

test "$RESPOSTA" = "n" && exit

# O date mostra a data e a hora correntes

sleep 3 ; echo "Data e Horário:" ; echo

date

sleep 3

echo

# O df mostra as partições e quanto cada uma ocupa no disco

echo "Uso do disco:"

sleep 3

echo

df

echo

sleep 6

# O w mostra os usuários que estão conectados nesta máquina

echo "Usuários conectados:"

sleep 3

echo

w

sleep 3

echo

# Fim do script

.

Basta iniciar a linha com um "#" e escrever o texto do comentário em seguida. Estas linhas são ignoradas pelo shell durante a execução. O cabeçalho com informações sobre o script e seu autor também é importante para ter-se uma visão geral do que o script faz, sem precisar decifrar seu código. Também é possível colocar comentários no meio da linha # como este

.

FERRAMENTAS PARA FUNÇÕES

.

O COMANDO RETURN INFORMA O FIM DA FUNÇÃO. EXEMPLO:

MinhaFuncao(){
echo "Isto será exibido"
return
echo "Isso não será exibido, pois está depois de return"
}

MinhaFuncao

.

Se criar uma variável dentro de uma função, mesmo chamando ela fora da função, o valor da variável será exibido, pois ela será tratada como variável GLOBAL, caso tente imprimi-la, para que o valor de uma variável seja exibido somente dentro da função, precisamos usar o comando local antes da variável para que não seja exibido. Para entender isto só mesmo com exemplo na prática. Vamos a ele:

.

EU ABRO O EDITOR DE TEXTO E COLO O TEXTO ABAIXO NELE:

#!/bin/bash

# Meu comentário

VARIAVEL="Olá Mundo do Shell Script!"

echo $VARIAVEL

sleep 2

echo

echo "Vou buscar os dados do sistema. Posso continuar? [S/n] "

read RESPOSTA

test "$RESPOSTA" = "n" && exit

echo ; echo "Data e Horário:" ; echo

date

echo

echo "Uso do disco:" ; echo

df -hi

echo

echo "Usuários conectados:" ; echo

w

echo ; echo "Seu nome de login é:"

whoami

echo

ARRAY5=("Shell" "Madrugada" "Script" "Amanhece" "Linux")

echo "O ARRAY5 possui ${#ARRAY5[@]} elemento(s)"

MinhaFuncao(){
echo "Eu estou passando $# parâmetros"
#return
echo "Muitas coisas"
}

MinhaFuncao $@

echo 'Se o resultado é zero está tudo certo!'

sleep 2

echo

echo $?

exit

# Fim do script: 09-ferramentas-funcoes.sh

.

SALVO COMO: 09-ferramentas-funcoes.sh

.

DOU PODER DE EXECUÇÃO:

chmod a+x 09-ferramentas-funcoes.sh

.

EXECUTO:

sh 09-ferramentas-funcoes.sh

sh 09-ferramentas-funcoes.sh Linux Brasil GNU

.

AGORA ALTERO O SCRIPT 09-ferramentas-funcoes.sh (REMOVO A TRALHA # DE RETURN) E EXECUTO DE NOVO:

.

#!/bin/bash

# Meu comentário

VARIAVEL="Olá Mundo do Shell Script!"

echo $VARIAVEL

sleep 2

echo

echo "Vou buscar os dados do sistema. Posso continuar? [S/n] "

read RESPOSTA

test "$RESPOSTA" = "n" && exit

echo ; echo "Data e Horário:" ; echo

date

echo

echo "Uso do disco:" ; echo

df -hi

echo

echo "Usuários conectados:" ; echo

w

echo ; echo "Seu nome de login é:"

whoami

echo

ARRAY5=("Shell" "Madrugada" "Script" "Amanhece" "Linux")

echo "O ARRAY5 possui ${#ARRAY5[@]} elemento(s)"

MinhaFuncao(){
echo "Eu estou passando $# parâmetros"
return
echo $VARIAVEL
echo "Muitas coisas"
}

MinhaFuncao $@

echo 'Se o resultado é zero está tudo certo!'

sleep 2

echo

echo $?

exit

# Fim do script: 09-ferramentas-funcoes.sh

.

COPIO E COLO O COMANDO ABAIXO NO TERMINAL:

sh 09-ferramentas-funcoes.sh Amanhecer ANOITECER Estudar DORMIR

.

CONSTANTES NÃO MUDAM. EXEMPLO:

.

#!/bin/bash

MinhaFuncao(){
local OLA="Olá, mundo!"
echo "Eu estou passando $# parâmetro(s)"
return
echo $OLA
echo "Muita coisa"
}

MinhaFuncao

declare -r MinhaConstante='Estamos constantes'

echo $MinhaConstante

# Fim do 3d-script-constante.sh

.

PODER DE EXECUÇÃO:

chmod +x 3d-script-constante.sh

.

EXECUTAR O SCRIPT:

sh 3d-script-constante.sh

sh 3d-script-constante.sh LINUX BASH

.

PARA APAGAR CONSTANTES E FUNÇÕES É O MESMO PROCEDIMENTO DE APAGAR VARIÁVEIS (unset).

.

CONDIÇÕES EM SHELL SCRIPT

O Shell tem estruturas para se fazer condições. Por exemplo o comando TEST. O comando TEST é útil para fazer vários tipos de verificações em textos e arquivos, testa o conteúdo de uma string, poder ser um arquivo, uma variável, compara valores numéricos ou não. O test avalia uma determinada condição dada e se ela for verdadeira a variável $? é retornada com o valor zero (0) e se falsa o valor é 1.

.

COM O COMANDO TEST PODEMOS VER SE É UM DISPOSITOVO DE:

-b (Bloco), -c (Caractere), -d (Diretório), -e (Se existe), -f (Se é um arquivo normal), -G (O grupo do arquivo é o do usuário atual), -L (O arquivo é um link simbólico), -r (O arquivo tem permissão de leitura), -s (O tamanho é maior que zero), -nt (O arquivo é o mais recente), -ot (O arquivo é mais antigo), -w (Se o arquivo tem permissão de escrita), -x Se o arquivo tem permissão de execução), -ef (Se o arquivo é o mesmo), e por aí vai... etc;

.

Podemos usar a COMPARAÇÃO NUMÉRICA no comando test. Veja estas opções abaixo por exemplo:

.

-lt (É menor que)

-gt (É maior que)

-le (É menor igual)

-ge (É maior igual)

-eq (É igual)

-ne (É diferente)

.

COMPARAÇÃO DE STRINGS:

.

= (É igual)

!= (É diferente)

-n (É não nula)

-z (É nula)

.

OPERADORES LÓGICOS:

! (NÃO lógico)

-a (E lógico) (AND)

-o (OU lógico)

.

VAMOS EXECUTAR OS EXEMPLOS ABAIXO NO TERMINAL:

test 1 = 1 ; echo $? (É igual a...)

test 1 = 2 ; echo $? (É igual a...)

test 1 != 2 ; echo $? (É diferente de...)

test 1 != 1 ; echo $? (É diferente de...)

.

- PRATICANDO O COMANDO TEST -

.

Vamos testar se o arquivo: 08-test-script.sh existe? Se é uma pasta? Se é um arquivo normal? Execute os comandos abaixo:

touch 08-test-script.sh

ls -t

test -e 08-test-script.sh ; echo $? (Verifica se existe)

test -d 08-test-script.sh ; echo $? (Verifica se é uma pasta)

test -f 08-test-script.sh ; echo $? (Verifica se é um arquivo comum)

test -s 08-test-script.sh (Verifica se o tamanho é maior que zero)

rm -fi 08-test-script.sh

.

Exemplo:

~ $rm -fi 08-test-script.sh
rm: remover arquivo comum vazio '08-test-script.sh'? S

.

Execute os comandos abaixo:

ls -t

test -e 08-test-script.sh ; echo $?

test -d 08-test-script.sh ; echo $?

test -s 08-test-script.sh

.

SE CORRESPONDE A OPÇÃO ESCOLHIDA A RESPOSTA É ZERO. SE NÃO A RESPOSTA É 1.

.

OS SCRIPTS SHELL PODEM CONTER ESTRUTURAS DE PROGRAMAÇÃO/condição TAIS COMO:

if, them, else, elif, fi

.

ESTRUTURAS DE DECISÃO (if)

If testa um comando e não uma condição. O comando que testa condições é o test. Usamos o test junto com o if. O if é um recurso utilizado para dar sequencia em fluxos de execução baseado em decisões. Cuja sintaxe é:

- Condição Verificada é o teste que definirá se controle deve ser passado para dentro do bloco then.

- Ação são comandos a serem executados em caso verdadeiro da condição verificada.

.

OPERADORES PARA NÚMEROS

.

-eq Verifica se é igual,

-ne Verifica se é diferente,

-lt Verifica se é menor,

-gt Verifica se é maior,

-le Verifica se é menor ou igual,

-ge Verifica se é maior ou igual.

.

OPERADORES PARA TEXTO

.

!= Verifica se é diferente,

= Verifica se é igual.

.

OPERADORES LÓGICOS

.

! Lógica NOT,

-o Lógica OU, (OR) ou ||,

-a Lógica E, (AND) ou &&.

.

OPERADOR PARA arquivos/

.

-d Verifica se é diretório,

-f Verifica se é arquivo,

-e Verifica se existe.

.

EXEMPLOS A SEREM EXECUTADOS:

.

#!/bin/bash

# Este script é para saber se uma variável é maior
# ou menor # do que 10 e mostrar uma mensagem na
# tela informando.
# No fim do script fechamos a condição com fi.
# Não esqueça de fechar a condição com fi, se não dá
# erro.

VARIAVEL=9;
if test "$VARIAVEL" -gt 10
then
echo "é maior que 10"
else
echo "é menor que 10"
fi

# Fim do script: 07w-script-if.sh

.

COPIO E COLO O CÓDIGO ABAIXO NO TERMINAL E VEJA O RESULTADO:

.

echo -e '#!/bin/bash\n \nVARIAVEL=9;\nif test "$VARIAVEL" -gt 10\n then\n echo "é maior que 10"\nelse\n echo "é menor que 10"\nfi\n \n# Fim do script: 07w-script-if.sh' > 07w-script-if.sh ; chmod a+x 07w-script-if.sh ; sh 07w-script-if.sh

.

RESULTADO:

é menor que 10

.

MAIS UM EXEMPLO IF, THEN, ELSE, ELIF, FI:

.

No exemplo abaixo a variável é igual a 10.

Neste caso tem que usar o "elif" se não vai dar erro.

Sem o "elif" o script vai dizer que é MENOR que 10.

É mais ou menos o seguinte, se (if) não é (then) maior, ou (elif) é (then) igual ou então (else) é menor. Fim (fi).

.

EXECUTE NO TERMINAL O SHELL SCRIPT EXEMPLO ABAIXO:

.

#!/bin/bash

VARIAVEL=10;
if test "$VARIAVEL" -gt 10
then
echo "é maior que 10"

elif test "$VARIAVEL" -eq 10
then

echo "é igual a 10"
else
echo "é menor que 10"

fi

# Fim do script:
# 08kw-script-if-then-else-elif-fi.sh

.

RESULTADO:

~ $sh 08kw-script-if-then-else-elif-fi.sh
é igual a 10
~ $

.

SE A VARIÁVEL FOSSE 11 EXEMPLO:

.

#!/bin/bash

VARIAVEL=11;
if test "$VARIAVEL" -gt 10
then
echo "é maior que 10"

elif test "$VARIAVEL" -eq 10
then

echo "é igual a 10"
else
echo "é menor que 10"

fi

# Fim do script:

# 03kw-script-if-then-else-elif-fi.sh

.

O RESULTADO É:

~ $sh 03kw-script-if-then-else-elif-fi.sh
é maior que 10

.

COPIO E COLO O CÓDIGO ABAIXO NO TERMINAL E VEJA O RESULTADO:

echo -e '#!/bin/bash\nVARIAVEL=11;\nif test "$VARIAVEL" -gt 10\nthen\necho "é maior que 10"\nelif test "$VARIAVEL" -eq 10\nthen\necho "é igual a 10"\nelse\necho "é menor que 10"\nfi\n# Fim do script:\n# 03kw-script-if-then-else-elif-fi.sh' > 03kw-script-if-then-else-elif-fi.sh ; chmod a+x 03kw-script-if-then-else-elif-fi.sh ; sh 03kw-script-if-then-else-elif-fi.sh

.

Consegue entender (ler) o código acima e sabe o que ele faz?

.

IF VEM ACOMPANHADO DO THEN
ELIF VEM ACOMPANHADO DO THEN
ELSE E O SCRIPT TERMINA COM FI

.

EXECUTE ESTE EXEMPLO NO TERMINAL:

.

#!/bin/bash

# Uso de Estrutura de Decisão

clear

echo 'opções'

echo '======'

echo ' -> Data do Sistema'

echo ' -> Uso do Sistema'

read opcao

if [ "$opcao" -eq 1 ]

then

echo 'Data do sistema: ' && date

elif [ "$opcao" -eq 2 ]

then

echo 'Uso do disco: ' && df -Th

fi

# Fim do script: 08cw-script-if.sh

.

PODEMOS CRIAR UMA FUNÇÃO

.

#!/bin/bash

MinhaFuncao(){
VARIAVEL=$1;
if test "$VARIAVEL" -gt 10
then
echo "é maior que 10"

elif test "$VARIAVEL" -eq 10
then

echo "é igual a 10"
else
echo "é menor que 10"

fi
}

MinhaFuncao $1

# Fim do script:

# 09ks-funcao-if-then-else-elif-fi.sh

.

JÁ SABE OS PROCEDIMENTOS. EXECUTE O SCRIPT ACIMA ASSIM:

sh 09ks-funcao-if-then-else-elif-fi.sh 8

bash 09ks-funcao-if-then-else-elif-fi.sh 19

./09ks-funcao-if-then-else-elif-fi.sh 868

sh 09ks-funcao-if-then-else-elif-fi.sh 2

.

ESTRUTURAS DE REPETIÇÃO (for) (while)

.

ESTRUTURA DE REPETIÇÃO for:

Permite que ações de iteração sejam executadas sobre determinados comandos ou variáveis até que a condição seja satisfeita.

.

# !/bin/bash

clear

echo "DIAS DA SEMANA"

for dia in seg ter qua qui sex sab dom

do

echo "$dia"

done

# Fim do script 7s-etrut-repet-for-while.sh

.

RESULTADO:

.

DIAS DA SEMANA
seg
ter
qua
qui
sex
sab
dom
~ $

.

ESTRUTURA DE REPETIÇÃO while:

Em situações onde sabemos até onde o loop irá realizar uma contagem o ideal é usar o for entretanto em cenarios onde a iteração deve cessar somente após se satisfazer uma condição o uso do laço while é mais indicado. Ex:

.

# /bin/bash

clear

var=1

while [ $var -le 7 ]

do

echo "Valor de var: $var"

var=$((var+1))

done

# Fim do script 7g-estr-rep-while.sh

.

Resultado:

Valor de var: 1
Valor de var: 2
Valor de var: 3
Valor de var: 4
Valor de var: 5
Valor de var: 6
Valor de var: 7
~ $

.

UM USO INTERESSANTE DO WHILE PARA VER O LOOP FUNCIONANDO:

.

Por vezes queremos acompanhar a cópia de um arquivo na console do Linux e o caminho mais normal é abrir um outro terminal e ficar repetitivamente executando o comando ls, ou algum outro comando, haja dedo para apertar a seta pra cima e enter, seta pra cima e enter, seta pra cima e enter. Podemos resolver isto usando o comando while de forma bem simples, por exemplo se quisermos executar um ls por várias vezes, podemos fazer assim:

.

OBS: Execute um de cada vez, parar o comando com Ctrl+C.

.

1

while true; do ls; done;

2

while true; do ls; echo; sleep 5; done;

3

while true; do ls; echo; sleep 5; clear; done;

.

ISTO VAI EXECUTAR O COMANDO LS ATÉ PRESSIONARMOS CTRL + C PARA QUEBRÁ-LO.

.

FUNÇÕES E ARGUMENTOS

.

Ex:

.

# !/bin/bash

# REALIZAR BACKUP DO DIR

echo -e " \033[1;33m Digito o caminho de origem.: \033[0m "

read DIR_ORIGEM

clear

echo -e " \033[1;34m Digito o caminho de destino.: \033[0m "

read DIR_DESTINO

clear

verifica_argumentos(){

if [ $# -lt 1 ];

then

echo "Faltou informar um dos argumentos (parametros) necessarios!"

exit 1

fi

}

copia_arquivos(){

verifica_argumentos

clear

echo "Realizando backup..."

#Verificando se o dir de destino existe

if ! [ -d $DIR_DESTINO ]

then

mkdir $DIR_DESTINO

echo "Diretorio de Destino Criado"

fi

#COPIANDO ARQUIVOS

for arq in `ls $DIR_ORIGEM`

do

cp /$DIR_ORIGEM/$arq $DIR_DESTINO/$arq.bak

done

}

copia_arquivos

# Fim do script 08b-funcoes-e-arg.sh

.

DEFINIÇÕES DE VARIÁVEIS E ESCOPO DESTAS

.

Variáveis são definidas pela nomenclatura NOME_VARIAVEL="Valor da Variável". O valor pode ser tanto numérico quanto texto.

.

Nome="Joel"

.

Se quisermos acessá-la, basta fazer referência a ela com o caractere $ (cifrão) antes do nome: o comando echo $Nome, por exemplo, retornará a palavra "Joel".

.

Se quiser sabe informações sobre os sistemas de arquivo nos quais cada ARQUIVO reside ou, por padrão, sobre todos os sistemas de arquivos posso abrir um terminal e digitar:

VarInfo="df -h"

.

Depois digito no terminal "$VarInfo" sem aspas.

.

VARIÁVEIS DE AMBIENTE

.

As variáveis de ambiente independem da definição do usuario. Elas são criadas automaticamente, no momento em que se faz o login no sistema.

.

Ex:

PATH: define diretórios de procura por programas executados no shell;

USER: informa o nome do usuário do shell;

HOME: informa o caminho do diretório home do usuário;

PWD: diretório atual;

.

As variáveis são a base de qualquer script. É dentro delas que os dados obtidos durante a execução do script serão armazenados. Para definir uma variável, basta usar o sinal de igual "=" e para ver seu valor, usa-se o "echo":

.

Executo estes comandos abaixo no terminal:

.

VARIAVEL="um dois tres"

echo $VARIAVEL

echo $VARIAVEL $VARIAVEL

.

Para remover a variável acima:

unset VARIAVEL

.

Teste:

echo $VARIAVEL

.

É possível armazenar a saída de um comando dentro de uma variável. Ao invés de aspas, o comando deve ser colocado entre "$(...)", execute no terminal os comandos abaixo:

HOJE=$(date)

echo "Hoje é: $HOJE"

sleep 2

unset HOJE

echo $HOJE

HOJE=$(ls)

echo "O conteúdo desta pasta tem: $HOJE"

sleep 2

unset HOJE

echo $HOJE

HOJE=$(free -hmt)

echo "Informando sobre a memória desta máquina: $HOJE"

sleep 2

unset HOJE

echo $HOJE

.

EXEMPLOS DE USO DO SHELL SCRIPT:

.

Apagar arquivos velhos - Apagar periodicamente arquivos mais velhos que 30 dias do diretório /tmp:

.

#!/bin/bash

cd /tmp

find . -type f -mtime +30 -delete

# Fim do script

.

Este seria o conteúdo de um shell script que sempre que fosse executado apagaria arquivos com data de modificação maior que 30 dias a partir do diretório /tmp do sistema de arquivos.

.

Notem que ele é nada mais do que uma associação de 2 comandos (cd e find) em um arquivo para facilitar a repetição da tarefa. Este poderia ser, por exemplo, o conteúdo do arquivo /bin/limpatmp.sh e poderíamos chamar este script pela linha de comandos sempre que desejássemos repetir esta ação:

.

$ limpatmp.sh

.

Onde o símbolo "$" representa o prompt de comandos. Do ponto de vista do usuário este seria mais um comando disponível para uso.

.

Os scripts em shell são também muito empregados junto à inicialização do sistema (para auto iniciar tarefas) ou como mini aplicativos, que facilitam tarefas dos usuários, tais como montagem de dispositivos, menus de ajuda, etc.

.

Sua primeira linha obrigatoriamente começa com um "#!" (que não se deve confundir com um comentário qualquer, pois realmente é uma exceção; este par se chama, em inglês, de shebang), informando diretamente ao núcleo (kernel) qual interpretador ele deverá usar, juntamente com seu caminho, de acordo com a necessidade de cada caso. Exemplo:

#!/bin/bash

.

Em seguida, são adicionados os comandos desejados, um por linha, ou separados por ponto e vírgula. Exemplo:

.

mount -t reiserfs /dev/hda1 /mnt/hda1

ls /mnt/hda1

cp -r /mnt/hda1/* /home/user/backup

umount /dev/hda1

.

Por fim, dá-se a permissão de execução a este arquivo de texto simples ("chmod +x arquivo").

.

DATA ANTERIOR

.

#!/bin/bash

# Função em Bash para retornar a data anterior, levando em conta o mês e ano.

fn_data_anterior()

{

DIA=$D

MES=$M

ANO=$A

# Dado DIA, MES e ANO numéricos, obtém a data do dia anterior

DIA=`expr $DIA - 1`

if [ $DIA -eq 0 ]; then

MES=`expr $MES - 1`

if [ $MES -eq 0 ]; then

MES=12

ANO=`expr $ANO - 1`

fi

DIA=`cal $MES $ANO`

DIA=`echo $DIA | awk '{ print $NF }'`

fi

}

ano=`date +%Y`;

mes=`date +%m`;

let dia=10\#`date +%d`;

if (( $dia". Para guardar a saída do comando anterior no arquivo "saida", basta fazer:

cat /etc/passwd | grep root | cut -c1-10 > saida

cat saida

.

REPETINDO: O COMANDO TEST

.

O canivete suíço dos comandos do shell é o "test", que consegue fazer vários tipos de testes em números, textos e arquivos. Ele possui várias opções para indicar que tipo de teste será feito, algumas delas:

1) -lt Núm. é menor que (LessThan)

2) -d É um diretório

3) -gt Núm. é maior que (GreaterThan)

4) -f É um arquivo normal

5) -le Núm. é menor igual (LessEqual)

6) -r O arquivo tem permissão de leitura

7) -ge Núm. é maior igual (GreaterEqual)

8) -s O tamanho do arquivo é maior que zero

9) -eq Núm. é igual (EQual)

10) -w O arquivo tem permissão de escrita

11) -ne Núm. é diferente (NotEqual)

12) -nt O arquivo é mais recente (NewerThan)

13) = String é igual

14) -ot O arquivo é mais antigo (OlderThan)

15) != String é diferente

16) -ef O arquivo é o mesmo (EqualFile)

17) -n String é não nula

18) -a E lógico (AND)

19) -z String é nula

20) -o OU lógico (OR)

.

SCRIPT QUE TESTA ARQUIVOS

Tente fazer um script "testa-arquivos", que pede ao usuário para digitar um arquivo e testa se este arquivo existe. Se sim, diz se é um arquivo ou um diretório.

.

CONCEITOS MAIS AVANÇADOS:

.

CASE

.

O CASE É PARA CONTROLE DE FLUXO, TAL COMO É O IF. Mas enquanto o if testa expressões não exatas, o case vai agir de acordo com os resultados exatos. Abre com case e fecha com esac. Se nao fizer assim dá erro. Vejamos uns exemplos:

.

case $VARIAVEL in
10) echo "é 10" ;;
9) echo "é 9" ;;
7|8) echo "é 7 ou 8" ;;
*) echo "é menor que 6 ou maior que 10" ;;
esac

.

case $1 in
parametro1) comando1 ; comando2 ;;
parametro2) comando3 ; comando4 ;;
*) echo "Você tem de entrar com um parâmetro válido" ;;
esac

.

AQUI ACIMA ACONTECEU O SEGUINTE: o case leu a variável $1 (que é o primeiro parâmetro passado para o programa), e comparou com valores exatos. Se a variável $1 for igual à “parametro1″, então o programa executará o comando1 e o comando2; se for igual à “parametro2″, executará o comando3 e o comando4, e assim em diante. A última opção (*), é uma opção padrão do case, ou seja, se o parâmetro passado não for igual a nenhuma das outras opções anteriores, esse comando será executado automaticamente. Com o case fica muito mais fácil criar uma espécie de “menu” para o shell script do que com o if.

.

EXEMPLO DE SCRIPT PARA EXECUTAR NO TERMINAL:

#!/bin/bash

# Aprendendo shell script

MinhaFuncao (){

case $1 in
10) echo "é 10" ;;
9) echo "é 9" ;;
7|8) echo "é 7 ou 8" ;;
*) echo "é menor que 6 ou maior que 10" ;;
esac

}

MinhaFuncao $1

# Fim script 07hr-funcao-case-esac.sh

.

RESULTADOS:

~ $sh 07hr-funcao-case-esac.sh 8
é 7 ou 8

~ $sh 07hr-funcao-case-esac.sh 15
é menor que 6 ou maior que 10

~ $sh 07hr-funcao-case-esac.sh 9
é 9

.

REPETINDO: If, for e while

.

Assim como qualquer outra linguagem de programação, o shell também tem estruturas para se fazer condicionais e loop. As mais usadas são if, for e while.

.

ATÉ ESTE PONTO EM QUE ESTAMOS, JÁ SABEMOS O BÁSICO, O NECESSÁRIO PARA SE FAZER UM SCRIPT DE FUNCIONALIDADE MÍNIMA. E ESTE MÍNIMO PODE FAZER COISAS INCRÍVEIS. AVANÇAR:

case, if, for e while.

.

Comando if:

.

Comando if - else:

if ( condição ) {
comandos a serem executados se a condição for verdadeira;
}
else {
comandos a serem executados se a condição for falsa;
}

.

COMANDOS DE CONTROLE DE FLUXO

.

Controle de fluxo são comandos que vão testando algumas alternativas, e de acordo com essas alternativas, vão executando comandos. Um dos comandos de controle de fluxo mais usados é certamente o if, que é baseado na lógica “se acontecer isso, irei fazer isso, se não, irei fazer aquilo”.

.

EXEMPLO DE UM PEDAÇO DE CÓDIGO:

.

if [ -e $linux ]
then
echo 'A variável $linux existe.'
else
echo 'A variável $linux não existe.'
fi

.

O que este pedaço de código faz? O if testa a seguinte expressão: Se a variável $linux existir, então (then) ele diz que que existe com o echo, se não (else), ele diz que não existe. O operador "-e" é pré-definido, e você pode encontrar a listagem dos operadores na tabela:

.

-eq Igual
-ne Diferente
-gt Maior
-lt Menor
-o Ou
-d Se for um diretório
-e Se existir
-z Se estiver vazio
-f Se conter texto
-o Se o usuário for o dono
-r Se o arquivo pode ser lido
-w Se o arquivo pode ser alterado
-x Se o arquivo pode ser executado

.

Exemplo de uso do if:

.

if [COMANDOS]

then

comandos

else

comandos

fi

# Fim do script

.

Ex:

for VAR in LISTA

do

comandos

done

# Fim do script

.

Ex:

while COMANDO

do

comandos

done

# Fim do script

.

REPETINDO: Diferente de outras linguagens, o if testa um comando e não uma condição. Porém como já conhecemos qual o comando do shell que testa condições, é só usá-lo em conjunto com o if. Por exemplo, para saber se uma variável é maior ou menor do que 10 e mostrar uma mensagem na tela informando:

.

Ex:

if test "$VARIAVEL" -gt 10

then

echo "é maior que 10"

else

echo "é menor que 10"

fi

# Fim do script

.

Há um ATALHO PARA O TEST , que é o comando [. Ambos são exatamente o mesmo comando, porém usar o [ deixa o if mais PARECIDO COM O FORMATO TRADICIONAL de outras linguagens:

.

O test pode ser escrito assim:

test 1 = 1 ; echo $?

test 1 != 1 ; echo $?

.

Ou assim:

[ 1 = 1 ] ; echo $?

[ 1 != 1 ] ; echo $?

.

Executo os comandos acima no terminal.

.

O Resultado é:

~ $test 1 = 1 ; echo $?
0
~ $test 1 != 1 ; echo $?
1
~ $[ 1 = 1 ] ; echo $?
0
~ $[ 1 != 1 ] ; echo $?
1
~ $

.

EXEMPLO A SER EXECUTADO:

.

#!/bin/bash

VARIAVEL=17;
if [ "$VARIAVEL" -gt 10 ]

then
echo "é maior que 10"

elif [ "$VARIAVEL" -eq 10 ]

then
echo "é igual a 10"

else
echo "é menor que 10"
fi

# Fim do script 06r-atalho-test.sh

.

Resultado:

~ $sh 06r-atalho-test.sh
é maior que 10

.

OUTRO EXEMPLO A SER EXECUTADO:

.

#!/bin/bash

VARIAVEL=4;
if [[ "$VARIAVEL" -gt 10 ]];

then
echo "é maior que 10"

elif [[ "$VARIAVEL" -eq 10 ]];

then
echo "é igual a 10"

else
echo "é menor que 10"
fi

# Fim do script 07r-atalho-test.sh

.

Resultado:

~ $sh 07r-atalho-test.sh
é menor que 10

.

Se usar o [, também é preciso fechá-lo com o ], e sempre devem ter espaços ao redor. É recomendado evitar esta sintaxe para diminuir suas chances de erro.

.

Percebeu que neste ponto a gente está sabendo usar de verdade TEST IF THEN ELIF ELSE FI?

.

COMANDO WHILE

.

O while é um laço que é executado enquanto um comando retorna OK. Novamente o test é bom de ser usado. Por exemplo, para segurar o processamento do script enquanto um arquivo de lock não é removido:

.

Ex:

while test -f /tmp/lock

do

echo "Script travado..."

sleep 1

done

# Fim do script

.

O COMANDO FOR

.

E por fim, o "for" percorre uma lista de palavras, pegando uma por vez:

.

Ex:

for numero in um dois três quatro cinco

do

echo "Contando: $numero"

done

# Fim do script

.

Uma ferramenta muito útil para usar com o "for" é o "seq", que gera uma seqüência numérica.

.

Para fazer o loop andar 10 passos, pode-se fazer:

for passo in $(seq 10)

.

O mesmo pode ser feito com o while, usando um contador:

.

i=0

while test $i -le 10

do

i=$((i+1))

echo "Contando: $i"

done

# Fim do script

.

LOOPS EM SHELL QUANDO USAR?
.

Precisamos digitar um código talvez com ligeira mudança. Para não ter que repetir a tarefa digitando o código 20 vezes ou mais, usamos loops. Podemos usar vários loops. Tem pelo menos tres tipos de loops para o comando FOR por exemplo.

.

Exemplos abaixo:

.

for ((i=0;i 01-while1.sh ; chmod a+x 01-while1.sh ; ./01-while1.sh

.

Exemplo:

.

~ $cd ; mkdir pasta-while-loop ; cd pasta-while-loop/ ; echo -e '#!/bin/bash\n \nn=1\n \nwhile [ $n -le 5 ]\ndo\necho "Este é o loop $n"\n(( n++ ))\ndone' > 01-while1.sh ; chmod a+x 01-while1.sh ; ./01-while1.sh
Este é o loop 1
Este é o loop 2
Este é o loop 3
Este é o loop 4
Este é o loop 5
pasta-while-loop $

.

EXECUTO O SCRIPT ABAIXO:

.

#!/bin/bash

# Aprendendo loops Shell Script

# Nome: 06s-loop-while.sh

_INPUT_STRING="Olá"
while [[ "$_INPUT_STRING" != "tchau" ]]
do
echo "Você deseja ficar aqui ?"
read _INPUT_STRING

if [[ $_INPUT_STRING = 'tchau' ]]; then
echo "Você disse Tchau"
else
echo "Você ainda deseja ficar aqui"
fi
done

# Fim do 06s-loop-while.sh

.

Resultado:

~ $sh 06s-loop-while.sh
Você deseja ficar aqui ?
Sim
Você ainda deseja ficar aqui
Você deseja ficar aqui ?
Claro
Você ainda deseja ficar aqui
Você deseja ficar aqui ?
Tchau
Você ainda deseja ficar aqui
Você deseja ficar aqui ?
tchau
Você disse Tchau
~ $

.

O loop serve para scripts avançados, redes de computadores, e outros.

.

CRIE SEU PRÓPRIO EPUB USANDO O PROGRAMA SIGIL

.

LINUX COMANDOS DE MANIPULAÇÃO DE ARQUIVOS PARA USAR EM SHELL SCRIPT

.

Crio uma pasta, abro o terminal nesta pasta criada e executo:

.

ls -t -a -h -l -i

pwd

cd ..

ls -a

pwd

cd -

ls -t

pwd

touch nome-do-arquivo-a-ser-criado1.txt nome2.txt

ls -t

cat nome2.txt

echo 'Olá Mundo!' > nome2.txt

cat nome2.txt

ls ; echo ; echo "E ..." ; sleep 4 ; echo ; ls -t

clear

mkdir pasta-teste

ls -a

ls -t ; echo

rmdir pasta-teste

ls -t ; pwd

mkdir -p pasta-mama/pasta-filha

ls -t ; echo

> nome-do-arquivo-a-ser-criado3.txt ; > nome4.txt

ls -at ; echo

pwd

cp nome2.txt nome3.txt

ls -t ; echo

mv nome2.txt nome1.txt

ls -t

find -name nome2.txt

find -name nome3.txt

find -name nome1.txt

mv nome1.txt pasta-mama/

find -name nome1.txt > nome1.txt

ls

cat nome1.txt

find ./ -name nome3.txt

find ./ -name calendario-de-2018.txt

rm nome3.txt

find -name nome3.txt

ls -t

pwd

find nome-do-arquivo-a-ser-criado3.txt

rm nome-do-arquivo-a-ser-criado3.txt

ls -t

rm nome4.txt nome-do-arquivo-a-ser-criado1.txt

ls -t ; echo

clear

ls

cd pasta-mama/

cd ..

pwd

ls

cd -

ls ; echo

echo -e 'Este texto\n \né do arquivo\n \nnome1.txt\n' >> nome1.txt

cat nome1.txt

ls

mv nome1.txt pasta-filha/

ls ; echo

mkdir pasta-bro

ls

cd pasta-filha/

> texto-filha.txt

ls -t

echo -e "\n \nEste texto\n \nEstá escrito em\n \ntexto-filha.txt!" > texto-filha.txt

cat texto-filha.txt

echo -e "\n \nEste texto\n \nSobreescreve\n \ntexto-filha.txt!" > texto-filha.txt

cat texto-filha.txt

echo -e "\n \nEste texto\n \nSerá adicionado a\n \ntexto-filha.txt\n" >> texto-filha.txt

cat texto-filha.txt

ls -t

cat nome1.txt

cp nome1.txt nome8.txt

clear

ls -t

cat nome8.txt

cd ..

du -hs *

du -hs

ls

rm -rf pasta-filha/

ls

rmdir pasta-bro/

ls

cd ..

pwd

ls

rmdir pasta-mama/

ls

clear

pwd

echo -e 'L1ee\n L2nn\nL3cc\nL4yy\nL5rr\nL6ii\nL7hh\n L8jj\nL9ss\n L10mm\n L11ww\nL12oo\n L13ff' > 09-texto_teste.txt

mkdir 09-texto_teste ; mv 09-texto_teste.txt 09-texto_teste/ ; cd 09-texto_teste/ ; ls -c

cat 09-texto_teste.txt

head -5 09-texto_teste.txt

head -2 09-texto_teste.txt

tail -6 09-texto_teste.txt

tail -3 09-texto_teste.txt

head -5 09-texto_teste.txt | tail

tail -6 09-texto_teste.txt | head

wc -m 09-texto_teste.txt

wc -w 09-texto_teste.txt

wc 09-texto_teste.txt

more 09-texto_teste.txt

cd ..

rm -r 09-texto_teste/

ls -t

clear

exit

.

CRIAÇÃO/BACKUP DE/EM LINKS COM LN:

ln -s

ln -b

ln -i

.

COMANDOS DE COMPACTAÇÃO / DESCOMPACTAÇÃO

.

TAR

Armazena ou extrai arquivos e diretórios dentro de um único arquivo ou dispositivo.

.

Sintaxe: tar [opções] arquivos_ou_diretórios

Opções:

-c :: cria um novo arquivo .tar e adiciona a ele os arquivos especificados

-x :: retira os arquivos agrupados no arquivo .tar

-f :: indica que o destino é um arquivo em disco e não uma fita magnética

-v :: exibe o nome de cada arquivo processado

-Z :: compacta ou descompacta arquivos utilizando o comando compress

-z :: compacta ou descompacta arquivos utilizando o comando gzip

-j :: compacta ou descompacta arquivos utilizando o comando bzip2

-M :: múltiplos volumes

-b n :: define o tamanho do bloco de dados utilizado pelo tar (n*512 bytes)

.

Exemplos:

1. Gera um arquivo de backup do diretório "documentos1":

mkdir -p documentos1/doc_sub_pasta

tar -cvf documentos.tar documentos1

2. Exibe o conteúdo do arquivo "documentos.tar":

tar -tvf documentos.tar

3. Extrai o conteúdo do arquivo "documentos.tar":

tar -xvf documentos.tar

5. Gera um arquivo de backup compactado com bzip2 do diretório "documentos1":

tar -cvjf memorandos.tar.bz2 documentos1

6. Divide em vários disquetes o arquivo "documentos.tar.bz2":

tar -cvMf /dev/fd0 /operftp/documentos.tar.bz2

7. Extrai o arquivo de backup armazenado no disquete:

tar -xvMf /dev/fd0

.

CPIO

Executa funções de arquivamento de dados.

.

Sintaxe: cpio [opções]

Opções:

-o :: lê nomes de arquivos da entrada padrão e os copia para a saída padrão com a informação necessária para a sua recuperação posterior com o comando: cpio -i

-i :: lê da entrada padrão um arquivo criado pelo comando cpio -o e extrai os arquivos armazenados

-v :: exibe o nome de cada arquivo processado

.

Exemplos:

1. Copia todos os arquivos mencionados em "lista.txt" para o arquivo "backup.cpio":

cpio -o /operftp/lista.txt > /operftp/backup.cpio

2. Extrai todos os arquivos armazenados em "backup.cpio":

cpio -i procedimento.zip

.

COMPRESS

Compacta um ou mais arquivos utilizando a compactação Lempel-Ziv.

Sintaxe: compress [opções] arquivos

Opções:

-c :: grava o arquivo compactado na saída padrão e retém o arquivo original

-d :: descompacta o arquivo

-r :: compacta recursivamente arquivos em todos os subdiretórios

Exemplos:

compress documentos.tar
$ compress -d documentos.tar.Z

.

UNCOMPRESS

Descompacta um ou mais arquivos que tenham sido compactados com o comando compress.

Sintaxe: uncompress [opções] arquivos

Opções:

-c :: grava o resultado na saída padrão e retém o original

-r :: descompacta recursivamente arquivos em todos os subdiretórios

Exemplo:

uncompress documentos.tar.Z

.

GZIP

Compacta um ou mais arquivos.

Sintaxe: gzip [opções] arquivos

Opções:

-c :: grava o arquivo compactado na saída padrão e retém o arquivo original

-d :: descompacta arquivo. O mesmo que gunzip

-f :: sobrescreve arquivos já existentes

-h :: mensagem de ajuda

-l :: lista o conteúdo de um arquivo compactado

-t :: testa a integridade do arquivo compactado

-n :: não salva o nome original

-r :: compacta recursivamente arquivos em todos os subdiretórios

-L :: exibe a licença do comando

Exemplos:

gzip documentos.tar

$ gzip -d documentos.tar.gz

.

GUNZIP

Descompacta arquivos compactados pelos comandos gzip e compress. Utiliza as mesmas opções de gzip.

Sintaxe: gunzip [opções] arquivos

Exemplo:

gunzip documentos.tar.gz

.

BZIP2

Compacta um ou mais arquivos.

Sintaxe: bzip2 [opções] arquivos

Opções:

-z :: força a compressão

-c :: grava na saída padrão

-t :: testa a integridade do arquivo compactado

-f :: sobrescreve arquivos já existentes

-d :: descompacta arquivos. O mesmo que bunzip2

-k :: não apaga os arquivos de entrada

-L :: licença do comando

Exemplos:

bzip2 documentos.tar

$ bzip2 -d documentos.tar.bz2

.

BUNZIP2

Descompacta arquivos compactados pelos comandos gzip ou compress. Utiliza as mesmas opções de bzip2.

Sintaxe: bunzip2 [opções] arquivos

Exemplo:

bunzip2 documentos.tar.bz2

.

ZIP

Compacta um ou mais arquivos.

Sintaxe: zip [opções] arquivo-destino arquivo-origem

Opções:

-e :: permito encriptar o conteúdo de um arquivo ZIP através de senha. A senha será pedida no momento da compactação

-m :: apaga os arquivos originais após a compactação

-r :: compacta recursivamente arquivos em todos os subdiretórios

Exemplos:

zip documentos.zip *.txt

$ zip -r documentos.zip /usr/*.txt

.

UNZIP

Descompacta arquivos compactados pelo comando zip.

Sintaxe: unzip [opções] arquivo.zip arquivos-origem [diretório]

Opções:

-l :: exibe os arquivos existentes dentro do arquivo ZIP

-d :: diretório onde os arquivos serão descompactados

-o :: substitui arquivos existentes sem perguntar

Exemplos:

unzip documentos.zip
$ unzip documentos.zip -d /operftp

.

ZCAT, ZMORE, ZLESS, BZ2CAT

Visualiza o conteúdo de um arquivo texto compactado, sem precisar descompactar o arquivo.

Os comandos zcat, zless e zmore funcionam da mesma forma que cat, less e more. A única diferença, é que esses comandos podem ler diretamente arquivos compactados com gzip ou compress sem precisar descompactar os arquivos.

.

EXEMPLOS:

.

zcat nome_arquivo

zless nome_arquivo

zmore nome_arquivo

bz2cat nome_arquivo

.

LINUX PERMISSOES DE PASTAS E ARQUIVOS

.

As permissões são usadas para definir quem pode acessar determinados arquivos ou diretórios, assim mantendo segurança e organização em sistemas e redes. Cada arquivo ou pasta tem 3 permissões:

(Usuário Dono) (Grupo Dono) (outros)

.

Usuário dono: é o proprietário do arquivo. Grupo Dono: é um grupo, que pode conter vários usuários. Outros: se encaixam os outros usuários em geral. O comando "ls -lh" faz uma listagem longa e detalhada no diretório onde eu estiver com o terminal aberto.

.

PARA ENTENDER AS PERMISSÕES DE PASTAS E ARQUIVOS, VOU FAZER O SEGUINTE:

.

Abro o terminal pelo menu do sistema. Não sou root, sou um usuário comum com alguns poderes administrativos, mas o prompt do terminal não está em root (#) está ($).

.

CRIO UMA PASTA COM O COMANDO:

mkdir pasta-estudo-permissoes

.

ENTRO NA PASTA COM O COMANDO:

cd pasta-estudo-permissoes/

.

CRIO UM ARQUIVO DE TEXTO CHAMADO estudo-permissoes.txt COM O COMANDO:

> estudo-permissoes.txt

.

CRIO OUTRO ARQUIVO COM O COMANDO:

touch permissoes-estudos.txt

.

DIGITO:

ls -lh

.

O RESULTADO É:

pasta-estudo-permissoes $ls -lh
total 0
-rw-rw-r-- 1 user user 0 mar 8 05:15 estudo-permissoes.txt
-rw-rw-r-- 1 user user 0 mar 8 05:16 permissoes-estudos.txt

.

AS PERMISSÕES DE ARQUIVOS SÃO INFORMADAS A MIM POR 5 CARACTERES. SÃO ELES:

r (significa leitura ), w (significa escrita ), x (significa execução ), - (hífen), d (indica que é uma pasta/diretório)

.

A PERMISSÃO DE ARQUIVOS E PASTAS ESTÁ DIVIDIDA EM QUATRO PARTES POR EXEMPLO:

Parte 1: -, Parte 2: rw-, Parte 3: r--, Parte 4: r--

.

NO TERMINAL ESTAS QUATRO PARTES SERÃO VISTAS ASSIM:

-rw-r--r--

.

EXEMPLO:

-rw-rw-r-- 1 user user 0 mar 8 05:15 estudo-permissoes.txt

.

Parte 1 (-)

hífen: o caractere "-" no início da sequência indica que aquele é um arquivo comum. Caso contrário, indica que a permissão de escrita, leitura ou execução está negada.

.

Parte 2 (rw-)

r: leitura permitida do arquivo ou diretório

.

w: permite editar um arquivo ou modificar o conteúdo de um diretório

.

hífen: o caractere "-" no início da sequência indica que aquele é um arquivo comum. Caso contrário, indica que a permissão de escrita, leitura ou execução está negada.

.

Parte 3 (r --)

r: leitura permitida do arquivo ou diretório

.

hífen: o caractere "-" no início da sequência indica que aquele é um arquivo comum. Caso contrário, indica que a permissão de escrita, leitura ou execução está negada.

.

hífen: o caractere "-" no início da sequência indica que aquele é um arquivo comum. Caso contrário, indica que a permissão de escrita, leitura ou execução está negada.

.

Parte 4 (r--)

r: leitura permitida do arquivo ou diretório

.

hífen: o caractere "-" no início da sequência indica que aquele é um arquivo comum. Caso contrário, indica que a permissão de escrita, leitura ou execução está negada.

.

hífen: o caractere "-" no início da sequência indica que aquele é um arquivo comum. Caso contrário, indica que a permissão de escrita, leitura ou execução está negada.

.

EU POSSO ALTERAR AS PESMISSÕES DESTES ARQUIVOS USANDO CHMOD.

.

O CHMOD É UM COMANDO QUE ALTERA AS PERMISSÕES DE ARQUIVOS E DIRETÓRIOS.

.

APRENDER COMO INTERPRETAR AS PERMISSÕES AJUDA A USAR O COMANDO CHMOD, POIS QUE ESSE COMANDO TRABALHA COM UMA SINTAXE SEMELHANTE.

.

A "FÓRMULA" DE USO MAIS SIMPLES DO CHMOD É:

chmod ugoa+-=rwx arquivo/diretório

.

SENDO QUE:

1) u: define que as regras serão aplicadas ao usuário

2) g: define que as regras serão aplicadas ao grupo

3) o: define que as regras serão aplicadas aos outros usuários do sistema

4) a: define que as regras serão aplicadas a todos

5) +: adiciona permissão

6) -: remove permissão

7) =: informa que a permissão aplicada deve ser exatamente igual a que será indicada a seguir

8) r: atribui a permissão de leitura

9) w: atribui a permissão de escrita

10) x: atribui a permissão de execução

.

COM ESTE PEQUENO/GRANDE CONHECIMENTO ADQUIRIDO, POSSO EXECUTAR UM COMANDO ALTERANDO AS PERMISSÕES DE UM ARQUIVO QUE EU CRIEI. O ARQUIVO "permissoes-estudos.txt".

.

EXECUTO NO TERMINAL:

sudo chmod g+w permissoes-estudos.txt

.

O chmod precisa ser usado com o comando sudo, pois apenas o usuário root tem a permissão de executá-lo. Depois de informar a senha e de ter concluído a execução, basta listar o arquivo com o ls -l para conferir a nova permissão. Percebo que onde antes era r--, agora se tornou rw-

.

CASO QUEIRA REMOVER A PERMISSÃO DE LEITURA, ESCRITA E EXECUÇÃO DE PESSOAS QUE NÃO PERTENCEM AO GRUPO, USO:

sudo chmod o-rwx permissoes-estudos.txt

.

SE QUISER DAR A PERMISSÃO DE ESCRITA E LEITURA PARA TODOS OS USUÁRIOS DO SISTEMA, BASTA EXECUTAR:

sudo chmod a+rw permissoes-estudos.txt

.

O PARÂMETRO a+rw VAI APENAS ADICIONAR A PERMISSÃO DE LEITURA E ESCRITA, ISTO É, CASO O DONO DO ARQUIVO, GRUPO E OUTROS USUÁRIOS JÁ POSSUAM A PERMISSÃO DE EXECUÇÃO, ELA NÃO SERÁ REVOGADA. SE EU QUISER IMPOR A REGRA DE APENAS LEITURA E ESCRITA, REVOGANDO UMA PERMISSÃO DE EXECUÇÃO PRÉ-EXISTENTE, USO O SINAL DE IGUAL:

sudo chmod a=rw permissoes-estudos.txt

.

OUTRA FORMA DE USAR O CHMOD

.

Existe mais de uma forma de usar o chmod e muitos preferem esta segunda, que ensinaremos a seguir. Em vez de digitar letras e operadores matemáticos, como o caso de a+rw, por exemplo, muitos administradores preferem estipular as permissões com códigos numéricos.

.

PARA ISSO, VOCÊ PRECISA PENSAR NA REGRA DE PERMISSÃO COMO SE FOSSE UMA SEQUÊNCIA DE BITS. A PERMISSÃO rwx, POR EXEMPLO, EQUIVALERIA A 111, ENQUANTO QUE RW- SE TRANSFORMARIA EM 110. RESUMINDO: 1 PARA LETRA, 0 PARA HÍFEN. CONVERTER ESSES NÚMEROS DE BASE BINÁRIA PARA DECIMAL, 111 VIRARIA 7, ENQUANTO QUE 110 SE TORNARIA 6.

.

VEJA O EXEMPLO ABAIXO BEM FÁCIL:

.

rwx
111
7

rw-
110
6

.

SEGUINDO ESSA LÓGICA, SE VOCÊ QUISESSE FORNECER AS PERMISSÕES DE LEITURA, ESCRITA E EXECUÇÃO PARA TODOS OS USUÁRIOS DO SISTEMA, PODERIA DIGITAR A SEGUINTE LINHA:

sudo chmod 777 nome-do-arquivo

.

SE PREFERIR MANTER A OPÇÃO DE EXECUTAR O ARQUIVO APENAS PARA O DONO E GRUPO DELE, ENTÃO A LINHA MUDA PARA:

sudo chmod 776 nome-do-arquivo

.

PARA FACILITAR E NÃO TER QUE CONVERTER DE CABEÇA TODOS ESSES NÚMEROS, EXISTE UMA PEQUENA TABELA DE APENAS OITO (8) PERMISSÕES, QUE PODE SER CONSULTADA SEMPRE QUE NECESSÁRIO:

.

Permissão1: 0 ; Permissão2: 1 ; Permissão3: 2 ; Permissão4: 3 ; Permissão5: 4 ; Permissão6: 5 ; Permissão7: 6 ; Permissão8: 7. Onde a:

.

# A permissão 1:

---

Convertida para binário:

000

Tem o decimal:

0

# A permissão 2:

--x

Convertida para binário:

001

Tem o decimal:

1

# A permissão 3:

-W-

Convertida para binário:

010

Tem o decimal:

2

# A permissão 4:

-WX

Convertida para binário:

011

Tem o decimal:

3

# A permissão 5:

r--

Convertida para binário:

100

Tem o decimal:

4

# A permissão 6:

r-x

Convertida para binário:

101

Tem o decimal:

5

# A permissão 7:

rw-

Convertida para binário:

110

Tem o decimal:

6

# A permissão 8:

rwx

Convertida para binário:

111

Tem o decimal:

7

.

CASO NÃO HAJA TODAS AS PERMISSÕES, PODERÁ APARECER INCOMPLETO:

rwxrw_ _ _x, ou seja, neste exemplo:

Dono do arquivo tem permissão de Ler, Escrever e executar (rwx).

Grupo tem permissão de Ler e Escrever (rw_).

Outros tem permissão apenas de executar. (_ _ x).

.

CONCLUSÃO:

.

EXISTEM DOIS MODOS DE DEFINIR UMA PERMISSÃO, ATRAVÉS DO MODO OCTAL E MODO TEXTUAL.

.

TEXTUAL - Usamos letras antes das permissões (chmod é o comando para modificar permissões de arquivos):

$ chmod u+rw, g+w, o-rwx teste.txt

Onde:

U - representa usuário;
G - representa grupo;
O - representa outros.

ugo

.

MODO OCTAL

.

O modo Octal tem a mesma função de definir permissões, só que em números. Exemplo:

$ chmod 620 permissoes-estudos.txt

(comando) (permissão) (arquivo)

.

Tipo de permissão Octal:

4 - Indica permissão de leitura;
2 - Permissão de escrita;
1 - Indica permissão de execução;
0 - Indica sem permissões.

.

Agora é simples, é só somar e ditar as permissões, exemplo:

4 + 2 + 1 = 7 (permissão de rwx)
4 + 2 = 6 (permissão rw)
4 = (permissão r)

.

Exemplo: A permissão 610 indica que o arquivo tem permissão:

6 para dono do arquivo
1 para grupo e
0 para outros ou seja

dono= (rw_) Grupo=(_ _ x) outros=(_ _ _)

.

Percebo que quando é feita a listagem longa "ls -l", o primeiro caractere não é uma permissão.

.

O primeiro caracter "d" indica o tipo do arquivo, neste caso "d" indica que é um diretório.

.

Existem também outras permissões especiais mas não quero saber no momento.

.

Com um pouco de prática talvez um dia eu esteja alterando permissões de arquivos e diretórios de maneira automática. Mas eu garanto que você e eu, nunca mais vamos esquecer do que faz um chmod 777.

.

Posso ler este texto em formato .txt no celular usando o FBreader ou algum outro programa do Android.

.

CREIO QUE ISTO É UM BOM COMEÇO. A GENTE NUNCA PARA DE APRENDER. QUER CONTINUAR?

.

O QUE É INODE?

.

Acho que o termo Inode deriva da expressão Index Node e é basicamente uma estrutura existente num sistema de ficheiros com informação sobre os dados armazenados neste sistema. Colocando de uma forma mais simples, podemos dizer que um Inode é um mapa dos dados guardados num disco rígido, USB, ou qualquer outro sistema de ficheiros.

Este mapa é fundamental para o correto funcionamento de um sistema de ficheiros pois permite ao sistema encontrar rapidamente um dado ficheiro. Consequentemente, o Inode num disco é atualizado sempre que são alterados os dados neste dispositivo. Apesar de conter informação sobre os dados presentes num dispositivo, o Inode não contem os dados em si, ou seja, lembro da:

METÁFORA DO MAPA: IMAGINO QUE UM MAPA PODE ME LEVAR À BIBLIOTECA MAIS PRÓXIMA, ELE CONTÉM NOMES DE RUAS E AS DIREÇÕES PARA CHEGAR LÁ, MAS NÃO CONTÉM LIVROS.

O Inode, por sua vez, contém dados sobre os dados, os chamados "meta-dados", não guarda os dados em si.

.

CURIOSIDADE:

.

Quem desenvolve software com Linux para usar no Linux, tem que disponibilizar o código fonte.

Muitos desenvolvedores disponibilizam um código fonte sem muita informação, sem instrução detalhada de como compilar. Algo tão complexo e trabalhoso que, para dele se obter o software e usa-lo só PAGANDO A UM OUTRO PROFISSIONAL ESPECIALIZADO. Porque se uma pessoa comum não é capaz de compilar então este conhecimento (poder) está concentrado na mão de uma minoria. E se está concentrado na mão de um minoria o software é livre? Pode ser gratúito, mas é livre?

A complexidade do código fonte é uma barreira criada com propósito.

Um deles é este.

Nega o software a grupos, empresas e o usuário comuns por causa da sua extrema complexidade de compilação.

Pode ser que isto já seja a regra.

TENTE INSTALAR ALGUNS PROGRAMAS USANDO O CÓDIGO FONTE E TIRE SUA PRÓPRIA CONCLUSÃO.

.

Ganhar dinheiro vendendo serviços e criando programas com software Linux é bom.

.

Criar barreiras para dificultar o uso do código fonte não é bom.

.

Existem pessoas que creditam que melhores softwares podem resultar de um modelo
aberto de desenvolvimento do que de modelos proprietários.

Teoricamente, qualquer empresa criando um software para uso próprio pode economizar dinheiro adicionando suas contribuições as dos outros a fim de obter um produto final muito melhor para ela mesma.

Quem quer ganhar dinheiro com a venda de software precisa ser extremanente criativo atualmente.

A pessoa ou empresa pode vender o software que cria usando Linux, mas tem que incluir um software GPL, o código-
fonte dele que deve ser passado para frente.

Outros podem recompilar esse produto, e assim usar o software e pode até revender sem custos.

.

ENTÃO PARA GANHAR DINHEIRO GRUPOS, PESSOAS E EMPRESAS PODEM:

Vender seus produtos com base em uma assinatura. Por uma determinada quantia de dinheiro por ano, você obtém o código binário para rodar o Linux (assim você não tem que compilar por conta própria), suporte garantido, ferramentas para monitoramento de hardware e software no seu computador, acesso à base de conhecimento da empresa e outros recursos.

.

A maioria dos sistemas operacionais oferecidos gratuitamente, inclui grande parte do mesmo software que outros oferecem com base em uma assinatura. Também estão disponíveis em forma binária, mas não há garantias associadas com o software ou futuras atualizações dele.

.

Dizem que pequeno escritório ou um usuário pessoal pode arriscar usar sistemas operacionais Linux excelentes e gratúitos, mas uma grande empresa que está executando aplicações de missão crítica provavelmente acabará investindo algum dinheiro em produtos com base em uma assinatura.

.

Para lucrar, gerar capital, ganhar dinheiro empresas que trabalham com Linux oferecem:

.

1
Treinamento e certificação

2
Recompensas de software

uma maneira fascinante de as empresas de software de código-fonte aberto fazerem dinheiro. Digamos que uma empresa/grupo/usuário está usando o pacote de software ABZ e precisa de um novo recurso imediatamente. Ao pagar uma recompensa de software para o projeto em si, ou para outros desenvolvedores, a empresa/grupo/usuário pode ter as melhorias que precisa deslocadas para o início da fila.

O software que empresa/grupo/usuário paga permanecerá coberto pela sua licença de código-fonte aberto, mas a empresa/grupo/usuário terá os recursos de que precisa provavelmente mais barato que o custo da construção do projeto a partir zero.

3
Doações

Muitos projetos de código-fonte aberto aceitam doações de pessoas físicas ou empresas de desenvolvimento de código-fonte aberto que usam código a partir de seus projetos. Surpreendentemente, muitos projetos de código-fonte aberto suportam um ou dois desenvolvedores e funcionam exclusivamente com base em doações. Estojos, canecas e camisetas - Muitos projetos de código-fonte aberto têm lojas online onde podemos comprar CDs e uma variedade de canecas, camisetas, mouse pads e outros souvenires. Se tu amas um projeto de verdade, compre uma camiseta e uma caneca. Formas mais criativas estão a ser inventadas diariamente para apoiar quem esta a produzir software de código-fonte aberto.

4
Retorno obtido

Pessoas/Grupos se tornam colaboradoras e mantenedoras de software de código-fonte aberto porque precisavam ou queriam o software. As contribuições que elas fazem gratuitamente valem a pena pelo retorno que elas obtêm de outras pessoas que fazem o mesmo.

.

Não esqueça que para algumas pessoas, o Linux não tem como objetivo lucro. O objetivo do Linux é garantir a tua liberdade. O trabalho colaborativo produz ótimos softwares disponíveis a todos em toda parte.

.

APRENDENDO SHELL SCRIPT - CONTINUE, BREAK E EXIT

.

A instrução "continue" é usada para retomar a iteração seguinte do loop FOR, WHILE ou UNTIL.

Use a instrução break para sair de dentro de um loop FOR, WHILE ou UNTIL, isto é, pare a execução do loop.

O exit é usado para definir o status da execução do programa, se o valor de $? for 0 então tudo ocorreu naturalmente, se não houve erro.

Você pode por o exit 0 no final do seu script para sair sem problemas, e um echo $? para saber qual foi o código de retorno na execução do programa.

No exemplo abaixo só irá imprimir 8 e 9, perceba o uso continue , break e exit.

.

#!/bin/bash

for i in $(seq 1 10);
do
if [[ "$i" "9" ]]; then
break;
fi

echo $i;

done

exit 0;

# Fim do arquivo: i8-continue-break-exit.sh

.

EXECUTO O EXEMPLO ABAIXO:

.

#!/bin/bash

_INPUT_STRING="Olá"
while :
do
echo "Você deseja ficar aqui?"
read _INPUT_STRING

if [[ $_INPUT_STRING = 'tchau' ]]; then
continue
else
echo "Você ainda deseja ficar aqui"
fi

done

# Fim do arquivo: 0n4-read-continue.sh

.

OBS:
Se for o caso, SAIA COM: Ctrl +C

.

Execute o script abaixo:

#!/bin/bash

_INPUT_STRING="Olá"
while :
do
echo "Você deseja ficar aqui?"
read _INPUT_STRING

if [[ $_INPUT_STRING = 'tchau' ]]; then
continue
else
break
fi

done

# Fim do arquivo: 1n5-read-continue.sh

.

OBS:
Se for o caso, SAIA COM: Ctrl +C

.

Executa o script abaixo:

#!/bin/bash

_INPUT_STRING="Olá"
while :
do
echo "Você deseja ficar aqui?"
read _INPUT_STRING

if [[ $_INPUT_STRING != 'tchau' ]]; then
continue
else
break
fi

done

# Fim do arquivo: 1n5-continue-break.sh

.

Resultado:

~ $sh 0n4-read-continue.sh
Você deseja ficar aqui?
Hmhm
Você deseja ficar aqui?
Sim
Você deseja ficar aqui?
Não sei
Você deseja ficar aqui?
Pare!
Você deseja ficar aqui?
tchau
~ $

.

Executa o script abaixo:

#!/bin/bash

_INPUT_STRING="Olá"
while :
do
echo "Você deseja ficar aqui?"
read _INPUT_STRING

if [[ $_INPUT_STRING != 'tchau' ]]; then
continue
else
exit 0
fi

done

# Fim do arquivo: 2n-continue-exit.sh

.

COMANDO EVAL

O comando eval é perigoso evito usar ele. Aqui um exemplo de uso do eval. Quem desenvolve software é que sabe usar o eval.

.

Execute os comandos abaixo no terminal:

A='ls'

B=A

echo $B

echo '$'$B

eval echo '$'$B

.

O COMANDO EXEC

O comando exec substitui o processo shell atual pelo comando especificado. O exec cria a segunda parte da junção, o que não seria possível usando o pipe |.

.

APRENDENDO SHELL SCRIPT - MATEMÁTICA EM SHELL SCRIPT

.

Expressões com parênteses são efetuadas em primeiro lugar.

.

\*, % e / são efetuados antes de + e -

.

Todo o resto é efetuado da ESQUERDA para a DIREITA.

.

No caso da multiplicação utiza-se \*, pois o asterisco é um curinga do Linux.

.

FORMAS DE CÁLCULO:

.

echo $((2+2))

echo $((2+2*5))

echo $((2+2*5/2))

a=2+2 ; echo $a

declare -i a

a=2+2 ; echo $a

a=2+2 ; echo $a

echo "5/2" | bc

echo "scale=2;5/2" | bc

bc

2+2

scale=2;5/2

quit

expr 2 + 2

bc Alista_de_list.txt

2) echo -e 'Xandra \nUtacilio\nFlorildo \nInaciana \nKaline\nBertoco \nAnistica \nDoelha \nVentroto \nClarada' > Alista_de_list.txt

3) ls -li Alista_de_list.txt (listar permissões e inode)

4) > VimSegundoScript.sh

5) chmod +x VimSegundoScript.sh ; vim VimSegundoScript.sh

6) Aperto "Esc" e depois "i". Digito:

#!/bin/bash

clear
echo "==== Meu Segundo Script Vi ===="
sleep 2
echo ""
echo "======================"
echo -n "Saber data e hora do sistema:"
sleep 2
date
sleep 3
echo "======================"
echo "Listagem de Criaturas:"
sleep 2
echo "======================"
sort Alista_de_list.txt
sleep 5
echo ""
echo "======================"
echo "=== Listagem de arquivos por data de modificação: ==="
sleep 2
echo "======================"
ls -t
sleep 4
echo "======================"
exit

7) Aperto "Esc" digito :x (aperto Enter)

8) ls -li VimSegundoScript.sh

.

Executo com os comandos abaixo:

1) ./VimSegundoScript.sh

2) source VimSegundoScript.sh

3) . VimSegundoScript.sh

4) sh VimSegundoScript.sh

5) bash VimSegundoScript.sh

.

Ok. Beleza!

.

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!

🙂

.