Linux shell script instrução case


A instrução case


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

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

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


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


Exemplo:

## Declarando variável
VAR5=$1

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

O mesmo que o de cima :

VAR5=$1

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

A instrução case permite que:

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


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


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


Você deve incluir dois ponto e vírgula

;;

no final de cada comandoN.


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


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


Exemplo :

#!/bin/bash

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

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

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

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

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

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

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

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

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

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

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

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

esac

Conclusão :

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

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


Até Breve!

🙂


lista_conteudo_arquivo_7z.sh

#!/usr/bin/env bash

# Titulo: lista_conteudo_arquivo_7z.sh
# Autor: semanickz
# Versão: 0.0
# Email:
# Site: https://semanickz.worpress.com
# Data: 03-05-2020_23:46:25
# Distro: GNU/Linux
# Exemplo de uso: ./lista_conteudo_arquivo_7z.sh
# Objetivo:
# Variaveis: f
# TODO - indica uma tarefa a ser feita
# FIXME - indica um bug conhecido que precisa ser arrumado
# XXX - notícia, chama a atenção

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

# Você pode criar um alias com este script.

# alias cont7z='clear ; echo -e "\nListar conteúdo de arquivo 7z: \n" ; sleep 3 ; echo Local: ; pwd ; sleep 2 ; echo "" ; echo :Lista... ; ls -t | head ; sleep 2 ; echo "" ; read -p "Digite o nome com extensão do arquivo 7z : " CONT ; echo :Listando-Cont-7z: ; sleep 2 ; echo ; 7z l "$CONT" ; echo'

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

clear

echo -e "\nObjetivo: listar conteúdo de arquivo 7z: \n"
sleep 3

echo Local:
pwd
sleep 2

echo ""

echo :Lista...
ls -t | head
sleep 2

echo ""
read -p "Digite o nome com extensão do arquivo 7z : " CONT

echo :Listando-Cont-7z:
sleep 2

echo ""
7z l "$CONT"
echo ""

# fim do script

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

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 nome UID usuário OneLiner

Linux oneliner UID

Linux oneliner nome do usuário UID


Comandos individuais do Linux podem ser combinados na linha de comando, para realizar tarefas que de outra forma exigiriam que scripts de shell fossem gravados.

Shell scripts de uma linha ajudam a realizar algumas tarefas úteis. Por exemplo, um shell script de uma linha (oneliner shell script) que exibe nome do usuário UID classificando a informação ao usar o recurso de corte (cut), o comando (sort) e o comando tr (o utilitário tr copia a entrada padrão para a saída padrão com substituição ou exclusão de caracteres selecionados.).

O que é UID?

Definição do ID do Usuário – Um ID do usuário (UID) é um número inteiro positivo exclusivo atribuído por um sistema operacional semelhante ao Unix para cada usuário. Cada usuário é identificado no sistema pelo seu UID, e os nomes de usuários são geralmente usados apenas como uma interface para humanos. Os UIDs são armazenados, juntamente com seus nomes de usuário correspondentes e outras informações específicas do usuário, no arquivo /etc/passwd, que podem ser lidos com o comando cat da seguinte forma:

cat /etc/passwd

O terceiro campo contém o UID e o quarto campo contém o ID do grupo (GID), que por padrão é igual ao UID para todos os usuários comuns.

Voltando ao oneliner, o comando cut é usado para extrair parte específica de um arquivo. O exemplo a seguir corta o nome de usuário e o UID do arquivo /etc/passwd e classifica a saída com o comando sort usando username como uma chave e “:” como um delimitador. Como parte da formatação da saída, você pode usar qualquer outro caractere para exibir o nome de usuário e o UID. Usando o comando tr, você pode converter para “:” para qualquer outro caractere. Abaixo, está o supracitado oneliner:

cut -d ':' -f 1,3 /etc/passwd | sort -t ':' -k2n - | tr ':' '\t'


Até Breve!

🙂



Entre em contato


Fonte

Linux atalhos de teclado


Os Melhores atalhos de teclado do Linux


Atalhos de teclado podem acelerar muito sua produtividade. A má notícia é que os atalhos de teclado são um alvo em movimento no Linux: você verá diferentes comportamentos em diferentes aplicativos, ambientes de área de trabalho e shells de comando. Você pode personalizá-los. A má notícia é que, mesmo quando você tem uma configuração central de teclado para seu ambiente de desktop específico, muitos aplicativos podem ser personalizados individualmente. Toda essa flexibilidade permite ajustar seu fluxo de trabalho. A má notícia é que toda essa flexibilidade pode talvez deixá-lo(a) louco(a). Ou mais louco(a) ainda.

O que são teclas Meta, Super e Hyper?
As teclas super e hiper vão muito além dos dias do teclado cadete espacial, que tinha teclas com esses rótulos. Esses dias já se foram, mas a terminologia persiste, para a confusão dos usuários modernos de computadores. Nenhuma dessas chaves existe em teclados modernos, mas são mapeadas para outras teclas, como a tecla Alt, a tecla Windows ou a tecla Ctrl. Como autores que se referem à meta key esperam que você saiba a qual chave seu sistema particular a mapeou. A chave Super é a menos ambígua dos três termos. Geralmente é a chave com o logotipo do Windows, a menos que você tenha um teclado adequado com um logotipo do Linux. Eu não vi a hiper-chave mencionada há muito tempo, mas assim como a meta-chave, ela pode ser mapeada para outras chaves. Os mapeamentos de teclas são específicos para ambientes de área de trabalho, aplicativos individuais e shells de comando, de modo que é onde você olha quando descobre tudo. Por exemplo, no KDE, são Configurações do Sistema> Atalhos e Gestos. No XFCE procure o Gerenciador em Configurações > Preferências > Teclado. No GNOME procure em Configurações do sistema > Teclado> Atalhos.

OBS: em algumas distribuições do Linux pode ser diferente.


Alguns Atalhos de Teclado:


alt + f1 Abre o menu do sistema. Então você navega com as setas e seleciona com a tecla Return.

alt + f2 Abre um lançador de comandos. Este é o meu favorito porque não amarra um terminal e é mais rápido do que percorrer o menu do sistema.

alt + f4 Fecha a janela focalizada.

alt + mouse Pega uma janela em qualquer lugar que você deseja colocar o cursor. Isso é ótimo para arrastar de volta uma janela que foi movida além da borda da tela.

shift + del Exclui permanentemente um arquivo sem enviá-lo para a Lixeira.

ctrl + alt + l Bloqueia a tela.

alt + tab Circula pelos aplicativos abertos.

ctrl + backspace Exclui uma palavra inteira em muitos editores de texto.

ctrl + z é Desfazer e ctrl + shift + z é refazer.

ctrl + a Seleciona tudo, ctrl + c Copia a seleção.

ctrl + x Recorta e ctrl + V Cola.

As setas esquerda-direita-acima-abaixo selecionam, sendo que as setas crtl + direita-esquerda movem o cursor uma palavra por vez.

crtl + up-down As teclas de seta rolam para cima e para baixo uma linha de cada vez sem mover o cursor ou movem o cursor uma linha por vez, dependendo de qual aplicativo você está usando.

Pressionar o botão Print Screen faz uma captura de tela de toda a sua área de trabalho e abre uma caixa de diálogo para salvar.

F11 Alterna a exibição em tela cheia em vários aplicativos, por exemplo, Firefox, Chrome, Gedit e Gimp. Quando você deseja selecionar vários arquivos em um gerenciador de arquivos, as teclas ctrl e shift são suas amigas.

Para fazer uma seleção consecutiva, primeiro clique em um nome de arquivo, pressione a tecla shift e clique no final da sua seleção. Contanto que você esteja pressionando a tecla Shift, poderá selecionar mais ou menos arquivos clicando em locais diferentes ou usando as teclas de seta.

Use ctrl + clique para selecionar lotes de arquivos arbitrários, um de cada vez, ou para adicionar ou desmarcar itens individuais de um lote shift + click.

ctrl + clique duplo tem habilidades especiais no Firefox e no LibreOffice Writer - você pode selecionar várias palavras arbitrárias na página.

ctrl + clique duplo seleciona palavras arbitrárias.


Provavelmente há alguma documentação para o seu sistema Linux em keymappings, mas é mais rápido e mais prático, abrir o seu configurador de teclado ver o que ele tem a lhe oferecer e assim saber melhor.


Até Breve!


🙂


Fonte


Obrigado ao software: ghostwriter v1.6.2 – Copyright © 2014-2018 wereturtle, por tornar bem mais fácil criar meus posts.

Linux cortar um pedacinho de um video…

Linux cortando os vídeos com base no horário de início e término usando o ffmpeg


Quero uns 4 segundos/minutos de um video. Bem no início. Sei disto pelo tempo que vi no reprodutor de midia e anotei. Uso o comando abaixo:


ffmpeg -i input.mp4 -ss 00:01:40 -to 00:02:12 -c copy output.mp4


Este comando talvez faça o serviço em segundos. Como ele funciona mais ou menos?


-i: Isto especifica o arquivo de entrada. Nesse caso, é (input.mp4).

-ss: Usado com -i, procura a posição no arquivo de entrada (input.mp4).

00:01:00: Esta é a hora que o corte do vídeo começará.

-to: Especifica o início da duração (00:01:40) até o final (00:02:12).

00:02:00: Esta é a hora que o corte do video terminará (e os 12 segundos? Acho que depende).

-c copy: Esta é uma opção para cortar via cópia de fluxo. (NB: muito rápido)

O formato de temporização é: hh:mm:ss


Outra opção que pode ser que seja um pouco mais lenta: Dizem que os quadros não-chave que codificam as diferenças de outros quadros, exigem todos os dados que começam com o quadro-chave anterior. Com o contêiner mp4, é possível cortar em um quadro não-chave sem recodificar usando uma lista de edição. Em outras palavras, se o quadro-chave mais próximo antes de 3s estiver em 0s, copiará o vídeo iniciando em 0s e usará uma lista de edição para dizer ao player para começar a tocar 3 segundos. Se você quiser cortar precisamente começando em um não-quadro-chave e quer que ele seja reproduzido começando no ponto desejado em um player que não suporta listas de edição, ou quer garantir que a parte recortada não esteja realmente no arquivo de saída (por exemplo, se contiver informações confidenciais), então você pode fazer isso re-codificando para que haja um quadro-chave precisamente no horário de início desejado. A re-codificação é o padrão se você não especificar a cópia. Por exemplo:


ffmpeg -i movie.mp4 -ss 00:00:03 -t 00:00:08 -async 1 cut.mp4


Ao recodificar, também pode incluir opções adicionais relacionadas à qualidade ou um codificador AAC específico. A opção -t especifica uma duração, não uma hora final. O exemplo de comando acima irá codificar 8s de vídeo a partir de 3s. Para iniciar em 3s e terminar em 8s use -t 5. Se você estiver usando uma versão atual do ffmpeg, você também pode substituir -t por -to no comando acima para terminar no horário especificado. Faça uma cópia de um video e teste os comandos. Alguns usuários de Linux dizem que fazer as coisas pelo terminal é algumas vezes mais fácil e rápido que usar programas gráficos. Parece que talvez aqui nesta anotação temos um exemplo disto.


Nossos computadores são programados para entender uma linguagem específica. Essa linguagem é chamada de binária e é composta de zeros e uns. Quando a computação começou, as instruções seriam fornecidas neste idioma e isso causaria dificuldades, porque não é uma linguagem que todos nós podemos ler ou escrever. Para contornar isso, temos o shell e existe um em cada sistema operacional. O shell é o que pega comandos humanos e os interpreta de uma forma que o kernel é capaz de lê-los e processá-los. O shell é um ambiente ou um programa do usuário para interação do usuário. Basicamente, é um interpretador que traduz a linguagem de comando e executa os comandos que são lidos de dispositivos de entrada como teclados ou de um arquivo. O shell é iniciado quando você abre um terminal ou quando você faz login no seu sistema. Não faz parte do kernel do sistema Linux, mas faz uso do kernel para criar arquivos, executar programas e muitas outras atividades.


Fonte1

Fonte2


Até Breve!

🙂


Linux comando df exemplos

Comando Linux df

---

O comando df relata a quantidade de espaço em disco disponível em uso pelos sistemas de arquivos.


No Linux/Unix o comando df exibe a quantidade de espaço em disco disponível no sistema de arquivos contendo cada argumento de nome de arquivo. Se nenhum nome de arquivo for fornecido, o espaço disponível em todos os sistemas de arquivos atualmente montados será mostrado. O espaço em disco é mostrado em 1 K blocos por padrão, a menos que a variável de ambiente POSIXLY_CORRECT esteja definida, nesse caso blocos de 512 bytes são usados.


Se um argumento for o nome de arquivo absoluto de um nó de dispositivo de disco contendo um sistema de arquivos montado, df mostrará o espaço disponível nesse sistema de arquivos em vez do sistema de arquivos que contém o nó de dispositivo (que é sempre o sistema de arquivos raiz). O df não pode mostrar o espaço disponível em sistemas de arquivos desmontados, porque na maioria dos sistemas isso requer muito conhecimento específico do sistema de estruturas de sistemas de arquivos.


sintaxe df:

df [OPÇÃO] ... [ARQUIVO] ...

---

df exemplos:

$ df

$ df -h

(-h informa ao df para usar formatação legível por humanos)




Até Breve!
🙂




Fonte

Repositórios GitHub do Gentoo Linux Hackeados!

Repositório Gentoo Hackeado...

---

Hackers ganharam acesso aos repositórios do GitHub e adulteraram o código fonte do Gentoo introduzindo um script malicioso para deletar todos os seus arquivos.

---

Gentoo Linux hackeado

O Gentoo Linux tem a imagem de uma "distribuição Linux apenas especializada". No entanto, após o anúncio no site oficial do Gentoo, descobriu-se que a conta GitHub do Gentoo foi invadida.

---

Em seu anúncio oficial, eles mencionaram:

“Hoje, 28 de junho, aproximadamente às 20h20, os indivíduos desconhecidos da UTC ganharam o controle da organização Github Gentoo e modificaram o conteúdo dos repositórios, bem como suas páginas. Ainda estamos trabalhando para determinar a extensão exata e recuperar o controle da organização e de seus repositórios. Todo o código do Gentoo hospedado no GitHub deve, por enquanto, ser considerado comprometido. ”

Os usuários do Gentoo estão seguros, desde que não tenham baixado nada dos repositórios do GitHub comprometidos.

A equipe do Gentoo garantiu que o incidente não tem nada a ver com o código hospedado na infraestrutura do Gentoo (ou seu site oficial). Para explicar isso, eles disseram: “Como o repositório principal ebuild do Gentoo está hospedado em nossa própria infraestrutura e como o Github é apenas um espelho para ele, você está bem desde que esteja usando rsync ou webrsync do gentoo.org.”

Em alerta recente, eles confirmaram que o Gentoo recuperou o controle de sua organização do GitHub e eles estão trabalhando de perto com o GitHub em um procedimento para resolução...



Até Breve!



🙂


Fonte

Linux comando wget exemplos


Linux exemplos comando wget


Download de um simples arquivo:


wget endereço-download-do-arquivo

---

O wget informa o percentual de download, quantidade de bytes baixados, velocidade de download atual, tempo restante para completar a tarefa.

---

Posso baixar um arquivo com wget e salvar com nome diferente ou em diretório diferente:

wget endereço-download-do-arquivo -O novo-nome-para-o-arquivo

---

O wget pode limitar a velocidade de download do wget

Ao executar o aplicativo, ele vai buscar usar toda a banda possível, para terminar logo a tarefa. Em alguns casos, isto pode ser problema em um servidor de produção...

wget --limit-rate=300k endereço-download-do-arquivo

---

Para continuar um download interrompido. Reiniciar um download no ponto em que ele parou, uso a opção -c:

wget -c endereço-download-do-arquivo

---

Download em background

É possível deixar o wget rodando “nos bastidores”, enquanto trabalha no mesmo terminal. Pode, por exemplo rodar vários wget nos bastidores, usando este método – que é útil quando há um grande número de grandes arquivos para ser baixados, mesmo que de sites diferentes.

wget -b endereço-download-do-arquivo1 endereço-download-do-arquivo2 endereço-download-do-arquivo3

---

Como padrão, o wget irá enviar um log desta atividade pro arquivo wget-log. Você pode olhar este log, durante a atividade da seguinte forma:

tail -f wget-log

---

Se quiser interromper todos os processos do wget em execução, use o comando:

killall wget

---

Wget disfarçar de navegador com -user-agent

Alguns sites tentam bloquear o raciocínio de solicitações do wget de que ele não é originário de um navegador. Então, vamos disfarçar os acessos do wget aos sites para dar a impressão de que ele é originário de um navegador como o Firefox. É assim que você pode tentar fazer isso:

wget -r -p -U Mozilla https://getch.wordpress.com

---

Posso tentar usar o wget “disfarçado” de Firefox:

wget --user-agent="Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.3) Gecko/2008092416 Firefox/3.0.3" endereço-download-do-arquivo

---

Posso baixar um site completo via wget usando o parâmetro --mirror:

wget --mirror -p --convert-links -P ./LOCAL http://www.site.com.br

Onde:

-mirror (liga as outras opções do wget adequadas para fazer o espelhamento do site em questão)

-p (baixa todos os arquivos necessários para que o site inteiro possa ser exibido localmente)

-convert-links (depois de baixar, converte os links em documentos para visualização local)

-P (grava todos os arquivos baixados dentro do diretório especificado)

---

Espelhe um site inteiro para leitura off-line. O formato é:

wget --mirror -p --convert-links -P ./LOCAL-DIR WEBSITE-URL

---

Fonte

Linux – File GlobbinG x REGEX

Linux - File Globbing x REGEX

.

REGEX = Regular Expression (expressão regular)

.

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

.

O REGEX vai usar o mesmos caracteres mas se forma diferente, com intenção diferente. A intenção é selecionar um "PADRÃO DE TEXTO".

.

FILE GLOBBING = SELECIONAR OS ARQUIVOS E DIRETÓRIOS

.

REGEX = SELECIONAR UM "PADRÃO DE TEXTO" DESEJADO

.

EXEMPLO FILE GLOBBING (Executo):

.

0)

mkdir -v test ; cd test/ ; touch NOME-DO-ARQ.txt nome-do-arquivo1.txt nome-do-arquivo2.txt NOME-DO-ARQUIVO1.txt NOME-DO-ARQUIVO2.txt Arquivo11.txt Arquivo12.txt ARQUIVO11.txt ARQUIVO12.txt arquivo1.txt arquivo2.txt arquivo3.txt arquivo4.txt arquivo5.txt Arquivo5.txt Arquivo1.txt Arquivo4.txt Arquivo3.txt Arquivo10.txt Arquivo9.txt Arquivo11.txt

1)

ls nome-do-arquivo*

2)

ls -l NOME-DO-ARQUIVO*

3)

ls -lit nome-do-arquivo1*

4)

ls -latr Arquivo[12345].txt

5)

ls -la arquivo[1-5].txt

6)

ls -l Arquivo* [Aa][12]

7)

ls -la Arquivo *[12]

8)

ls -la {Arquivo,arquivo}[12].txt

9)

ls -l *11.txt

10)

ls -l {Arquivo,ARQUIVO}11.txt

11)

ls -l {Arquivo,ARQUIVO}3.txt

12)

ls -l Arquivo1*

13)

ls -l Arquivo1?

14)

ls -l Arquivo?.txt

15)

ls -l Arquivo??.txt

.

EXEMPLO Expressão Regular (Executo):

Expressões regulares são criadas a partir de metacaracteres. Sendo eles:

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

\ . * + - { } [ ] ^ $ | ? ( ) : ! = \b | \1

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

Metacaracteres podem, dependendo do caso, ter mais de um significado de acordo com o contexto.

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

Aspa " não é metacaractere.

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

Para criar comandos usando expressões regulares, posso usar um arquivo de texto. O arquivo de texto serve para eu aprender a criar comandos usando expressões regulares. Posso criar comandos usando expressões regulares imaginando também.

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

Se eu quero criar comandos usando expressões regulares preciso usar metacaracteres.

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

Lista de metacaracteres para eu consultar:

--------------------
. ponto
[] lista
[^] lista negada
? opcional
* asterisco
+ mais
{} chaves
^ circunflexo
$ cifrão
\b borda
\ escape
| ou
() grupo
\1 retrovisor
--------------------

Os metacaracteres e suas funções estão divididos em quatro grupos distintos:

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

1) Representantes
2) Quantificadores
3) Âncoras
4) Outros

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

1) Representantes

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

.

(ponto - um caractere qualquer)

Ex.:

cd

pwd

ls .

ls -li | grep ".ocumentos"

ls -li | grep ".odelos"

ls -li | grep "."

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

[...]

(lista - lista de caracteres permitidos)

Ex.:

ls | grep [D]

(ls liste o que tiver D maiúsculo)

ls -t | grep [D-I]

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

[^...]

(lista negada - lista de caracteres proibidos)

ls | grep [^D]

ls -t | grep [^D-I]

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

2) Quantificadores

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

?

(opcional - zero ou um)

Ex.:

ls -li | grep [M?]

ls -li | grep [D?]

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

*

(asterisco - zero, um ou mais)

Ex.:

ls -li | grep [M*]

ls -li | grep [V*]

ls | grep -F '*.' *

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

+

(mais - um ou mais)

Ex.:

ls -li | grep [M+]

ls -li | grep [V+]

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

{n,m}

(chaves - de n até m)

ls -t | grep {D,}

ls -t | grep {M,}

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

3) Âncoras

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

^

(circunflexo - início da linha)

Ex.:

ls -t | grep {^D,}

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

$

(cifrão - fim da linha)

Ex.:

ls -t | grep "$o"

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

\b

(borda - início ou fim de palavra)

Ex.:

ls -li | grep [\bs]

ls -li | grep [\bV+]

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

4) Outros

\c

(escape - torna literal o caractere c)

ls -li | grep [\c,M+]

ls -li | grep [\cV+]

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

(...)

(ou - ou um ou outro)

ls -li | grep ...

ls -li | egrep 'Downloads|Modelos'

(ls liste exibindo ou Downloads ou Modelos)

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

\1...\9

(retrovisor - texto casado nos grupos 1...9)

ls -li | grep \1...\9

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

OBS:
Curingas usados em linha de comando, não são expressões regulares.

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

Creio que a expressão regular abaixo é para validação de e-mails:

^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$

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

Regex ------- Referências

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

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

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

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

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

$ ------- Fim da linha

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

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

. ------- Qualquer caractere

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

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

\d ------- Qualquer digito

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

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

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

\b ------- Borda

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

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

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

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

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

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

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

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

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

Quem constrói uma casa com tijolos gratúitos e depois ganha dinheiro para si próprio de maneira ambiciosa e egoísta, é boa gente?

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

Executo:

read -p "Informe um valor que será inserido em VAR1: " VAR1

read -p "Informe um valor que será inserido em VAR2: " VAR2

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

OBS:
# $(expr $VAR1 + $VAR2) É uma substituição de comando que executa e joga o resultado na tela.

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

Executo:

echo "A soma de $VAR1 + $VAR2 é $(expr $VAR1 + $VAR2)"

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

Exemplos de scripts a serem executados:

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

#!/bin/bash

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

# COMENTÁRIOS ESPECIAIS:

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

KERNEL=$(uname -r)

HOSTNAME=$(hostname)

CPUNO=$(cat /proc/cpuinfo | grep "model name" | wc -l)

CPUMODEL=$(cat /proc/cpuinfo | grep "model name" |
head -n1 | cut -c14-)

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

MEMTOTAL=$(free -h | grep 'Mem:' | cut -d: -f2)

MEMTOTAL2=$(expr $(cat /proc/meminfo | grep MemTotal | tr -d ' ' | cut -d: -f2 | tr -d kB) / 1024)

FILESYS=$(df -h | egrep -v '(tmpfs | udev)')

UPTIME=$(uptime -s)

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

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

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

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

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

Aperto a tecla Esc digito :wq

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

Executo:

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

sh 3Script-relatorio-da-maquina.sh

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

OUTRO SHELL SCRIPT ESCRITO DIFERENTE MAS SOBRE O MESMO ASSUNTO:

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

#!/bin/bash

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

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

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

Linux – aprenda a usar o comando case

Linux - aprenda a usar o comando case

.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

EXEMPLO:

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

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

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

USA-SE MUITO O CASE PARA FAZER MENÚ.

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

EXEMPLO:

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

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

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

Case - usando expressão regular

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

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

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

Executo:

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

mkdir -vp caseDIR/subCASE

cd caseDIR/subCASE

touch CasE_scr.sh

chmod +x CasE_scr.sh

pwd

ls -lih

vi CasE_scr.sh

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

#!/bin/bash

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

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

(Aperto Esc, seguro Shift e digito ZZ)

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

Executo:

./CasE_scr.sh

sh CasE_scr.sh A

source CasE_scr.sh a

bash CasE_scr.sh 3

sh CasE_scr.sh @

.

Até Breve

🙂

.

Linux – aprendendo a usar o comando test

Linux - aprendendo a usar o comando test:

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

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

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

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

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

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

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

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

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

7) VALOR1=101

8) test VALOR1 -eq 101
echo $?

9) test VALOR1 -gt 90
echo $?

10) test VALOR1 -ne 15

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

Até Breve!

🙂

.

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

#!/bin/bash

# Nome do Script: 5ScrNomeUserUID.sh

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

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

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

# COMENTÁRIOS ESPECIAIS:

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

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

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

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

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

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

Para Praticar:

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

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

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

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

.

Executo os 35 comandos abaixo:

.

1) cat arq_marciano.txt

2) cat -n arq_marciano.txt

3) file arq_marciano.txt

4) !ca

5) !fi

6) wc arq_marciano.txt

wc -l arq_marciano.txt (linhas)

wc -w tarq_marciano.txt (palavras)

wc -c arq_marciano.txt (caracteres)

7) whereis arq_marciano.txt

8) whatis xingar

9) cat arq_marciano.txt | less

10) cat arq_marciano.txt | more

11) cat arq_marciano.txt | head -n 3

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

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

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

13) cat arq_marciano.txt | tail -n 3

cat arq_marciano.txt | awk /Marciano/

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

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

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

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

18) touch arq_marciano.txt

19) ls -til

20) cp -v arq_marciano.txt arq_marciano_back.txt

21) ls1

22) grep -i "marciano" arq_marciano.txt

grep -i marciano "arq_marciano.txt" -v

23) grep -i "meu" arq_marciano.txt

grep -i "meu" arq_marciano.txt -v

24) fgrep "sonda" arq_marciano.txt

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

26) find ./ arq_marciano.txt

27) find arq_marciano.txt

28) ls [a-m]*.txt

29) mv arq_marciano_back.txt renomeado_arq_marciano_back.txt

30) ls -t

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

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

33) fgrep "montanhas" -r ./

34) ls2

35) clear

.

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

rm -f nome-do-arquivo.txt

Linux – Praticando shell script – NomeUserUID.sh

Abro o terminal pelo menu do sistema.

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

Executo:

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

touch 5ScrNomeUserUID.sh

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

chmod +x 5ScrNomeUserUID.sh

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

vi 5ScrNomeUserUID.sh

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

Aperto Esc. Clico no terminal. Digito i.

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

Copio o texto abaixo e colo no vi.

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

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

#!/bin/bash

# Nome do Script: 5ScrNomeUserUID.sh
# Descrição: script recebe um nome de usuário como
# parâmetro e exibe UID do usuário, Nome Completo /
# Descrição do Usuário, Total em Uso no /home do
# usuário, Informações do último login do usuário,
# Validar se o usuário existe ou não sem o uso do if.
# Se não existir retorne o exit code 1, se
# existir retorne exit 0
# Execução: ./5ScrNomeUserUID.sh
# Autor: Fulano de Tal
# Data da Criação: DD/MM/YYYY
# Email: meu_mail@email.com
# Histórico de modificações:
# COMENTÁRIO:
# Comando “du” para descobrir o uso do diretório
# Comando “lastlog” para informações do login
# Dados do usuário no arquivo /etc/passwd
# Para fazer a validação posso usar as opções de
# execução sequencial
# de comandos &&, ou ;

# COMENTÁRIOS ESPECIAIS:

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

# Declarando variáveis:
DATATUAL=$(date)
NOMEDAMAQUINA=$(cat /etc/hostname)
EUSER=$USER
USERLOGIN=$(w | grep 'tty7')
UIDUSER=$UID
TOTAL=$(du -hcs ~/ | grep 'total')

clear
echo "Data: $DATATUAL"
echo "Relatório do Usuário: $EUSER"
echo
echo "UID do usuário: $UIDUSER"
echo 'Nome ou Descrição:' $USER
echo "Nome da Máquina: $NOMEDAMAQUINA"
echo "Ultimo Login: $USERLOGIN"
echo "Total Usado no ultimo Login: $TOTAL"
echo
# Fim do Script 5ScrNomeUserUID.sh

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

Aperto a tecla Esc digito :wq

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

Executo:

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

sh 5ScrNomeUserUID.sh

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

Linux – comando ls e as expressões regulares

Linux - comando ls e as expressões regulares -

--------------------
Coisas que o Linus Torvalds não criou:
--------------------

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

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

O comando ls = lista arquivos e o conteúdo de diretórios

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

Executando alguns comandos ls:

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

1) ls -d */ (Para exibir pastas)

2) ls -a (Arquivos ocultos, ou seja, iniciados com “.”)

3) ls -A (arquivos ocultos, exceto o “.” e “..”)

4) ls | less (Listar arquivos e diretórios)

5) ls -C (Arquivos em colunas, ordenados verticalmente)

6) ls -l | grep ^d OU ls -la | grep ^d (Somente diretórios)

7) ls -h (Exibe os arquivos em seus tamanhos em KB, MB e GB)

8) ls -t (exibe primeiramente os arquivos criados/alterados recentemente)

9) ls -l (exibe informações referentes a arquivos e diretorios em colunas)

10) ls -F (exibe apenas arquivos executáveis, ou seja, marcados por um asterisco
no final do seu nome)

11) ls -u (exibe arquivos de acordo com o tempo do ultimo acesso ao inves
do tempo de modificacao do mesmo)

12) ls -r (exibe os arquivos na ordem inversa de z para a)

13) ls -R (exibe um diretorio e seus respectivos subdiretorios)

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

Linux criar comandos usando expressões regulares

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

Expressões regulares são caracteres com base em padrões, usandos simultaneamente para buscar e alterar textos em diretórios ou arquivos. Posso usar com diversos comandos do Linux.

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

Expressões regulares são criadas a partir de metacaracteres. Sendo eles:

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

\ . * + - { } [ ] ^ $ | ? ( ) : ! = \b | \1

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

Metacaracteres podem, dependendo do caso, ter mais de um significado de acordo com o contexto.

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

Aspa " não é metacaractere.

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

Para criar comandos usando expressões regulares, posso usar um arquivo de texto. O arquivo de texto serve para eu aprender a criar comandos usando expressões regulares. Posso criar comandos usando expressões regulares imaginando também.

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

Se eu quero criar comandos usando expressões regulares preciso usar metacaracteres.

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

Lista de metacaracteres para eu consultar:

--------------------
. ponto
[] lista
[^] lista negada
? opcional
* asterisco
+ mais
{} chaves
^ circunflexo
$ cifrão
\b borda
\ escape
| ou
() grupo
\1 retrovisor
--------------------

Os metacaracteres e suas funções estão divididos em quatro grupos distintos:

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

1) Representantes
2) Quantificadores
3) Âncoras
4) Outros

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

1) Representantes

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

.

(ponto - um caractere qualquer)

Ex.:

ls .

ls -li | grep ".ocumentos"

ls -li | grep ".odelos"

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

[...]

(lista - lista de caracteres permitidos)

Ex.:

ls | grep [D]

(ls liste o que tiver D maiúsculo)

ls -t | grep [D-I]

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

[^...]

(lista negada - lista de caracteres proibidos)

ls | grep [^D]

ls -t | grep [^D-I]

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

2) Quantificadores

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

?

(opcional - zero ou um)

Ex.:

ls -li | grep [M?]

ls -li | grep [D?]

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

*

(asterisco - zero, um ou mais)

Ex.:

ls -li | grep [M*]

ls -li | grep [V*]

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

+

(mais - um ou mais)

Ex.:

ls -li | grep [M+]

ls -li | grep [V+]

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

{n,m}

(chaves - de n até m)

ls -t | grep {D,}

ls -t | grep {M,}

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

3) Âncoras

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

^

(circunflexo - início da linha)

Ex.:

ls -la | grep ^d

ls -la | grep ^d

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

$

(cifrão - fim da linha)

Ex.:

ls -t | grep "$o"

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

\b

(borda - início ou fim de palavra)

Ex.:

ls -li | grep [\bs]

ls -li | grep [\bV+]

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

4) Outros

\c

(escape - torna literal o caractere c)

ls -li | grep [\c,M+]

ls -li | grep [\cV+]

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

(...)

(ou - ou um ou outro)

ls -li | grep ...

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

\1...\9

(retrovisor - texto casado nos grupos 1...9)

ls -li | grep \1...\9

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

OBS:
Curingas usados em linha de comando, não são expressões regulares.

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

Executo:

read -p "Informe um valor que será inserido em VAR1: " VAR1

read -p "Informe um valor que será inserido em VAR2: " VAR2

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

OBS:
# $(expr $VAR1 + $VAR2) É uma substituição de comando que executa e joga o resultado na tela.

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

Executo:

echo "A soma de $VAR1 + $VAR2 é $(expr $VAR1 + $VAR2)"

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

Exemplos de scripts a serem executados:

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

#!/bin/bash

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

# COMENTÁRIOS ESPECIAIS:

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

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

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

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

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

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

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

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

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

Aperto a tecla Esc digito :wq

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

Executo:

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

sh 3Script-relatorio-da-maquina.sh

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

OUTRO SHELL SCRIPT ESCRITO DIFERENTE MAS SOBRE O MESMO ASSUNTO:

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

#!/bin/bash

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

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