Bash shell script: zip e unzip

#!/usr/bin/env bash

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

# test_compactar_e_desc_zip.sh

# data: 01052020

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

clear

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

echo -e "\n*** Abra o terminal onde está o arquivo a ser compactado. *** \n\nOBS: Para sair deste script tecle Ctrl+c"

sleep 2

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

echo ""

echo -e "\nConfere os primeiros arquivos deste diretório... \n"

ls -t | head -15

echo ""

read -p "Digite o titulo do arquivo zip a ser criado.\
Ex. meu_arquivo.zip : " FILE # armazena URL

echo -e "Você digitou: $FILE" # imprime a FILE

echo -e "\n1- Confere os primeiros arquivos deste diretório... \n"

ls -tCF | head -21

echo ""

read -p "Digite titulo completo (com espaços entre eles)\
dos arquiv(os)/past(as) a ser(em) compactados : " ARQUIVOS

echo -e "Você digitou: $ARQUIVOS"

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

echo -e "\n\e[1mPara compactar em zip digite um (1),\
descompactar digite dois (2)\e[0m\n"

while : # loop while
do # fechamento de do é done
read DIGITE # armazena digito 1 ou 2
case $DIGITE in # caso o digito seja...
# fechamento de case é esac

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

1) # dígito 1 executa...

echo -e "Você digitou: $DIGITE, compactando... "

zip -r "$FILE" "$ARQUIVOS"

break # sai após executar comando
;;

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

2) # dígito 2 executa...
echo -e "Você digitou $DIGITE, descompactando... "

unzip "$FILE" # comando 2

break # sai após executar comando
;;

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

*)
echo -e "Desculpe eu só entendo 1 e 2." # se não for nem 1 nem 2...

;;
esac # fechamento de case e sai

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

done # fechamento de do e acabou

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

echo ""

echo -e "\n:2- Confere a lista de arquivos:\n"

sleep 2

ls -tCF | head -15

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

echo ""

read -p "Para deletar o arquivo original Tecle Enter.\
Para sair sem deletar tecle Ctrl+c."

echo ""

ls -tCF | head

echo ""

read -p "Certeza mesmo? Ok, tecle Enter : "

rm -f "$FILE"

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

echo -e "\n:3- Confere a lista de arquivos:\n"

sleep 2

ls -tCF | head -15

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

echo -e "\n\e[1;33;40m*** E tá tudo resolvido! ***\e[0m\n" # mensagem final

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

# zip -r nome_do_file.zip arquivo1 folder1

# fim do script

Senha de Linux ou UNIX protege arquivos?

A senha de Linux ou UNIX protege arquivos?

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

Como protejo arquivos com senha?

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

O GNU/Linux e outros sistemas Unix oferecem fortes permissões de arquivo e o conceito de ACL (lista de controle de acesso) na segurança do computador Linux/UNIX, usada para forçar a separação de privilégios. No entanto, nenhum deles oferece uma senha para proteger arquivos.

Você pode usar a ferramenta de criptografia e assinatura GNU gpg (GNU Privacy Guard).

É um conjunto de software criptográfico.

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

Muitos novos usuários de UNIX/Linux ficam confusos com esse fato.

A solução é usar os seguintes comandos para criptografar ou descriptografar arquivos com uma senha.

Use o comando GNU gpg.

Use o comando mcrypt.

Use o comando openssl.

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

MCRYPT COMANDO

Mcrypt é um programa simples de criptografia, um substituto para a antiga criptografia unix. Ao criptografar ou descriptografar um arquivo, um novo arquivo é criado com a extensão .nc e modo 0600. Istale pelo software center do seu sistema GNU/Linux.

O novo arquivo mantém a data de modificação do original. O arquivo original pode ser excluído especificando o parâmetro -u.

---

EXEMPLOS:

Encriptar data.txt file:

$ mcrypt data.txt

Output:

Enter the passphrase (maximum of 512 characters)
Please use a combination of upper and lower case letters and numbers.
Enter passphrase:
Enter passphrase:
A new file is created with the extension .nc i.e. data.txt.nc:

$ ls data.txt.nc
$ cat data.txt.nc

Descritografar data.txt.nc file:
$ mcrypt -d data.txt.nc

Output:

Enter passphrase:
File data.txt.nc was decrypted.
Verify that file was decrypted:

$ ls data.txt
$ cat data.txt

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

COMANDO OPENSSL

O OpenSSL é um kit de ferramentas de criptografia que implementa os protocolos de rede Secure Sockets Layer (SSL v2 / v3) e Transport Layer Security (TLS v1) e os padrões de criptografia relacionados exigidos por eles.

Você pode usar o programa openssl, que é uma ferramenta de linha de comando para usar as várias funções de criptografia da biblioteca de criptografia do OpenSSL a partir do shell.

Pode ser usado para criptografar e descriptografar arquivos com uma senha.

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

Por exemplo vou criptografar file.txt para file.out usando AES de 256 bits no modo CBC

$ openssl enc-aes-256-cbc -salt -in file.txt -out file.out.

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

Descriptografe o arquivo criptografado file.out

$ openssl enc-d -es-256-cbc -in file.out

Onde, enc: codificação com cifras.

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

Uma opção bem fácil também, é usar o SEAHORSE-NAUTILUS. Instale pelo software center do seu sistema GNU/Linux.

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

Teste com arquivos copiados, até pegar prática.

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

Você pode até criar um bash shel script para facilitar mais ainda...

#!/usr/bin/env bash

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

# autor: Arceu Valenti_1000%
# test_cryptografar_mcrypt.sh
# data: 29042020
# versão: 0.0
# uso: ./test_cryptografar_mcrypt.sh

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

clear

echo -e "\nAbra o terminal onde está o arquivo a ser criptografado e tecle\
Enter.\nPara sair tecle Ctrl+c"

sleep 2

echo ""

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

echo -e "\nListando os primeiros arquivos...\n"

sleep 2

ls -tCF | head -15

echo ""

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

read -p "Digite o nome completo do arquivo : " FILE # armazena URL

echo -e "Você digitou: $FILE" # imprime a FILE

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

echo "" # parágrafo

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

echo -e "\e[1mPara criptografar digite um (1), descriptografar dois (2)\e[0m"

while : # loop while
do # fechamento de do é done
read DIGITE # armazena digito 1 ou 2
case $DIGITE in # caso o digito seja...
# fechamento de case é esac

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

1) # dígito 1 executa...
echo -e "Você digitou: $DIGITE, critografando... "

mcrypt "$FILE" # comando 1

break # sai após executar comando
;;

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

2) # dígito 2 executa...
echo -e "Você digitou $DIGITE, descriptografando... "

mcrypt -d "$FILE" # comando 2

break # sai após executar comando
;;

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

*)
echo -e "Desculpe eu só entendo 1 e 2." # se não for nem 1 nem 2...

;;
esac # fechamento de case e sai

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

done # fechamento de do e acabou

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

echo ""

read -p "Para deletar o arquivo original Tecle Enter.\
Para sair tecle Ctrl+c."

rm -f "$FILE"

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

echo -e "\n:Confere a lista de arquivos:\n"

sleep 2

ls -tCF | head -15

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

echo -e "\n\e[1;33;40m*** E tá tudo resolvido! ***\e[0m\n" # mensagem final

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

# fim do script

---

Até Breve!

---

Linux VPN – ProtonVPN para Linux

semanickz

Nota Ferramenta de linha de comando ProtonVPN para Linux


Leio no site oficial (link):

"Estamos introduzindo nossa primeira ferramenta de linha de comando para Linux VPN criada pela equipe ProtonVPN!"

---

Fico pensando, matutando mesmo, O que posso fazer para que funcione (se for possível)? Segui os procedimentos anotados aqui o melhor que pude. Para mim não funcionou nada, nadinha. Tente também! Quem sabe para você funciona corretamente e você tem sucesso nisto.

---

A lista do que você precisa:

1) openvpn
2) python
3) dialog
4) wget

---

Pela central de aplicativos do meu Linux instalo os 4 itens.

---

Pela central de programas do meu sistema Linux instalo algo com o nome:

protonvpn-cli

---

Depois que todos os pacotes estiverem instalados, você precisará fazer o download do script no seu dispositivo Linux. Use este comando:

sudo wget -O protonvpn-cli.sh https://raw.githubusercontent.com/ProtonVPN/protonvpn-cli/master/protonvpn-cli.sh

---

Depois de baixar o script, inicie este comando:

sudo chmod +x protonvpn-cli.sh

---

Em seguida, instale o cliente VPN do Linux executando este comando:

sudo ./protonvpn-cli.sh --install

---

Agora o cliente está instalado e pronto para uso. Para inicializar o cliente ProtonVPN Linux, digite isto:

sudo protonvpn-cli -init

OU:

sudo pvpn -init

---

Você precisará inserir seu nome de usuário e senha do OpenVPN que você deve configurar em nossa página https://account.protonvpn.com/settings.

---

Depois de inserir as credenciais, você terá que selecionar o plano de assinatura que você tem para ProtonVPN. Usuários experimentais devem selecionar 3) Mais.

---

IMPORTANTE: após o período de avaliação, você precisa reconfigurar para 1) Gratuito.

---

Agora, por favor, digite esta linha de comando para começar a se conectar aos servidores:

sudo protonvpn-cli -connect

OU:

sudo pvpn -c

---

Uma lista de países detalhada com todos os servidores ProtonVPN disponíveis para você deve aparecer. Selecione o servidor de sua preferência e clique em OK.

---

Talvez seja bom desabilitar o IPV6 no Linux para não ter mais problemas que o normal.

---

Em seguida, selecione o protocolo UDP ou TCP a ser usado e clique em OK (recomendam UDP no site):

A conexão será estabelecida. Você conseguiu se conectar aos servidores ProtonVPN por meio do cliente VPN do Linux.

Quando estiver conectado à ferramenta do cliente VPN para Linux, você pode garantir que não haja vazamentos de IP ou DNS aqui.

---

Fechar a janela do Terminal não desconectará a conexão VPN. Para fechar a conexão VPN execute:

sudo protonvpn-cli -disconnect

---

Segui os procedimentos anotados aqui. E para mim não funcionou nadinha. Tente quem sabe para você funciona corretamente e você tem sucesso nisto.

---

Meu resultado:

Connecting...
[!] Error connecting to VPN.
[!] Reason: Authentication failed. Please check your ProtonVPN OpenVPN credentials.
[!] There are issues in managing IPv6 in the system. Please test the system for the root cause.
Not being able to manage IPv6 by protonvpn-cli may leak the system's IPv6 address.

---


Dicas e sugestões são muito bem vindas.


Até Breve!



🙂


Fonte

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

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

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

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

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

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

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

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

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

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

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

Manjaro o que é Pamac?

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

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

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

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

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

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

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

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

SE TORNANDO O ADMINISTRADOR:

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

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

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

Digite: sudo su , digite sua senha .

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

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

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

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

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

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

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

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

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

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

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

Comando que fornece resumo sobre o pacote/programa:

sudo pacman -Si nome_do_pacote

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

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

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

1) sudo pacman nome-do-pacote -D

2) pacman nome-do-pacote -Q

3) sudo pacman nome-do-pacote -S

4) pacman nome-do-pacote -F

5) sudo pacman nome-do-pacote -V

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

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

.

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

.

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

.

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

.

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

.

EXECUTANDO COMANDOS COMO ADMINISTRADOR:

.

Abro o terminal pelo menu do sistema. Executo:

.

1) sudo su

2) pacman -Syyuu

.

Sem ser administrador:

.

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

.

Depois sugiro que execute o comando abaixo:

.

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

.

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

.

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

.

sudo shutdown -r now

.

Aperte enter

.

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

.

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

.

Instalo editores de texto.

.

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

.

SUGESTÃO

.

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

.

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

.

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

.

sudo shutdown -r now (Novamente reinicio o sistema)

.

Após o reboot, volto a este tutorial.

.

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

.

Comandos de otimização:

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

.

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

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

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

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

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

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

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

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

LISTA DESCRITIVA DE COMANDOS:

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

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

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

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

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

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

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

Sincronizar repositório
sudo pacman -Sy

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

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

Sincroniza os repositórios totalmente
sudo pacman -Syy

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

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

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

sudo pacman -Syyuu

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

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

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

COMANDOS DO PACMAN PARA PROCURAR PACOTE:

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

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

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

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

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

Procurar pacote, termo ou grupo

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

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

Exemplificando:

1) busca por termo absoluto

pacman -Ss firefox

2) busca por categoria

pacman -Ss browser

3) busca por grupo

pacman -Ss gnome

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

COMANDOS DO PACMAN PARA BAIXAR PACOTE

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

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

Baixar pacote:

1) sudo pacman -Sw $pacote

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

Comandos do pacman para instalar pacote

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

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

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

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

sudo pacman -S nome-do-pacote

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

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

sudo pacman -Sdd nome-do-pacote

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

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

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

Exemplificando:

INSTALANDO O FIREFOX COM TODAS AS SUAS DEPENDÊNCIAS

sudo pacman -S firefox

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

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

sudo pacman -Sdd firefox

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

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

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

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

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

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

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

Wiki ArchLinux escreveu:

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

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

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

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

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

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

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

1. Atualizar o sistema

sudo pacman -Syyuu

2. Otimizar os espelhos

sudo pacman-mirrors -g
sudo pacman -Syy

3. Otimizar a base de dados

sudo pacman-optimize

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

paccache -d
paccache -Sc
sudo pacman -Sc

5. Pesquisar por pacotes

pacman -Ss nome-do-pacote

6. Informar sobre pacotes

pacman -Si nome-do-pacote

7. Instalar pacotes

sudo pacman -S nome-do-pacote

8. Detalhar pacotes instalados

pacman -Qi nome-do-pacote

9. Remover pacotes

sudo pacman -R nome-do-pacote

10. Remover pacotes + dependências

sudo pacman -Rsn nome-do-pacote

11. Listar pacotes orfãos

pacman -Qqdt

12. Remover pacotes orfãos

sudo pacman -Rns nome-do-pacote

sudo pacman -Rns $(pacman -Qqdt)

13. Listar pacotes por endereço localmente

pacman -Ql nome-do-pacote

14. Listar pacotes por árvore de dependência

pactree nome-do-pacote

15. Listar pacotes instalados dos repos oficiais

pacman -Qen

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

pacman -Qet

17. Corrigir erro db.lck

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

18. Atualizar o repo AUR

yaourt -Syyuua

19. Pesquisar no repo AUR

yaourt -Ss nome-do-pacote

20. Instalar pacotes do repo AUR

yaourt -S nome-do-pacote

21. Remover pacotes do repo AUR

yaourt -R nome-do-pacote

22. Remover pacotes + dependências do repo AUR

yaourt -Rsn nome-do-pacote

23. Listar pacotes instalados do repo AUR

pacman -Qem

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

INSTALANDO NO MANJARO, PACOTES/PROGRAMAS USANDO:

1) sudo pacman -S nomes_dos_pacotes_separados_por_espaço

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

.

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

.

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

sudo pacman nome-do-programa --noconfirm

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

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

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

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

1) sudo pacman -S vlc --noconfirm

2) sudo pacman -S smplayer --noconfirm

3) sudo pacman -S rhythmbox --noconfirm

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

5) Para colocar aplicativos na sandbox firejail:

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

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

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

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

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

Fonte que me ajudou bastante neste artigo: Manjaro Brasil

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

Até Breve!

🙂

.

Linux – 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!

🙂

.

Anotações Comandos Linux e Shell Script

Linux comandos e shell script 2018 (Novo)

.

wallpaper-inicio-comandos-linux-shellscript

.

APRENDENDO COMANDOS LINUX E SHELL SCRIPT

.

Este artigo (aprendendo comandos-linux e shell-script) é para iniciant. 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).

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

APRENDENDO COMANDOS LINUX E SHELL SCRIPT

.

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

.

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/

.

No exemplo acima:

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

.

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.

.

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

.

Para ler linhas do poema. 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

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 *

ls -lah

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 você digitou 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 -> 😡 (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 😡 (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: 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.

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

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".)

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

Por exemplo, 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

.

PODE TAMBÉM ATUALIZAR E REINICIAR O SISTEMA. COMANDO PARA REBOOT:

sudo shutdown -r now

.

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

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 ..

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":

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?

.

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.

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 << calc.txt

dc calc.txt

echo "obase=2;2" | bc

echo "obase=2;54" | bc

expr lenght "Linux"

.

GNU/LINUX SHELL SCRIPT – EXPRESSÕES REGULARES E PROGRAMAS GRÁFICOS

.

APRENDENDO SHELL SCRIPT

criar programas gráficos e interativos com shell script

.

Podemos criar programas interativos pelo terminal e programas gráficos.

Tem muitas ferramentas de comandos.

Algumas já vem pré-instaladas nas Distros Linux.

Vamos tentar entender duas. Dialog e Yad.

.

Primeiro o Dialog mas saiba que o Yad - Para programas gráficos é a evolução do Zenity. Tem mais opções. O autor do Yad é o ucraniano Victor Ananjevsky.

.

Dialog - Para programas cli (modo texto = cli) mas que cria uma interatividade com o usuário. Dialog cria widgets, menus, avisos, barras de progresso, entre outras coisas que colocamos em Shell Script e aparecem no terminal ao executar o script. Pode as vezes, usar o mouse para clicar nas janelas do Dialog. Existem várias caixas de Dialog que podemos usar. Essas caixas são utilizadas para compor interfaces amigáveis com o usuário, para que ele responda perguntas ou escolha opções.

.

Agora sabemos que o Dialog é um executável e recebe todos os parâmetros via linha de comando, então ele geralmente é usado dentro de um Shell Script. Serve para fazer programas interativos, que o usuário precisa operar durante sua execução. Tarefas comuns feitas com o Dialog são escolher uma opção em um menu, escolher um arquivo, uma data, e digitar frases ou senhas.

.

Instale o Dialog pela central de programas da sua Distro, ou usando o gerenciador de pacotes da sua Distribuição. Verifique se tem o Yad instalado também.

.

OBS:

O kdialog é bem interessante também.

.

Para criar uma tela simples execute os comandos abaixo no terminal:

dialog --msgbox 'É a tua primeira tela' 5 40

dialog --msgbox 'Vamos usar Dialog?' 5 25

.

OBS:

dialog (É o comando.)

--msgbox (É o tipo de diálogo/widget.)

'Vamos usar Dialog?' (É a mensagem.)

5 = Altura (Linhas)

25 = Largura (Colunas)

.

Digito o texto abaixo no terminal e eperte a tecla Enter:

dialog --msgbox 'Shell Script Primeiro Programa com Dialog' 5 50

.

Aperte: Enter

Digito: clear

.

Então o comando dialog utiliza parâmetros de linha de comando para determinar que tipo de widget de janela deve ser criada.

Um widget é um tipo de elemento de janela.

.

ABAIXO ALGUNS DOS TIPOS DE WIDGETS SUPORTADOS PELO DIALOG:

.

1) gauge (Mostra uma barra de progresso)

2) calendar (Vê um calendário e escolhe uma data)

3) checklist (Vê uma lista de opções e escolhe várias)

4) infobox (Mostra uma mensagem sem esperar por uma resposta)

5) inputmenu (Fornece um menu editável)

6) menu (Mostra uma lista de seleções para escolha)

7) msgbox (Mostra uma mensagem e pede que o usuário pressione um botão OK)

8) infobox (Vê uma mensagem sem botões)

9) passwordbox (Mostra uma caixa de texto simples que esconde o texto digitado)

10) radiolist (Fornece um grupo de itens de menu onde apenas um item pode ser selecionado)

11) tailbox (Mostra o texto de um arquivo em uma janela com rolagem usando o comando tail)

12) textbox (Mostra o conteúdo de um arquivo em uma janela com rolagem)

13) timebox (Fornece uma janela para selecionarmos uma hora, minuto e segundo)

14) yesno (Fornece uma mensagem simples com botões Yes e No.)

.

Para especificarmos um widget na linha de comandos, usamos a sintaxe:

dialog --widget parâmetros

.

YAD - CRIAR PROGRAMAS GRÁFICOS E INTERATIVOS COM SHELL SCRIPT

.

Yad - Para programas gráficos. Evolução de um programa chamado Zenity. Tem mais opções. O autor do Yad é o ucraniano Victor Ananjevsky. Instale o Yad. Após instalar, pode testar com o comando abaixo:

yad

.

A SINTAXE BÁSICA É:

yad [--tipo-dialogo] [--options]

.

TIPOS DE DIÁLOGO:

.

1) --calendar (calendário)

2) --color (paleta de cores)

3) --entry (entrada de dados)

4) --icons (mostra uma caixa com ícones de atalho para aplicações)

5) --file (diálogo para selecionar arquivos)

6) --font (diálogo para seleção de fontes)

7) --form (formulários)

8) --list (diálogo com ítens em lista)

9) --notification (mostra um ícone da barra de notificação do sistema)

10) --progress (diálogo de progresso)

11) --text-info (mostra o conteúdo de um arquivo texto)

12) --scale (diálogo para seleção de valor, usando uma escala)

.

Para cada um dos exemplos podemos colocar o script e depois algumas imagens da sua execução.

--calendar:

Mostra um calendário permitindo selecionar a data e envia o valor para a saída padrão

.

EXEMPLO:

.

#!/bin/bash

# usando o yad com --calendar
# mostra um calendário iniciando no dia 20/03/2018
# guarda o valor selecionar na variável $DATA

DATA=$(\
yad --calendar \
--day=20 \
--month=3 \
--year=2018 \
--date-format=%d\/%m\/%Y \
--title=Calendario \
--center \ # disposição do diálogo na tela
)

# mostra um diálogo informando a $DATA selecionada
yad --title="AVISO" \ --text="Você selecionou a data $DATA"
#.EOF

# Fim do 09c-yad-script.sh

.

Salve com o nome de "09c-yad-script.sh", dê permissão de execução:

chmod a+x 09c-yad-script.sh

.

Execute:

sh 09c-yad-script.sh

.

EXEMPLO COM YAD --COLOR

yad --color:

Diálogo de seleção de cores, permite selecionar uma determinada cor usando a paleta de cores, editando diretamente por código, etc. Bom para saber o código de uma cor específica.

.

EXEMPLO A SER EXECUTADO:

!/bin/bash

# uso do yad - com color
# permite selecionar determinada cor numa paleta de cores
# e envia o valor para a saída padrão, no caso armazenei na variável $COR

COR=$(\
yad --color \
--init-color="#FFFFFF" \ #cor que inicialmente fica selecionada na paleta de cores.
--palette \
)

yad --title="YAD COM COLOR" \
--text="Você selecionou a cor $COR"
#.EOF

# Fim do 4j-script-color.sh

.

Salve com o nome de "4j-script-color.sh", dê permissão de execução:

chmod a+x 4j-script-color.sh

.

Execute:

bash 4j-script-color.sh

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

SITE PARA APRENDER COMANDOS:

http://explainshell.com/

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

Aprendendo Shell Script - GNU/Linux ShellScript - Expressões Regulares (leio, releio e leio de novo)

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

LINUX SHELL SCRIPT, ENTENDENDO EXPRESSÕES REGULARES

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

Para trabalhar com as expressões regulares, usarei os meta-caracteres, ou seja, caracteres que representam um conjunto de outros caracteres ou que estipulem certas regras para a busca. E para que tudo fique mais poderoso, saiba que é possível combinar texto comum com meta-caracteres. Portanto, vamos ver o que faz cada um deles e, em seguida, como usá-los na prática.

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

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

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

Compreendendo cada um destes metacaracteres acima, pode juntar eles. Os "metacaracteres" juntos formarão uma "Expressão Regular" que vai resolver algum problema que apareça pelo caminho. E assim, é que pegamos os metacaracteres transformamos em expressões regulares e colocamos em shell scripts e quem tá de fora quando vê aquela coisa estupenda, tem a certeza de que aquilo pode até fazer alguma coisa, porém é absolutamente uma completa loucura (o que não é verdade). Dá uma olhada nesta serpente abaixo e me diga o que pensa/sente:

egrep "\b[a-zA-Z0-9.-]+@[a-zA-Z0-9.-]+\.[a-zA-Z0-9.-]+\b" arquivo.txt

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

A EXPRESSÃO REGULAR acima, é para casar qualquer e-mail dentro de um arquivo.

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

LEIO O TEXTO ABAIXO QUE EXPLICA MAIS UM POUCO SOBRE META CARACTERES:

-----------------------
LISTA DE META-CARACTERES:
1) . (Qualquer letra)
2) ^ (início da linha)
3) $ (final da linha)
4) [xyz] (Qualquer das letras dentro dos colchetes)
5) [^xyz] (Qualquer letra fora as dentro dos colchetes)
6) [t-z] (Qualquer das letras entre t e z)
7) z* (Letra z zero ou mais vezes)
8) z+ (Letra z uma ou mais vezes)
9) ?{0,1} (Pode aparecer ou não (opcional)
10) *{0,} (Pode aparecer em qualquer quantidade)
11) +{1,} (Deve aparecer no mínimo uma vez)
12) a{2} (Casa a letra 'a' duas vezes)
13) a{2,4} (Casa a letra 'a' de duas a quatro vezes)
14) a{2,} (Casa a letra 'a' no mínimo duas vezes)
15) .* (Casa qualquer coisa, é o tudo e o nada)
16) ^ (início da linha)
17) $ (final da linha)
18) [abc] (casa com os caracteres a, b e c)
19) [a-c] (casa com os caracteres a, b e c)
20) [^abd] (não casa com os caracteres a, b e d)
21) (um|dois) (casa com as palavras um e dois)

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

LISTA DE META-CARACTERES(Repetições)
1) a{2} (casa com a letra “a” duas vezes)
2) a{2,5} (casa com a letra “a” duas a cinco vezes)
3) a{2,} (casa com a letra “a” duas vezes ou mais)
4) a? (casa com “a” letra a zero vezes ou uma)
5) a* (casa com a letra “a” zeros vezes ou mais)
6) a+ (casa com a letra “a” uma vez ou mais)

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

LISTA DE META-CARACTERES(Curingas)
1) . (casa com qualquer caracter uma vez)
2) .* (casa com qualquer caracter várias vezes)
3) (esse|aquele) (casa as palavras 'esse' ou 'aquele')

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

Exemplos

1) Procura a palavra seu-usuario-whoami (qual é seu usuário?) no arquivo /etc/passwd

grep seu-usuario-whoami /etc/passwd

2) Procura todas as linhas começadas pela letra u no arquivo /etc/passwd:

grep '^u' /etc/passwd

3) Procura todas as linhas terminadas pela palavra false no arquivo /etc/passwd:

grep 'false$' /etc/passwd

4) Procura todas as linhas começadas pelas vogais no arquivo /etc/passwd:

grep '^[aeiou]' /etc/passwd

5) Procura todas as linhas começadas por qualquer caracter e segundo caracter seja qualquer vogal no arquivo /etc/passwd:

grep '^.[aeiou]' /etc/passwd

6) Procura todas as linhas que contenham uma sequência de 4 números consecutivos:

grep '[0-9][0-9][0-9][0-9]' /etc/passwd

7) Comando para encontrar linhas em branco:

grep '^$' /etc/passwd

8) Encontrar e contar linhas em branco:

grep '^$' /etc/passwd | wc -l

9) Encontrar mesmo nome, porém com letra inicial minúscula e maiúscula:

grep '[Mm]arcos' /etc/passwd

10) Encontrar 27 sequência^de 27 caracteres:

egrep '^.{27}$' passwd

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

(Acima foi usado o egrep e não o grep. Porque as chaves fazem parte de um conjunto avançado de Expressões Regulares (“extended”), então o egrep lida melhor com elas. Se fosse para usar o grep normal, teria que “escapar” as chaves.)

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

grep '^.\{27\}$' /etc/passwd

11) Para procurar por linhas que tenham de 20 a 40 caracteres:

egrep '^.{20,40}$' /etc/passwd

12) Para obter as linhas que possuem 40 caracteres ou mais:

egrep '^.{40,}$' /etc/passwd

13) Econtrar números com 3 dígitos (de 0 a 9) ou mais:

egrep '[0123456789]{3,}' /etc/passwd

14) Econtrar linhas que começam com ‘vogal minúscula’ e terminam com a palavra ‘bash’, usa−se o curinga “.*” para significar “qualquer coisa”(não confunda com “qualquer caracterer” somente “.”):

egrep '^[aeiou].*bash$' /etc/passwd

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

Script com validações de Tel,E-mail,CEP,IP,Data…

#!/bin/bash

# Script com validações de Tel,E-mail,CEP,IP,Data...

# VALIDAR TELEFONE formato: (99)9999-9999 #

echo 'Informe o número de Telefone.Formato: (99)9999-9999';
read TELEFONE
echo $TELEFONE | egrep '^[(][0-9]{2}[)][0-9]{4}+-[0-9]{4}$' && echo -e '\033[01;32m Número válido! \033[0m' || echo -e '\033[01;31m NÃO é válido esse número.\033[0m'

############## VALIDAR IP #############

echo 'Informe o número de IP';
read IP
echo $IP | egrep '^[0-9]{1,3}[.]{1}[0-9]{1,3}[.]{1}[0-9]{1,3}[.]{1}[0-9]{1,3}$' && echo -e '\033[01;32m IP válido! \033[0m' || echo -e '\033[01;31m NÃO é válido esse IP.\033[0m'

############## VALIDAR CEP ############

echo 'Informe o CEP';
read CEP
echo $CEP | egrep '^[0-9]{5}[-][0-9]{3}$' && echo -e '\033[01;32m Número válido! \033[0m' || echo -e '\033[01;31m NÃO é válido esse número.\033[0m'

#### VALIDAR DATA formato dd/mm/aaaa ###

echo 'Informe a Data.Formato dd/mm/aaaa';
read DATA
echo $DATA | egrep '^[0-3]{1}[0-9]{1}[/][0-1]{1}[0-9]{1}[/][0-9]{4}$' && echo -e '\033[01;32m Data válida! \033[0m' || echo -e '\033[01;31m NÃO é válida essa Data.\033[0m'

############## VALIDAR E-MAIL #########

echo 'Informe o E-mail';
read EMAIL
echo $EMAIL | egrep '^([a-zA-Z0-9_-.])+@[0-9a-zA-Z.-]+\.[a-z]{2,3}$' && echo -e '\033[01;32m E-mail válido! \033[0m' || echo -e '\033[01;31m NÃO é válido esse E-mail.\033[0m'

# Fonte: http://terminalroot.com.br/2015/01/shell-script-validandotele.html

################## FIM ################

.

LINUX EXPRESSOES REGULARES

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

Expressões Regulares: o que são e para que servem?

Muitas vezes precisamos buscar por determinadas palavras, nomes ou até mesmo trechos de código em um arquivo e, a partir dessa procura, realizar algumas alterações. As expressões regulares surgem como uma maneira de especificar um padrão existente entre essas palavras, para que não seja necessário procurar cada uma separadamente.

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

Metacaracteres para toda ocasião

Para trabalhar com as expressões regulares, usaremos os metacaracteres, ou seja, caracteres que representam um conjunto de outros caracteres ou que estipulem certas regras para a busca. E para que tudo fique mais poderoso, saiba que é possível combinar texto comum com metacaracteres.

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

Para estipular que nossa busca deve ser realizada no início de uma linha. Para isso, usamos o caractere ^. Caso a busca deva casar com uma expressão no fim da linha, usamos o cifrão ($).

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

Existem os caracteres que trabalham com o texto em si. Podemos, por exemplo, estabelecer uma lista de letras a serem buscadas, colocando-as entre colchetes: [asd], por exemplo, busca pelas letras "a" ou "s" ou "d". Um intervalo pode ser definido com a ajuda do hífen: [f-h] busca pelas letras "f", "g" ou "h".

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

O acento circunflexo dentro dos colchetes muda de função e passa a representar negação: [^vxz] busca por qualquer caractere, com exceção de "v", "x" ou "z". E se a procura for por palavras, podemos colocá-las entre parênteses e separadas pela barra vertical, também chamada de pipe (cano, em inglês): (Escritor|Livros), por exemplo, busca pelas palavras "Escritor" ou "Livros".

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

para especificar uma repetição, para procurar por um erro de digitação muito comum: duas letras "a" seguidas. Para isso, usaríamos o número entre colchetes, logo depois da letra: a{2}. Se a repetição fosse de duas a cinco vezes, a expressão ficaria a{2,5}. Para estipular que a repetição da letra "a" deve ocorrer pelo menos duas vezes, use a{ 2,}. Não se esqueça de trocar a letra e o número de acordo com as suas necessidades.

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

Ainda sobre a quantidade com que uma letra ou expressão pode ocorrer durante a busca, existem os metacaracteres ?, * e +, que simbolizam, respectivamente, zero ou uma vez, zero ou mais vezes, uma ou mais vezes. Exemplos: a?, a* ou a+.

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

Existem caracteres curingas. O ponto final, por exemplo, casa com um caractere qualquer, enquanto o asterisco casa com qualquer coisa. A partir disso, é possível combinar esses operadores de diversas formas e com a extensão que você precisar. Não há limites de número de caracteres para a criatividade ou necessidade.

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

GREP: UTILITÁRIO DE BUSCA DE REGEX

A maioria (se não for todas) das distribuições Linux incluem o grep, que é um buscador de regex.

A sintaxe é bem simples: grep 'padrao' entrada. Se a entrada não for especificada, usa-se a entrada padrão (stdin). Você também pode usar alguns parâmetros, como o “-v”, que mostra o inverso do padrão (ou seja, tudo aquilo que não bate com o padrão passado), e o “-i”, que torna a busca insensível à casa (não diferencia maiúsculas de minúsculas).

Note que usei aspas simples (apóstrofos) delimitando o padrão. Nem sempre elas são necessárias, mas em alguns casos, um metacaracter pode acabar sendo traduzido pelo shell, causando resultados errôneos, e as aspas simples evitam isto. Não entendeu? Relaxa, tá explicado aí embaixo…

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

Entenda que há caracteres e metacaracteres numa regex. Os caracteres são literais, ou seja, as letras (a-z, A-Z) e números (0-9), além de alguns símbolos e acentos. E os metacaracteres são caracteres que têm um significado especial, como o “^”, que indica começo de linha, e o “$”, que representa final de linha. Se você quer que um símbolo seja tratado literalmente, isto é, sem que seja tratado como um metacaracter, você precisa escapá-lo, colocando uma barra invertida ( \ ) antes do dito cujo. Um exemplo de uso disto é para o ponto ( . ), que é um metacaracter que representa qualquer caracter, e você pode querer tratá-lo como sendo apenas um ponto mesmo.

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

Aí vai de novo uma listinha com alguns dos metacaracteres mais usados:

1) ^
começa com

2) $
término de linha

3) .
qualquer caracter

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

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

6) |
operador lógico ou.

7) .*
operador lógico e.

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

Olhe esta “cobra”, por exemplo: [0-9]\{3\}\.[0-9]\{3\}\.[0-9]\{3\}-[0-9]\{2\}. Com o que ela casa? Com um número de CPF que esteja formatado com pontos e traço.

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

E onde eu uso este tipo de coisa?

Se você só navega na internet e papeia pelo Whatsapp ou algo parecido, aprender este tipo de coisa pode parecer desnecessário. Mas se costuma ler os logs do sistema, ou se trabalha com arquivos texto, ou se é um admin de sistemas Linux, ou se alguma vez se deparar com a necessidade de achar uma agulha no meio do palheiro, você vai usar regex.

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

METACARACTERES MAIS USADOS:

1) * ^ : começa com

2) * $ : término de linha

3) * . : qualquer caracter

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

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

6) * | : operador lógico ou

7) * .* : operador lógico e

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

Existe um outro utilitário, o egrep, que é uma versão extendida do grep. A sintaxe de uso é a mesma. Uma coisa legal dele é dispensar o escape para certos metacaracteres, como o “{}”, o que tornaria esta mesma expressão um pouquinho mais curta: [0-9]{3}.[0-9]{3}.[0-9]{3}-[0-9]{2}. Note que o ponto ainda precisou ser escapado, pois a intenção é tratá-lo apenas como ponto mesmo

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

.

REGRAS DO CÓDIGO LIMPO SHELL SCRIPT

.

ANOTAÇÕES LINUX, SHELLSCRIPT, TERMINAL LINUX BASH, VIM
REGRAS DO CÓDIGO LIMPO

.

Acho que talvez o cabeçalho para o shell script ficar mais claro é assim:

.

#!/bin/bash

#####################################
# Nome do Script:
#
# Descrição:
#
#
#
#
# Autor:
#
# Email:
#
#
#####################################
# Sobre este script:
#
#
#
# Exemplo:
#
#
#
# Histórico de modificações:
#
#
#
# Comentário:
#
#
#
# Regras do código limpo:
#
# 1) Colocar apenas um comando por linha
#
# 2) Alinhar verticalmente comandos de um mesmo bloco
#
# 3) Deslocar o alinhamento a direita a cada novo bloco
#
# 4) Usar linhas em branco para separar trechos
#
# 5) Não ultrapassar o limite de 80 colunas por linha
#
#
# 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
#
#
#####################################

kdialog \
--title "Bem vindo(a)!!" \
--msgbox "Aprendendo Shell Script" \
10 40

kdialog \
--title "Listar diretórios?" \
--yesno "Para listar diretórios e arquivos: ls -R" \

echo

ls -R

echo

# Fim do script

################ FIM ################

 

Comentários, sugestões e dicas são muito bem-vindas.

Até Breve!

🙂


Anotações do Guia Foca

.

O Guia Foca de Gleydson Mazioli da Silva foi atualizado pela última vez a mais ou menos uns oito anos atrás e apesar de bastante coisa ter mudado ele é extremamente valioso quando se trata de definições, comandos, bash, shell script e vários outros assuntos.

.

Na minha opinião o material é imbatível. A gente que gosta de Linux, pode passear pelo Guia Foca como em um parque de diversões pulando entre assuntos pois o índice de conteúdo é muito bem elaborado.

.

Este artigo tem partes do Guia Foca que me chamaram a atenção um dia destes. Este artigo também tem uns pedaços de outros lugares. Outras partes deste artigo, eu reformulei, adaptei e até mesmo escrevi e reescrevi de acordo com o que aprendi praticando, lendo e pesquisando.

Não é perfeito, longe disto, mas me é útil.

Escrevi/Montei/Adaptei este artigo para o meu uso pessoal e executo o que aprendi aqui, por minha conta e risco. Este artigo é bem útil para mim. Espero que ele seja útil também para você. Perdoe erros de digitação e se alguma definição estiver inadequada.

Revisei o texto algumas vezes mas, nunca é o suficiente. O segredo é a prática. Neste mundo atual onde se pode fazer isto com facilidade? Um dos poucos lugares que conheço é no mundo Linux. Isto não é apenas estudo com objetivo profissional para muitas pessoas é uma tranquila forma de lazer, para outros é um modo de se por a prova e descobrir até onde você consegue chegar. Todo processo de aprendizado é satisfatório quando você mesmo consegue perceber efetivamente o resultado.

.

COMANDOS

.

Comandos são ordens que passamos ao sistema operacional para executar uma determinada tarefa.

Cada comando tem uma função específica, devemos saber a função de cada comando e escolher o mais adequado para fazer o que desejamos, por exemplo:

ls - Mostra arquivos de diretórios

cd - Para mudar de diretório

É sempre usado um espaço depois do comando para separá-lo de uma opção ou parâmetro que será passado para o processamento. Um comando pode receber opções e parâmetros:

OPÇÕES
As opções são usadas para controlar como o comando será executado, por exemplo, para fazer uma listagem mostrando o dono, grupo, tamanho dos arquivos você deve digitar ls -l.

Opções podem ser passadas ao comando através de um:

"-" ou "--":

-

Opção identificada por uma letra. Podem ser usadas mais de uma opção com um único hífen. O comando ls -l -a é a mesma coisa de ls -la

--

Opção identificada por um nome. Também chamado de opção extensa. O comando ls --all é equivalente a ls -a.

Pode ser usado tanto "-" como "--", mas há casos em que somente "-" ou "--" esta disponível.

PARÂMETROS
Um parâmetro identifica o caminho, origem, destino, entrada padrão ou saída padrão que será passada ao comando.

Se você digitar: ls /usr/share/doc/copyright, /usr/share/doc/copyright será o parâmetro passado ao comando ls, neste caso queremos que ele liste os arquivos do diretório /usr/share/doc/copyright.

É normal errar o nome de comandos, mas não se preocupe, quando isto acontecer o sistema mostrará a mensagem command not found (comando não encontrado) e voltará ao aviso de comando. As mensagens de erro não fazem nenhum mal ao seu sistema, somente dizem que algo deu errado para que você possa corrigir e entender o que aconteceu. No GNU/Linux, você tem a possibilidade de criar comandos personalizados usando outros comandos mais simples (isto será visto mais adiante). Os comandos se encaixam em duas categorias: Comandos Internos e Comandos Externos.

Por exemplo: "ls -la /usr/share/doc", ls é o comando, -la é a opção passada ao comando, e /usr/share/doc é o diretório passado como parâmetro ao comando ls.

.

COMANDOS INTERNOS

São comandos que estão localizados dentro do interpretador de comandos (normalmente o Bash) e não no disco. Eles são carregados na memória RAM do computador junto com o interpretador de comandos.

Quando executa um comando, o interpretador de comandos verifica primeiro se ele é um Comando Interno caso não seja é verificado se é um Comando Externo.

Exemplos de comandos internos são: cd, exit, echo, bg, fg, source, help

.

COMANDOS EXTERNOS

São comandos que estão localizados no disco. Os comandos são procurados no disco usando o ordem do PATH e executados assim que encontrados.

.

ESTRUTURA BÁSICA DE DIRETÓRIOS DO SISTEMA LINUX

.

O sistema GNU/Linux possui a seguinte estrutura básica de diretórios organizados segundo o FHS (Filesystem Hierarchy Standard):

O DIRETÓRIO RAIZ (/)

Diretório do usuário root. Todos os arquivos e diretórios do sistema Linux instalado no computador partem de uma única origem: o diretório raiz. Mesmo que estejam armazenados em outros dispositivos físicos, é a partir do diretório raiz – representado pela barra (/) – que você poderá acessá-los. O único usuário do sistema capaz de criar ou mover arquivos do diretório raiz é o root, ou seja, o usuário-administrador. Isso evita que usuários comuns cometam erros e acabem comprometendo a integridade de todo o sistema de arquivos.

BINÁRIOS EXECUTÁVEIS: /BIN

No diretório /bin estão localizados os binários executáveis que podem ser utilizados por qualquer usuário do sistema. São comandos essenciais, usados para trabalhar com arquivos, textos e alguns recursos básicos de rede, como o cp, mv, ping e grep.

BINÁRIOS DO SISTEMA: /SBIN

Diretório de programas usados pelo superusuário (root) para administração e controle do funcionamento do sistema. Assim como o /bin, este diretório armazena executáveis, mas com um diferencial: são aplicativos utilizados por administradores de sistema com o propósito de realizar funções de manutenção e outras tarefas semelhantes. Entre os comandos disponíveis estão o ifconfig, para configurar e controlar interfaces de rede TCP/IP, e o fdisk, que permite particionar discos rígidos, por exemplo.

PROGRAMAS DIVERSOS: /USR

Contém maior parte de seus programas. Normalmente acessível somente como leitura. Se você não encontrar um comando no diretório /bin ou /sbin, ele certamente está aqui. O /usr reúne executáveis, bibliotecas e até documentação de softwares usados pelos usuários ou administradores do sistema. Além disso, sempre que você compilar e instalar um programa a partir do código-fonte, ele será instalado nesse diretório.

CONFIGURAÇÕES DO SISTEMA: /ETC

Arquivos de configuração de seu computador local. No diretório /etc ficam arquivos de configuração que podem ser usados por todos os softwares, além de scripts especiais para iniciar ou interromper módulos e programas diversos. É no /etc que se encontra, por exemplo, o arquivo resolv.conf, com uma relação de servidores DNS que podem ser acessados pelo sistema, com os parâmetros necessários para isso.

BIBLIOTECAS: /LIB

Bibliotecas compartilhadas pelos programas do sistema e módulos do kernel. Neste ponto do sistema de arquivos ficam localizadas as bibliotecas usadas pelos comandos presentes em /bin e /sbin. Normalmente, os arquivos de bibliotecas começam com os prefixos ld ou lib e possuem "extensão" so.

OPCIONAIS: /OPT

Aplicativos adicionais, que não são essenciais para o sistema, terminam neste diretório.

AQUIVOS PESSOAIS: /HOME

Diretórios contendo os arquivos dos usuários. No diretório /home ficam os arquivos pessoais, como documentos e fotografias, sempre dentro de pastas que levam o nome de cada usuário. Vale notar que o diretório pessoal do administrador não fica no mesmo local, e sim em /root.

INICIALIZAÇÃO: /BOOT

Contém arquivos necessários para a inicialização do sistema, ou seja, o processo de boot do Linux, quando o computador é ligado, ficam em /boot.

VOLUMES E MÍDIAS: /MNT E /MEDIA

Para acessar os arquivos de um CD, pendrive ou disco rígido presente em outra máquina da rede, é necessário "montar" esse conteúdo no sistema de arquivos local, isso é, torná-lo acessível como se fosse apenas mais um diretório no sistema.

Em /media ficam montadas todas as mídias removíveis, como dispositivos USB e DVDs de dados. Já o diretório /mnt fica reservado aos administradores que precisam montar temporariamente um sistema de arquivos externo.

SERVIÇOS: /SRV

Dados de servidores e serviços em execução no computador ficam armazenados dentro desse diretório.

ARQUIVOS DE DISPOSITIVOS: /DEV

No Linux, tudo é apresentado na forma de arquivos. Ao plugar um pendrive no computador, por exemplo, um arquivo será criado dentro do diretório /dev e ele servirá como interface para acessar ou gerenciar o drive USB. Nesse diretório, você encontra caminhos semelhantes para acessar terminais e qualquer dispositivo conectado ao computador, como o mouse e até modems.

ARQUIVOS VARIÁVEIS: /VAR

Todo arquivo que aumenta de tamanho ao longo do tempo está no diretório de arquivos variáveis. Um bom exemplo são os logs do sistema, ou seja, registros em forma de texto de atividades realizadas no Linux, como os logins feitos ao longo dos meses.

PROCESSOS DO SISTEMA: /PROC

Lembra da história de que tudo funciona como um arquivo no Linux? Pois o /proc é a prova disso. Nesse diretório são encontrados arquivos que revelam informações sobre os recursos e processos em execução no sistema. Quer um exemplo? Para saber há quanto tempo o Linux está sendo usado desde a última vez em que foi iniciado, basta ler o arquivo /proc/uptime.

ARQUIVOS TEMPORÁRIOS: /TMP

Arquivos e diretórios criados temporariamente tanto pelo sistema quanto pelos usuários devem ficar nesse diretório. Boa parte deles é apagada sempre que o computador é reiniciado.

.

NOMEANDO ARQUIVOS E DIRETÓRIOS

.

No GNU/Linux, os arquivos e diretórios pode ter o tamanho de até 255 letras. Você pode identifica-lo com uma extensão (um conjunto de letras separadas do nome do arquivo por um ".").

Os programas executáveis do GNU/Linux, ao contrário dos programas de DOS e Windows, não são executados a partir de extensões .exe, .com ou .bat. O GNU/Linux (como todos os sistemas POSIX) usa a permissão de execução de arquivo para identificar se um arquivo pode ou não ser executado.

Digamos que está elaborando um trabalho de história. Ele pode ser identificado mais facilmente caso fosse gravado com o nome trabalho.text ou trabalho.txt. Também é permitido gravar o arquivo com o nome Trabalho de Historia.txt mas não é recomendado gravar nomes de arquivos e diretórios com espaços. Porque será necessário colocar o nome do arquivo entre "aspas" para acessa-lo (por exemplo, cat "Trabalho de Historia.txt"). Ao invés de usar espaços, prefira capitalizar o arquivo (usar letras maiúsculas e minúsculas para identifica-lo): TrabalhodeHistoria.txt.

.

LINUX DISCOS E PARTIÇÕES

.

Partições são divisões existentes no disco rígido que marcam onde começa e onde termina um sistema de arquivos. As partições nos permitem usar mais de um sistema operacional no mesmo computador, ou dividir o disco rígido em uma ou mais partes

.

Para gravar os dados, o disco rígido deve ser primeiro particionado no Linux hoje uso um programa gráfico chamado Gparted para fazer o particionamento

.

Podemos fazer isto também pela linha de comando do Linux usando o `cfdisk', `parted', `fdisk'

.

O tipo da partição que uso estes dias é EXT4

.

Após criada e formatada, a partição será automaticamente identificada como um dispositivo no diretório `/dev'

.

Uma partição de disco não interfere em outras partições existentes, por este motivo é possível usar o `Windows', `GNU/Linux' e qualquer outro sistema operacional no mesmo disco

.

JOURNALING O QUE É ISTO?

.

O sistema de journaling grava qualquer operação que será feita no disco em uma área especial chamada "journal", assim se acontecer algum problema durante alterações no disco, ele pode voltar ao estado anterior do arquivo, ou finalizar a operação

Desta forma, o journal acrescenta ao sistema de arquivos o suporte a alta disponibilidade e maior tolerância a falhas. Após uma falha de energia, por exemplo, o journal é analisado durante a montagem do sistema de arquivos e todas as operações que estavam sendo feitas no disco são verificadas

Dependendo do estado da operação, elas podem ser desfeitas ou finalizadas

.

TIPOS DE EXECUÇÃO DE COMANDOS/PROGRAMAS

.

Um programa pode ser executado de duas formas:

.

1. `Primeiro Plano' - Também chamado de _foreground_.

Quando em foreground você deve esperar o término da execução de um programa para executar um novo comando

Somente é mostrado o aviso de comando após o término de execução do comando/programa.

2. `Segundo Plano' - Também chamado de _background_.

Background é quando você não precisa esperar o término da execução de um programa para executar um novo comando

Após iniciar um programa em _background_, é mostrado um número PID (identificação do Processo) e o aviso de comando é novamente mostrado, permitindo o uso normal do sistema.

O programa executado em background continua sendo executado internamente

Após ser concluído, o sistema retorna uma mensagem de pronto acompanhado do número PID do processo que terminou

.

Para iniciar um programa em `primeiro plano', basta digitar seu nome normalmente

Para iniciar um programa em `segundo plano', acrescente um espaço e o caracter `"&"' após o final do comando

$ find *.jpg &

.

Mesmo que um usuário execute um programa em segundo plano e saia do sistema, o programa continuará sendo executado até que seja concluído ou finalizado pelo usuário que iniciou a execução (ou pelo usuário root)

.

Exemplo:

~ $find *.jpg &
[1] 2701
~ $find: ‘*.jpg’: Arquivo ou diretório não encontrado

[1]+ Fim da execução com status 1 find *.jpg

.

O comando será executado em segundo plano e deixará o sistema livre para outras tarefas

Após o comando `find' terminar, será mostrada uma mensagem como viste acima

.

O COMANDO PS

.

Algumas vezes é útil ver quais processos estão sendo executados no computador

O comando `ps' faz isto, e também nos mostra qual usuário executou o programa, hora que o processo foi iniciado, etc

.

`ps [_opções_]'

.

Onde:

_opções_

a
Mostra os processos criados por você e de outros usuários do sistema.

x
Mostra processos que não são controlados pelo terminal.

u
Mostra o nome de usuário que iniciou o processo e hora em que o
processo foi iniciado.

m
Mostra a memória ocupada por cada processo em execução.

f
Mostra a árvore de execução de comandos (comandos que são chamados por outros comandos).

e
Mostra variáveis de ambiente no momento da inicialização do processo.

w
Mostra a continuação da linha atual na próxima linha ao invés de cortar o restante que não couber na tela

.

Estas opções acima podem ser combinadas para resultar em uma listagem mais completa

Você também pode usar pipes "|" para `filtrar' a saída do comando `ps'

.

Para detalhes, `| (pipe)'

.

Ao contrário de outros comandos, o comando `ps' não precisa do hífen

"-" para especificar os comandos. Isto porque ele não utiliza opções longas e não usa parâmetros.

.

Exemplos: `ps', `ps ax|grep inetd', `ps auxf', `ps auxw'

.

CONTROLE DE EXECUÇÃO DE PROCESSOS - Interrompendo a execução de um processo

.

Para cancelar a execução de algum processo `rodando em primeiro plano', basta pressionar as teclas `CTRL'+`C'

A execução do programa será cancelada e será mostrado o aviso de comando

Você também pode usar o comando `kill' para interromper um processo sendo executado

.

PARANDO MOMENTANEAMENTE A EXECUÇÃO DE UM PROCESSO

.

Para parar a execução de um processo rodando em primeiro plano, basta pressionar as teclas `CTRL'+`Z'

O programa em execução será pausado e será mostrado o número de seu job e o aviso de comando

.

Para retornar a execução de um comando pausado, use `fg' ou `bg'

.

O programa permanece na memória no ponto de processamento em que parou quando ele é interrompido

Você pode usar outros comandos ou rodar outros programas enquanto o programa atual está interrompido

.

JOBS

.

O comando `jobs' mostra os processos que estão parados ou rodando em _segundo plano_

Processos em segundo plano são iniciados usando o símbolo `"&"' no final da linha de comando ou através do comando `bg'

.

O número de identificação de cada processo parado ou em segundo plano (job), é usado com os comandos `fg' e `bg'

Um processo interrompido pode ser finalizado usando-se o comando `kill %[num]', onde `[num]' é o número do processo obtido pelo comando `jobs'

.

FG

Permite fazer um programa rodando em segundo plano ou parado, rodar em primeiro plano. Você deve usar o comando jobs para pegar o número do processo rodando em segundo plano ou interrompida, este número será passado ao comando fg para ativa-lo em primeiro plano.

fg [número]

Onde número é o número obtido através do comando jobs.

Caso seja usado sem parâmetros, o fg utilizará o último programa interrompido (o maior número obtido com o comando jobs)

.

BG

Permite fazer um programa rodando em primeiro plano ou parado, rodar em segundo plano. Para fazer um programa em primeiro plano rodar em segundo, é necessário primeiro interromper a execução do comando com CTRL+ Z, será mostrado o número da tarefa interrompida, use este número com o comando bg para iniciar a execução do comando em segundo plano.

bg [número]

Onde: número número do programa obtido com o pressionamento das teclas CTRL+Z ou através do comando jobs.

.

KILL

Permite enviar um sinal a um comando/programa. Caso seja usado sem parâmetros, o kill enviará um sinal de término ao processo sendo executado.

kill [opções] [sinal] [número]

Onde:

número
É o número de identificação do processo obtido com o comando ps, Também pode ser o número após o sinal de % obtido pelo comando jobs para matar uma tarefa interrompida [jobs].

sinal
Sinal que será enviado ao processo. Se omitido usa -15 como padrão.

opções
-9
Envia um sinal de destruição ao processo ou programa. Ele é terminado imediatamente sem chances de salvar os dados ou apagar os arquivos temporários criados por ele.

Você precisa ser o dono do processo ou o usuário root para termina-lo ou destruí-lo. Você pode verificar se o processo foi finalizado através do comando ps. Os tipos de sinais aceitos pelo GNU/Linux são explicados em detalhes em Sinais do Sistema.

Exemplo: kill 500, kill -9 500, kill %1.

.

KILLALL

Permite finalizar processos através do nome.

killall [opções] [sinal] [processo]

Onde:

processo
Nome do processo que deseja finalizar

sinal
Sinal que será enviado ao processo (pode ser obtido usando a opção -i).

opções
-i
Pede confirmação sobre a finalização do processo.

-l
Lista o nome de todos os sinais conhecidos.

-q
Ignora a existência do processo.

-v
Retorna se o sinal foi enviado com sucesso ao processo.

-w
Finaliza a execução do killall somente após finalizar todos os processos.

Os tipos de sinais aceitos pelo GNU/Linux são explicados em detalhes na Sinais do Sistema.

Exemplo: killall -HUP inetd

.

KILLALL5

.

Envia um sinal de finalização para todos os processos sendo executados.

killall5 [sinal]

.

PIDOF

Retorna o PID do processo especificado

pidof [opções] [nome]

Onde:

nome
Nome do processo que seja obter o número PID

opções
-s
Retorna somente o primeiro PID encontrado.

-x
Retorna o PID do do shell que está executando o script

-o [PID]
Ignora o processo com aquele PID. O PID especial %PPID pode ser usado para nomear o processo pai do programa pidof, em outras palavras

OBS: O programa pidof é um link simbólico ao programa killall5. Cuidado ao executar o killall5 as funções e opções são completamente diferentes dependendo da forma como é chamado na linha de comando!

Exemplo: pidof -s init

.

CURINGAS

.

Curingas (ou referência global) é um recurso usado para especificar um ou mais arquivos ou diretórios do sistema de uma só vez. Este é um recurso permite que você faça a filtragem do que será listado, copiado, apagado, etc. São usados 4 tipos de curingas no GNU/Linux:

"*" - Faz referência a um nome completo/restante de um arquivo/diretório.

"?" - 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:

[a-z][0-9] - Faz referência a caracteres de a até z seguido de um caractere de 0 até 9.

[a,z][1,0] - Faz a referência aos caracteres a e z seguido de um caractere 1 ou 0 naquela posição.

[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 caractere exceto o da expressão. Por exemplo [^abc] faz referência a qualquer caractere exceto a, b e c.

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

X{ab,01} - Faz referência a sequencia de caracteres Xab ou X01

X{a-z,10} Faz referencia a sequencia 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 é útil para a criação de diretórios. Lembrando que os 4 tipos de curingas ("*", "?", "[]", "{}") podem ser usados juntos. Para entender melhor vamos a prática:

Vamos dizer que tenha 5 arquivo no diretório /usr/teste: teste1.txt, teste2.txt, teste3.txt, teste4.new, teste5.new.

Caso deseje listar todos os arquivos do diretório /usr/teste você pode usar o coringa "*" para especificar todos os arquivos do diretório:

cd /usr/teste e ls * ou ls /usr/teste/*.

Não tem muito sentido usar o comando ls com "*" porque todos os arquivos serão listados se o ls for usado sem nenhum Coringa.

Agora para listar todos os arquivos teste1.txt, teste2.txt, teste3.txt com exceção de teste4.new, teste5.new, podemos usar inicialmente 3 métodos:

Usando o comando ls *.txt que pega todos os arquivos que começam com qualquer nome e terminam com .txt.

Usando o comando ls teste?.txt, que pega todos os arquivos que começam com o nome teste, tenham qualquer caractere no lugar do coringa ? e terminem com .txt. Com o exemplo acima teste*.txt também faria a mesma coisa, mas se também tivéssemos um arquivo chamado teste10.txt este também seria listado.

Usando o comando ls teste[1-3].txt, que pega todos os arquivos que começam com o nome teste, tenham qualquer caractere entre o número 1-3 no lugar da 6a letra e terminem com .txt. Neste caso se obtém uma filtragem mais exata, pois o coringa ? especifica qualquer caractere naquela posição e [] especifica números, letras ou intervalo que será usado.

Agora para listar somente teste4.new e teste5.new podemos usar os seguintes métodos:

ls *.new que lista todos os arquivos que terminam com .new

ls teste?.new que lista todos os arquivos que começam com teste, contenham qualquer caracter na posição do coringa ? e terminem com .new.

ls teste[4,5].* que lista todos os arquivos que começam com teste contenham números de 4 e 5 naquela posição e terminem com qualquer extensão.

Existem muitas outras formas de se fazer a mesma coisa, isto depende do gosto de cada um. O que pretendi fazer aqui foi mostrar como especificar mais de um arquivo de uma só vez. O uso de curingas será útil ao copiar arquivos, apagar, mover, renomear, e nas mais diversas partes do sistema. Alias esta é uma característica do GNU/Linux: permitir que a mesma coisa possa ser feita com liberdade de várias maneiras diferentes.

.

PSTREE

.

Mostra a estrutura de processos em execução no sistema em forma de árvore.

pstree [opções] [pid]

Onde:

pid
Número do processo que terá sua árvore listada. Se omitido, lista todos os processos.

opções
-a
Mostra opções passadas na linha de comando.

-c
Mostra toda a estrutura (inclusive sub-processos do processo pai).

-G
Usa caracteres gráficos no desenho da árvore de processos.

-h
Destaca o processo atual e seus antecessores.

-H [pid]
Destaca o processo especificado.

-l
Não faz quebra de linha

-n
Classifica pelo número PID ao invés do nome.

-p
Mostra o número PID entre parênteses após o nome do processo.

-u
Mostra também o dono do processo.

-U
Usa o conjunto de caracteres Unicode para o desenho da árvore

.

FECHANDO UM PROGRAMA QUANDO NÃO SE SABE COMO SAIR

.

Muitas vezes quando se esta iniciando no GNU/Linux você pode executar um programa e talvez não saber como fecha-lo. Este capítulo do guia pretende ajuda-lo a resolver este tipo de problema.

Isto pode também ocorrer com programadores que estão construindo seus programas e por algum motivo não implementam uma opção de saída, ou ela não funciona!

Em nosso exemplo vou supor que executamos um programa em desenvolvimento com o nome contagem que conta o tempo em segundos a partir do momento que é executado, mas que o programador esqueceu de colocar uma opção de saída. Siga estas dicas para finaliza-lo:

Normalmente todos os programas UNIX (o GNU/Linux também é um Sistema Operacional baseado no UNIX) podem ser interrompidos com o pressionamento das teclas e . Tente isto primeiro para finalizar um programa. Isto provavelmente não vai funcionar se estiver usando um Editor de Texto (ele vai entender como um comando de menu). Isto normalmente funciona para comandos que são executados e terminados sem a intervenção do usuário.

Caso isto não der certo, vamos partir para a força! ;-)

Mude para um novo console (pressionando e ), e faça o login como usuário root.

Localize o PID (número de identificação do processo) usando o comando: ps ax, aparecerão várias linhas cada uma com o número do processo na primeira coluna, e a linha de comando do programa na última coluna. Caso aparecerem vários processos você pode usar ps ax|grep contagem, neste caso o grep fará uma filtragem da saída do comando ps ax mostrando somente as linhas que tem a palavra "contagem". Para maiores detalhes, veja o comando grep

Feche o processo usando o comando kill PID, lembre-se de substituir PID pelo número encontrado pelo comando ps ax acima.

O comando acima envia um sinal de término de execução para o processo (neste caso o programa contagem). O sinal de término mantém a chance do programa salvar seus dados ou apagar os arquivos temporários que criou e então ser finalizado, isto depende do programa.

Alterne para o console onde estava executando o programa contagem e verifique se ele ainda está em execução. Se ele estiver parado mas o aviso de comando não está disponível, pressione a tecla . Frequentemente acontece isto com o comando kill, você finaliza um programa mas o aviso de comando não é mostrado até que se pressione .

Caso o programa ainda não foi finalizado, repita o comando kill usando a opção -9: kill -9 PID. Este comando envia um sinal de DESTRUIÇÃO do processo, fazendo ele terminar "na marra"!

Uma última dica: todos os programas estáveis (todos que acompanham as boas distribuições GNU/Linux) tem sua opção de saída. Lembre-se que quando finaliza um processo todos os dados do programa em execução podem ser perdidos (principalmente se estiver em um editor de textos), mesmo usando o kill sem o parâmetro -9.

Procure a opção de saída de um programa consultando o help, as páginas de manual, a documentação que acompanha o programa, info pages.

.

ELIMINANDO CARACTERES ESTRANHOS

.

As vezes quando um programa mal comportado é finalizado ou quando você visualiza um arquivo binário através do comando cat, é possível que o aviso de comando (prompt) volte com caracteres estranhos.

Para fazer tudo voltar ao normal, basta digitar reset e teclar ENTER. Não se preocupe, o comando reset não reiniciará seu computador (como o botão reset do seu computador faz), ele apenas fará tudo voltar ao normal.

Note que enquanto você digitar reset aparecerão caracteres estranhos ao invés das letras. Não se preocupe! Basta digitar corretamente e bater ENTER e o aviso de comando voltará ao normal

.

GREP

.

Procura por um texto dentro de um arquivo(s) ou no dispositivo de entrada padrão.

grep [expressão] [arquivo] [opções]

Onde:

expressão
palavra ou frase que será procurada no texto. Se tiver mais de 2 palavras você deve identifica-la com aspas "" caso contrário o grep assumirá que a segunda palavra é o arquivo!

arquivo
Arquivo onde será feita a procura.

opções
-A [número]
Mostra o [número] de linhas após a linha encontrada pelo grep.

-B [número]
Mostra o [número] de linhas antes da linha encontrada pelo grep.

-f [arquivo]
Especifica que o texto que será localizado, esta no arquivo [arquivo].

.

TOUCH

.

Muda a data e hora que um arquivo foi criado. Também pode ser usado para criar arquivos vazios. Caso o touch seja usado com arquivos que não existam, por padrão ele criará estes arquivos.

touch [opções] [arquivos]

Onde:

arquivos
Arquivos que terão sua data/hora modificados.

opções
-t MMDDhhmm[ANO.segundos]
Usa Mês (MM), Dias (DD), Horas (hh), minutos (mm) e opcionalmente o ANO e segundos para modificação do(s) arquivos ao invés da data e hora atual.

-a, --time=atime
Faz o touch mudar somente a data e hora do acesso ao arquivo.

-c, --no-create
Não cria arquivos vazios, caso os arquivos não existam.

-m, --time=mtime
Faz o touch mudar somente a data e hora da modificação.

-r [arquivo]
Usa as horas no [arquivo] como referência ao invés da hora atual.

Exemplos:

touch teste - Cria o arquivo teste caso ele não existir.

touch -t 10011230 teste - Altera da data e hora do arquivo para 01/10 e 12:30.

touch -t 120112301999.30 teste - Altera da data, hora ano, e segundos do arquivo para 01/12/1999 e 12:30:30.

touch -t 12011200 * - Altera a data e hora do arquivo para 01/12 e 12:00.

.

ECHO

.

Mostra mensagens. Este comando é útil na construção de scripts para mostrar mensagens na tela para o usuário acompanhar sua execução.

echo [mensagem]

A opção -n pode ser usada para que não ocorra o salto de linha após a mensagem ser mostrada

.

SHUTDOWN

.

Desliga/reinicia o computador imediatamente ou após determinado tempo (programável) de forma segura. Todos os usuários do sistema são avisados que o computador será desligado . Este comando somente pode ser executado pelo usuário root ou quando é usada a opção -a pelos usuários cadastrados no arquivo /etc/shutdown.allow que estejam logados no console virtual do sistema.

shutdown [opções] [hora] [mensagem]

hora
Momento que o computador será desligado. Você pode usar HH:MM para definir a hora e minuto, MM para definir minutos, +SS para definir após quantos segundos, ou now para imediatamente (equivalente a +0).

O shutdown criará o arquivo /etc/nologin para não permitir que novos usuários façam login no sistema (com exceção do root). Este arquivo é removido caso a execução do shutdown seja cancelada (opção -c) ou após o sistema ser reiniciado.

mensagem
Mensagem que será mostrada a todos os usuários alertando sobre o reinicio/desligamento do sistema.

opções
-h
Inicia o processo para desligamento do computador.

-r
Reinicia o sistema

-c
Cancela a execução do shutdown. Você pode acrescentar uma mensagem avisando aos usuários sobre o fato.

-a
Permite que os nomes de usuários contidos no arquivo /etc/shutdown.allow possam utilizar o shutdown para reinicializar/desligar o sistema. Deve ser colocado um nome de usuário por linha. O limite máximo de usuários neste arquivo é de 32.

Este arquivo é útil quando o shutdown é usado para controlar o pressionamento das teclas CTRL+ALT+DEL no /etc/inittab.

-k
Simula o desligamento/reinicio do sistema, enviando mensagem aos usuários.

-f
Não executa a checagem do sistema de arquivos durante a inicialização do sistema. Este processo é feito gravando-se um arquivo /fastboot que é interpretado pelos scripts responsáveis pela execução do fsck durante a inicialização do sistema.

-F
Força a checagem do sistema de arquivos durante a inicialização. É gravado um arquivo chamado /forcefsck que é interpretado pelos scripts responsáveis pela execução do fsck durante a inicialização do sistema.

-n
Faz com que o shutdown ignore a execução do init fechando todos os processos.

-t [num]
Faz com que o shutdown envie um sinal de término aos processos e aguarde [num] segundos antes de enviar o sinal KILL.

O shutdown envia uma mensagem a todos os usuários do sistema alertando sobre o desligamento durante os 15 minutos restantes e assim permite que finalizem suas tarefas. Após isto, o shutdown muda o nível de execução através do comando init para 0 (desligamento), 1 (modo monousuário), 6 (reinicialização). É recomendado utilizar o símbolo "&" no final da linha de comando para que o shutdown seja executado em segundo plano.

Quando restarem apenas 5 minutos para o reinicio/desligamento do sistema, o programa login será desativado, impedindo a entrada de novos usuários no sistema.

O programa shutdown pode ser chamado pelo init através do pressionamento da combinação das teclas de reinicialização CTRL+ALT+DEL alterando-se o arquivo /etc/inittab. Isto permite que somente os usuários autorizados (ou o root) possam reinicializar o sistema.

Exemplos:

"shutdown -h now" - Desligar o computador imediatamente.

"shutdown -r now" - Reinicia o computador imediatamente.

"shutdown 19:00 A manutenção do servidor será iniciada às 19:00" - Faz o computador entrar em modo monousuário (init 1) às 19:00 enviando a mensagem A manutenção do servidor será iniciada às 19:00 a todos os usuários conectados ao sistema.

"shutdown -r 15:00 O sistema será reiniciado às 15:00 horas" - Faz o computador ser reiniciado (init 6) às 15:00 horas enviando a mensagem O sistema será reiniciado às 15:00 horas a todos os usuários conectados ao sistema.

shutdown -r 20 - Faz o sistema ser reiniciado após 20 minutos.

shutdown -c - Cancela a execução do shutdown.

shutdown -t 30 -r 20 - Reinicia o sistema após 20 minutos, espera 30 segundos após o sinal de término para enviar o sinal KILL a todos os programas abertos.
-h, --no-filename
Não mostra os nomes dos arquivos durante a procura.

-i, --ignore-case
Ignora diferença entre maiúsculas e minúsculas no texto procurado e arquivo.

-n, --line-number
Mostra o nome de cada linha encontrada pelo grep.

-E
Ativa o uso de expressões regulares.

-U, --binary
Trata o arquivo que será procurado como binário.

Se não for especificado o nome de um arquivo ou se for usado um hífen "-", grep procurará a string no dispositivo de entrada padrão. O grep faz sua pesquisa em arquivos texto. Use o comando zgrep para pesquisar diretamente em arquivos compactados com gzip, os comandos e opções são as mesmas.

Exemplos: grep "capitulo" texto.txt, ps ax|grep inetd, grep "capitulo" texto.txt -A 2 -B 2

.

CMP

.

Compara dois arquivos de qualquer tipo (binário ou texto). Os dois arquivos especificados serão comparado e caso exista diferença entre eles, é mostrado o número da linha e byte onde ocorreu a primeira diferença na saída padrão (tela) e o programa retorna o código de saída 1.

cmp [arquivo1] [arquivo2] [opções]

Opções:

arquivo1/arquivo2
Arquivos que serão comparados.

opções
-l
Mostra o número do byte (hexadecimal) e valores diferentes de bytes (octal) para cada diferença.

-s
Não mostra nenhuma diferença, só retorna o código de saída do programa.

Use o comando zcmp para comparar diretamente arquivos binários/texto compactados com gzip.

Exemplo: cmp teste.txt teste1.txt

.

DIFF

.

Compara dois arquivos e mostra as diferenças entre eles. O comando diff é usado somente para a comparação de arquivos em formato texto. As diferenças encontradas podem ser redirecionadas para um arquivo que poderá ser usado pelo comando patch para aplicar as alterações em um arquivo que não contém as diferenças. Isto é útil para grandes textos porque é possível copiar somente as modificações (geradas através do diff, que são muito pequenas) e aplicar no arquivo para atualiza-lo (através do patch) ao invés de copiar a nova versão. Este é um sistema de atualização muito usado na atualização dos código fonte do kernel do GNU/Linux.

diff [diretório1/arquivo1] [diretório2/arquivo2] [opções]

Opções:

diretório1/arquivo1 diretório2/arquivo2
Arquivos /diretórios que serão comparados. Normalmente é usado como primeiro arquivo/diretório o mais antigo e o mais novo como segundo.

opções
-lines [num]
Gera a diferença com [num] linhas de contexto. Por padrão o diff gera um arquivo com 2 linhas que é o mínimo necessário para o correto funcionamento do patch.

-a
Compara os dois arquivos como arquivos texto.

-b
Ignora espaços em branco como diferenças.

-B
Ignora linhas em branco inseridas ou apagadas nos arquivos.

-i
Ignora diferenças entre maiúsculas e minúsculas nos arquivos.

-H
Usa análise heurística para verificar os arquivos.

-N
Em uma comparação de diretórios, se o arquivo apenas existe em um diretório, trata-o como presente mas vazio no outro diretório.

-P
Em uma comparação de diretórios, se o arquivos apenas existe no segundo diretório, trata-o como presente mas vazio no primeiro diretório.

-q
Mostra somente se os dois arquivos possuem diferenças. Não mostra as diferenças entre eles.

-r
Compara diretórios e sub-diretórios existentes.

-S [nome]
Inicia a comparação de diretórios pelo arquivo [nome]. É útil quando cancelamos uma comparação.

-t
Aumenta a tabulação das diferenças encontradas.

-u
Usa o formato de comparação unificado.

Use o comando zdiff para comparar diretamente arquivos compactados pelo utilitário gzip

Use o comando sdiff para visualizar as linhas diferentes entre os dois arquivos em formato texto simples.

Exemplo:

diff texto.txt texto1.txt - Compara o arquivo texto.txt com texto1.txt e exibe suas diferenças na tela.

diff -Bu texto.txt texto1.txt - Compara o arquivo texto.txt com texto1.txt ignorando linhas em branco diferentes entre os dois arquivos e usando o formato unificado.

diff texto.txt texto1.txt >texto.diff - Compara o arquivo texto.txt com texto1.txt e gera um arquivo chamado texto.diff contendo a diferença entre eles. Este arquivo poderá ser usado pelo patch para aplicar as diferenças existente entre os dois no arquivo texto.txt.

diff -r /usr/src/linux-2.2.13 /usr/src/linux-2.2.14 >patch-2.2.14.diff - Compara o diretório e sub-diretórios linux-2.2.13 e linux-2.2.14 e grava as diferenças entre eles no arquivo patch-2.2.14.diff

.

PR

.

Página arquivos texto ou a entrada padrão para impressão. Este comando faz a paginação de um arquivo texto e opcionalmente ajusta o número de colunas e mostra o resultado na saída padrão.

pr [opções] [arquivo]

Onde:

arquivo
Arquivo que será paginado para impressão.

opções
+[NUM]
Inicia a numeração de páginas na página [PAGINA]

-[NUM]
Mostra a saída com [NUM] colunas.

-c
Imprime o caracter CTRL como "^" na saída padrão.

-F, -f
Usa avanço de página ao invés de linhas em branco para separar páginas.

-e[caracter][tamanho]
Usa o caracter [caracter] como tabulação (o padrão é tab) e o espaço da tabulação [tamanho].

-h [nome]
Mostra [nome] ao invés do nome do arquivo no cabeçalho.

-l [num]
Define o número máximo de linhas por página para [num].

-m
Imprime vários arquivos em paralelo, um por coluna.

-r
Oculta mensagens de erro de abertura de arquivos.

-w [num]
Ajusta a largura da página para [num] colunas (o padrão é 72).

Exemplo: pr -l 50 -h "Teste do comando pr" teste.txt

.

CUT

.

Mostra seções de cada linha do arquivo dependendo das opções passadas ao programa.

cut [opções] [arquivo]

Onde:

arquivo
Arquivo que será verificado pelo comando cut.

opções
-b, --bytes [bytes]
Mostra somente a lista de [bytes] do arquivo.

-c, --characters [numero]
Mostra somente o [número] de caracteres no arquivo. É semelhante a opção "-b" mas tabs e espaços são tratados como qualquer caracter.

-f, --field [campos]
Mostra somente a lista de [campos].

-d, --delimite [delimitador]
Para uso com a opção -f, os campos são separados pelo primeiro caracter em [delimitador] ao invés de tabulações.

-s
Para uso com a opção -f, somente mostra linhas que contém o caracter separador de campos.

Devem ser especificadas opções para o funcionamento deste comando. Os bytes, campos e delimitadores podem ser especificados através de intervalos de caracteres (usando a-z), através de vírgulas (a,b,d) ou da combinação entre eles.

cut -b 1,3 /etc/passwd - Pega a primeira e terceira letra (byte) de cada linha do arquivo /etc/passwd

cut -b 1,3-10 /etc/passwd - Pega a primeira letra (byte) e terceira a décima letra de cada linha do arquivo /etc/passwd.

cut -c 1,3-10 /etc/passwd - Pega o primeiro caracter e terceiro ao décimo caracter de cada linha do arquivo /etc/passwd

.

PING

.

Verifica se um computador está disponível na rede. Este comando é muito utilizado por alguns programas de conexão e administradores para verificar se uma determinada máquina está conectada na rede e também para verificar o tempo de resposta de cada máquina da rede. O ping envia pacotes ICMS ECHO_REQUEST para um computador, este quando recebe o pacote envia uma resposta ao endereço de origem avisando que está disponível na rede.

ping [opções][IP/DNS]

onde:

IP/dns
Endereço IP ou nome DNS do endereço.

opções
-c [num]
Envia num pacotes ao computador de destino.

-f
Flood ping. Envia novos pacotes antes de receber a resposta do pacote anterior. Para cada requisição enviada, um "." é mostrado na tela e para cada resposta recebida, um backspace é mostrado. Somente o usuário root pode utilizar esta opção e pode te auxiliar muito na detecção de erros de transmissão de pacotes em interfaces das máquinas em sua rede.

-i [seg]
Aguarda [seg] segundos antes de enviar cada pacote.

-q
Não mostra as requisições enquanto são enviadas, somente mostra as linhas de sumário no inicio e término do programa.

-s [tamanho]
Especifica o tamanho do pacote que será enviado.

-v, --verbose
Saída detalhada, tanto os pacotes enviados como recebidos são listados.

Exemplo: ping 192.168.1.1, ping www.debian.org

.

FINGER

.

Mostra detalhes sobre os usuários de um sistema. Algumas versões do finger possuem bugs e podem significar um risco para a segurança do sistema. É recomendado desativar este serviço na máquina local.

finger [usuário] [usuário@host]

Onde:

usuário
Nome do usuário que deseja obter detalhes do sistema. Se não for digitado o nome de usuário, o sistema mostra detalhes de todos os usuários conectados no momento.

usuário@host
Nome do usuário e endereço do computador que deseja obter detalhes.

-l
Mostra os detalhes de todos os usuários conectados no momento. Entre os detalhes, estão incluídos o nome do interpretador de comandos (shell) do usuário, diretório home, nome do usuário, endereço, etc. Estes dados são lidos de /etc/passwd.

-p
Não exibe o conteúdo dos arquivos .plan e .project

Se for usado sem parâmetros, mostra os dados de todos os usuários conectados atualmente ao seu sistema.

Exemplo: finger, finger root

.

FTP

.

Permite a transferência de arquivos do computador remoto/local e vice versa. O file transfer protocol é o sistema de transmissão de arquivos mais usado na Internet. É requerida a autenticação do usuário para que seja permitida a conexão. Muitos servidores ftp disponibilizam acesso anônimo aos usuários, com acesso restrito.

Uma vez conectado a um servidor ftp, você pode usar a maioria dos comandos do GNU/Linux para operá-lo.

ftp [ip/dns]

Abaixo alguns dos comandos mais usados no FTP:

ls
Lista arquivos do diretório atual.

cd [diretório]
Entra em um diretório.

get [arquivo]
Copia um arquivo do servidor ftp para o computador local. O arquivo é gravado, por padrão, no diretório onde o programa ftp foi executado.

hash [on/off]
Por padrão esta opção está desligada. Quando ligada, faz com que o caracter "#" seja impresso na tela indicando o progresso do download.

mget [arquivos]
Semelhante ao get, mas pode copiar diversos arquivos e permite o uso de curingas.

send [arquivo]
Envia um arquivo para o diretório atual do servidor FTP (você precisa de uma conta com acesso a gravação para fazer isto).

prompt [on/off]
Ativa ou desativa a pergunta para a cópia de arquivo. Se estiver como off assume sim para qualquer pergunta.

Exemplo: ftp ftp.debian.org

.

WHO

.

Mostra quem está atualmente conectado no computador. Este comando lista os nomes de usuários que estão conectados em seu computador, o terminal e data da conexão.

who [opções]

onde:

opções
-H, --heading
Mostra o cabeçalho das colunas.

-b, --boot
Mostra o horário do último boot do sistema.

-d, --dead
Mostra processos mortos no sistema.

-i, -u, --idle
Mostra o tempo que o usuário está parado em Horas:Minutos.

-m, i am
Mostra o nome do computador e usuário associado ao nome. É equivalente a digitar who i am ou who am i.

-q, --count
Mostra o total de usuários conectados aos terminais.

-r, --runlevel
Mostra o nível de execução atual do sistema e desde quando ele está ativo.

-T, -w, --mesg
Mostra se o usuário pode receber mensagens via talk (conversação).

+ O usuário recebe mensagens via talk

- O usuário não recebe mensagens via talk.

? Não foi possível determinar o dispositivo de terminal onde o usuário está conectado

.

NETSTAT

.

Mostra conexões de rede, tabela de roteamento, estatísticas de interfaces, conexões masquerade, e mensagens.

netstat [opções]

Onde:

opções
-i [interface]
Mostra estatísticas da interface [interface].

-M, --masquerade
Se especificado, também lista conexões masquerade.

-n, --numeric
Usa endereços numéricos ao invés de tentar resolver nomes de hosts, usuários e portas.

-c, --continuous
Mostra a listagem a cada segundo até que a CTRL+C seja pressionado.

-l
Lista sockets aguardando por conexão.

-t, --tcp
Lista conexões TCP.

-u, --udp
Lista conexões UDP.

Se não for especificada nenhuma opção, os detalhes das conexões atuais serão mostrados.

Exemplos: netstat -n, netstat -lt, netstat -M

.

TRACEROUTE

.

Mostra o caminho percorrido por um pacote para chegar ao seu destino. Este comando mostra na tela o caminho percorrido entre os Gateways da rede e o tempo gasto de retransmissão. Este comando é útil para encontrar computadores defeituosos na rede caso o pacote não esteja chegando ao seu destino.

traceroute [opções] [host/IP de destino]

Onde:

host/IP destino
É o endereço para onde o pacote será enviado (por exemplo, www.debian.org). Caso o tamanho do pacote não seja especificado, é enviado um pacote de 38 bytes.

opções
-l
Mostra o tempo de vida do pacote (ttl)

-m [num]
Ajusta a quantidade máximas de ttl dos pacotes. O padrão é 30.

-n
Mostra os endereços numericamente ao invés de usar resolução DNS.

-p [porta]
Ajusta a porta que será usada para o teste. A porta padrão é 33434.

-r
Pula as tabelas de roteamento e envia o pacote diretamente ao computador conectado a rede.

-s [end]
Usa o endereço IP/DNS [end] como endereço de origem para computadores com múltiplos endereços IPs ou nomes.

-v
Mostra mais detalhes sobre o resultado do traceroute.

-w [num]
Configura o tempo máximo que aguardará por uma resposta. O padrão é 3 segundos.

Exemplos: traceroute www.debian.org, traceroute www.guiafoca.org

.

REDIRECIONAMENTOS E PIPE

.

O funcionamento dos recursos de direcionamento de entrada e saída do sistema GNU/Linux.

>

Redireciona a saída padrão de um programa/comando/script para algum dispositivo ou arquivo ao invés do dispositivo de saída padrão (tela). Quando é usado com arquivos, este redirecionamento cria ou substitui o conteúdo do arquivo.

Por exemplo, você pode usar o comando ls para listar arquivos e usar ls >listagem para enviar a saída do comando para o arquivo listagem. Use o comando cat para visualizar o conteúdo do arquivo listagem.

O mesmo comando pode ser redirecionado para o segundo console /dev/tty2 usando: ls >/dev/tty2, o resultado do comando ls será mostrado no segundo console (pressione ALT e F2 para mudar para o segundo console e ALT e F1 para retornar ao primeiro). O mesmo resultado pode ser obtido com o comando ls 1>/dev/tty2, sendo que o número 1 indica que será capturada a saída padrão do comando.

Para redirecionar somente a saída de erros do comando ls, use a sintaxe: ls 2>/tmp/erros-do-ls

>>

Redireciona a saída padrão de um programa/comando/script para algum dispositivo ou adiciona as linhas ao final de arquivo ao invés do dispositivo de saída padrão (tela). A diferença entre este redirecionamento duplo e o simples, é se caso for usado com arquivos, adiciona a saída do comando ao final do arquivo existente ao invés de substituir seu conteúdo. .

Por exemplo, você pode acrescentar a saída do comando ls ao arquivo listagem do capítulo anterior usando ls / >>listagem. Use o comando cat para visualizar o conteúdo do arquivo listagem.

<

Direciona a entrada padrão de arquivo/dispositivo para um comando. Este comando faz o contrário do anterior, ele envia dados ao comando.

Você pode usar o comando cat <teste.txt para enviar o conteúdo do arquivo teste.txt ao comando cat que mostrará seu conteúdo (é claro que o mesmo resultado pode ser obtido com cat teste.txt mas este exemplo serviu para mostrar a funcionalidade do <).

<<

Este redirecionamento serve principalmente para marcar o fim de exibição de um bloco. Este é especialmente usado em conjunto com o comando cat, mas também tem outras aplicações. Por exemplo:

cat <"

A principal diferença entre o "|" e o ">", é que o Pipe envolve processamento entre comandos, ou seja, a saída de um comando é enviado a entrada do próximo e o ">" redireciona a saída de um comando para um arquivo/dispositivo.

Você pode notar pelo exemplo acima (ls -la | more) que ambos ls e more são comandos porque estão separados por um "|". Se um deles não existir ou estiver digitado incorretamente, será mostrada uma mensagem de erro.

Um resultado diferente seria obtido usando um ">" no lugar do "|"; A saída do comando ls -la > more seria gravada em um arquivo chamado more.

tee

Envia ao mesmo tempo o resultado do programa para a saída padrão (tela) e para um arquivo. Este comando deve ser usado com o pipe "|".

comando |tee [arquivo]

Exemplo: ls -la | tee listagem.txt, a saída do comando será mostrada normalmente na tela e ao mesmo tempo gravada no arquivo listagem.txt

.

GUIA DE COMANDOS LINUX

.

Sobre os comandos do Linux

.

comando [opções] [argumentos]

.

Descrição:

Os comandos do Linux são utilizados na linha de comandos (prompt) do sistema: as opções definem parâmetros do comando e usualmente começam com o caractere "-" seguido de uma ou mais letras; e os argumentos definem dados a serem usados no processamento do comando.

.

O responsável por interpretar e executar um comando é o shell do usuário.

.

Um comando pode ser implementado pelo próprio shell (builtin command) ou pode ser uma aplicação presente em um dos diretórios do sistema como, por exemplo, /bin, /sbin, /usr/bin, etc.

.

Atualmente, acho que existem mais de 3 mil comandos a disposição do usuário de GNU/Linux.

.

Exemplos:

Por exemplo, para listar os arquivos e os diretórios filhos do diretório atual, basta digitar:

.

ls

.

Já o comando:

.

ls -al :: Exibe informações (tamanho, dono, grupo, etc) sobre os arquivos e os diretórios (opção l) e inclui na listagem os arquivos escondidos (opção a).
Importante: os arquivos escondidos no Linux possuem nome que começam com um ponto (".")

.

As opções podem possuir um ou mais argumentos.

.

Além disso, é possível existir argumentos que não pertençam a uma opção. Observe, por exemplo, o comando abaixo.

awk -F: -farq.txt /etc/passwd

Neste caso, temos o comando awk com duas opções (F e f) e três argumentos (:, arq.txt e /etc/passwd), sendo que o último argumento não pertence a nenhuma opção (é usada pelo comando).

Para obter informações sobre algum comando do Linux, digite man seguido do nome do comando. Por exemplo, para obter uma explicação sobre o comando ls digite

man ls

É também possível obter a lista dos parâmetros disponíveis usando o parâmetro/comando help.

Entrada e saída padrão dos comandos do Linux:

.

Temos no Linux a entrada padrão a saída padrão e a saída de erro.

.

stdin (standard input) - entrada padrão para os comandos do Linux. Normalmente, a entrada padrão é o teclado, mas é possível usar o redirecionador de saída para alterar a saída padrão.

.

Por exemplo:

.

ls > teste

.

ou

.

ls 1> teste

.

Cria o arquivo teste com o conteúdo do diretório atual.

stderr (standard error) - saída padrão para os erros encontrados durante a execução de um comando do Linux. Normalmente, a saída padrão é a tela da sessão onde o comando foi digitado, mas é possível usar o redirecionador de saída 2> para alterar a saída padrão.

.

Suponha que o diretório /meu_dir não exista. Portanto, o comando:

.

ls /meu_dir 2> teste

.

Cria o arquivo teste com a mensagem de erro relacionada a execução do comando acima.

.

É possível digitar mais de um comando de uma vez. Se ";" for usado para separar os comandos, então o sistema executa todos os comandos, independentemente do resultado.

.

man ls > teste; ls -l teste

.

Se "&&" for usado entre os comandos, um comando só é executado quando os comandos anteriores não apresentam erro.

.

man ls > teste && ls -l teste

.

Observações:

.

Neste Guia de Referências foi adotada a seguinte norma na apresentação dos comandos:

.

Opções/argumentos não obrigatórios (os usuários podem ou não digitá-los) estão entre colchetes.

argumentos obrigatórios (devem ser fornecidos pelos usuários) não são delimitados por nenhum símbolo.

.

Por exemplo, o comando:

.

cat [-n] arquivo

.

Possui uma opção (-n) e um argumento (arquivo), sendo que apenas o segundo deve ser obrigatoriamente informado pelo usuário.

.

Por exemplo, suponha que você queira exibir o conteúdo do arquivo teste.txt, então você pode digitar:

cat -n teste.txt

.

ou

.

cat teste.txt

.

Onde o primeiro comando numera as linhas do arquivo e o segundo comando apenas exibe o arquivo.

.

Linux comandos de manipulação de diretório

.

mkdir
cria um diretório

exemplo: mkdir docs

.

rmdir
exclui um diretorio (se estiver vazio)

.

rm -rf
exclui um diretório e todo o seu conteúdo

.

cd
entra num diretório (exemplo: cd docs) ou retorna para HOME

.

cd ~
vai direto para o diretório home do usuário logado.

.

cd -
volta ao último diretório acessado

.

pwd
exibe o local do diretório atual

.

ls
listar o conteúdo do diretório

.

ls -alh
mostra o conteúdo detalhado do diretório

.

ls -ltr
mostra os arquivos no formado longo(l) em ordem inversa(r) de data (t)

.

du -msh
mostra o tamanho do diretório em Megabytes

.

whereis
mostra onde se encontra determinado arquivo (binários)

exemplo: whereis samba

.

which
mostra qual arquivo binário está sendo chamado pelo shell quando chamado via linha de comando

.

Para obter uma listagem de diretórios em sistemas GNU/Linux, ordenados do maior para o menor, use o comando:

du -Sk | sort -nr | more

.

ou

.

du -Sh | sort -nr | more

.

SABER O TAMANHO DE CADA DIRETÓRIO OU SUBDIRETÓRIO:

.

du -ach --max-depth=1 /var/

du -ach --max-depth=1 /var/| sort -nr

du -ach --max-depth=1 /var/| sort -nr | more

.

CRIAR DIRETÓRIOS DENTRO DE DIRETORIOS:

mkdir -p /teste/teste1/teste2/teste3

.

CRIAR UMA ÁRVORE COMPLETA DE DIRETÓRIOS:

mkdir -p docs/{img/{fotos,icons,wallpapers,svg},textos/{artigos,man},tmp}

.

A REGRA AQUI É A SEGUINTE:

.

para cada pasta que conterá subpastas use "nome/{}"
dentro das chaves coloque os nomes separados por vírgula não esquecendo de usar o parâmetro '-p' no começo do comando.

.

Linux comandos para manipulação de arquivos

.

cat
mostra o conteúdo de um arquivo binário ou texto

tac
semelhante ao cat mas inverte a ordem

tail
mostra as últimas 10 linhas de um arquivo (util para ler logs)

head
mostra as primeiras 10 linhas de um arquivo

less
mostra o conteúdo de um arquivo de texto com controle

vi
editor de ficheiros de texto

vim
versão melhorada do editor supracitado

rm
remoção de arquivos (também remove diretórios)

cp
copia diretórios

'cp -r'
copia recursivamente

mv
move ou renomeia arquivos e diretórios

chmod
altera as permissões de arquivos ou directórios

chown
altera o dono de arquivos ou diretórios

cmd>txt
cria um novo arquivo(txt) com o resultado do comando(cmd)

cmd>>txt
adiciona o resultado do comando(cmd) ao fim do arquivo(txt)

touch
touch um_titulo.txt
cria um arquivo um_titulo.txt vazio; também altera data e hora de modificação para agora

> arquivo.txt
mais rápido que o touch para criação de arquivos

split
divide um arquivo

recode recodifica um arquivo ex: recode iso-8859-15..utf8 file_to_change.txt

[mc] poderoso editor de texto

.

LINUX COMANDOS PARA ADMINISTRAR

.

man
mostra informações sobre um comando

adduser
adiciona usuários

addgroup
adiciona grupos

apropos
realiza pesquisa por palavra ou string

dmesg
exibe as mensagens da inicialização(log)

du
exibe estado de ocupação dos discos/partições

find comando de busca ex: find ~/ -cmin -3

userdel
remove usuários

chfn
altera informação relativa a um utilizador

who
informa quem está logado no sistema

whoami
informa com qual usuário você está logado

passwd
modifica senha (password) de usuários

umask
define padrões de criação de arquivos e diretórios

ps
mostra os processos correntes

ps -aux
mostra todos os processos correntes no sistema

kill
manda um sinal para um processo. Os sinais SIGTERM e SIGKILL encerram o processo

killall
manda um sinal para todos os processos

su
troca para o super-usuário root (é exigida a senha)

su user
troca para o usuário especificado em 'user' (é exigida a senha)

chown
altera a propriedade de arquivos e pastas (dono)

env
mostra variaveis do sistema

.

COMANDOS PARA ADMINISTRAÇÃO DE REDE

ifconfig
mostra as interfaces de redes ativas e as informações relacionadas a cada uma delas

.

route
mostra as informações referentes as rotas

.

mtr
mostra rota até determinado IP

.

nmap
lista as portas de sistemas remotos/locais atras de portas abertas e pode checar sistema operacional em execução no host remoto

.

netstat
exibe as portas e protocolos abertos no sistema

.

iptraf
analisador de trafego da rede com interface gráfica baseada em diálogos

.

tcpdump
sniffer muito popular. Sniffer é uma ferramenta que "ouve" os pacotes que estão passando pela rede

.

traceroute
traça uma rota do host local até o destino mostrando os roteadores intermediários

.

nslookup
consultas a serviços DNS

.

dig
consultas a serviços DNS

.

LINUX COMMAND LINE QUICK REFERENCE - LINUX COMANDOS GUIA DE REFERÊNCIA RÁPIDO

.

1

Linux Comandos de Informação do sistema

cat /etc/*-release # Mostra qual sistema Linux está usando - Show which version of GNU/Linux installed

uptime # Show how long the system has been running + load

hostname # Show system host name

hostname -I # Display the IP addresses of the host

last reboot # Show system reboot history

date # Show the current date and time - Mostra o dia e a hora atual

cal # Show this month's calendar - Mostra o mês do calendário que estamos

w # Display who is online - Mostra quem está online

whoami # Who you are logged in as - Mostra o nome que você está logado

.

2

Linux Comandos Hardware Information - Informação do Hardware

dmesg # Display messages in kernel ring buffer

cat /proc/cpuinfo # Display CPU information

cat /proc/meminfo # Display memory information

free -h # Display free and used memory ( -h for human readable, -m for MB, -g for GB.)

lspci -tv # Display PCI devices

lsusb -tv # Display USB devices

dmidecode # Display DMI/SMBIOS (hardware info) from the BIOS

hdparm -i /dev/sda # Show info about disk sda

hdparm -tT /dev/sda # Perform a read speed test on disk sda

badblocks -s /dev/sda # Test for unreadable blocks on disk sda

.

3

Linux Comandos Performance Monitoring and Statistics - Monitoramento estatistico de performance

top # Display and manage the top processes

htop # Interactive process viewer (top alternative)

mpstat 1 # Display processor related statistics

vmstat 1 # Display virtual memory statistics

iostat 1 # Display I/O statistics

tail 100 /var/log/messages # Display the last 100 syslog messages (Use /var/log/syslog for Debian based systems.)

tcpdump -i eth0 # Capture and display all packets on interface eth0

tcpdump -i eth0 'port 80' # Monitor all traffic on port 80 ( HTTP )

lsof # List all open files on the systemlsof

-u user # List files opened by user

free -h # Display free and used memory ( -h for human readable, -m for MB, -g for GB.)

watch df -h # Execute "df -h", showing periodic updates

.

4

Linux Comandos User Information and Management - Informações do usuário e gerenciamento

id # Display the user and group ids of your current user.

last # Display the last users who have logged onto the system.

who # Show who is logged into the system.

w # Show who is logged in and what they are doing.

groupadd test # Create a group named "test".

useradd -c "John Smith" -m john # Create an account named john, with a comment of "John Smith" and create the user's home directory.

userdel john # Delete the john account.

usermod -aG sales john # Add the john account to the sales group

.

5

Linux Comandos File and Directory Commands - Linux Comandos de arquivos e diretórios

ls -al # List all files in a long listing (detailed) format

pwd # Display the present working directory

mkdir directory # Create a directory

rm file # Remove (delete) file

rm -r directory # Remove the directory and its contents recursively

rm -f file # Force removal of file without prompting for confirmation

rm -rf directory # Forcefully remove directory recursively

cp file1 file2 # Copy file1 to file2

cp -r source_directory destination # Copy source_directory recursively to destination . If destination exists, copy source_directory into destination , otherwise create destination with the contents of source_directory .

mv file1 file2 # Rename or move file1 to file2 . If file2 is an existing directory, move file1 into directory file2

ln -s /path/to/file linkname # Create symbolic link to linkname

touch file # Create an empty file or update the access and modification times of file.

cat file # View the contents of file

less file # Browse through a text file

head file # Display the first 10 lines of file

tail file # Display the last 10 lines of file

tail -f file # Display the last 10 lines of file and "follow" the file as it grows.

.

6

Linux Comandos Process Management - Gerenciamento de processos

ps # Display your currently running processes

ps -ef # Display all the currently running processes on the system.

ps -ef | grep processname # Display process information for processname

top # Display and manage the top processes

htop # Interactive process viewer (top alternative)

kill pid # Kill process with process

HanSmi, [17.02.18 21:03]
ID of p id

killall processname # Kill all processes named

process_name_program & # Start program in the background

bg # Display stopped or background jobs

fg # Brings the most recent background job to foreground

fg n # Brings job n to the foreground

.

7

Linux Comandos File Permissions - Permissões de arquivo

U = User
G = Group
W = World
r = Read
w = write
x = execute
- = no access

.

8

Linux Comandos Networking - Gerenciamento de rede

ifconfig -a # Display all network interfaces and ip address

ifconfig eth0 # Display eth0 address and details

ethtool eth0 # Query or control network driver and hardware settings

ping host # Send ICMP echo request to hostwhois domain# Display whois information for domain

dig domain # Display DNS information for domain

dig -x IP_ADDRESS # Reverse lookup of IP_ADDRESS

host domain # Display DNS ip address for domain

hostname -i # Display the network address of the host name.

hostname -I # Display all local ip addresses

wget http://domain.com/file # Download http://domain.com/file

netstat -nutlp # Display listening tcp and udp ports and corresponding programs

.

9

Linux Comandos Archives (TAR Files) - Arquivos TAR

tar cf archive.tar directory # Create tar named archive.tar containing directory .

tar xf archive.tar # Extract the contents from archive.tar .

tar czf archive.tar.gz directory # Create a gzip compressed tar file name archive.tar.gz .

tar xzf archive.tar.gz # Extract a gzip compressed tar file.

tar cjf archive.tar.bz2 directory # Create a tar file with bzip2 compression

tar xjf archive.tar.bz2 # Extract a bzip2 compressed tar file.

.

10

Linux Comandos Instalação de pacotes

tar zxvf sourcecode.tar.gz
cd sourcecode
./configure
make
make install

.

11

Linux Comandos de busca

grep pattern file # Search for pattern in file

grep -r pattern directory # Search recursively for pattern in directory

locate name # Find files and directories by name

find /home/john -name 'prefix*' # Find files in /home/john that start with "prefix".

find /home -size +100M # Find files larger than 100MB in /home

.

12

Linux Comandos SSH Logins

ssh host # Connect to host as your local username.

ssh user@host # Connect to host as user

ssh -p port user@host # Connect to host using port

.

13

Linux Comandos Transferencia de arquivos - File Transfers

scp file.txt server:/tmp # Secure copy file.txt to the /tmp folder on server

scp server:/var/www/*.html /tmp # Copy *.html files from server to the local /tmp folder.

scp -r server:/var/www /tmp # Copy all files and directories recursively from server to the current system's /tmp folder.

rsync -a /home /backups/ # Synchronize /home to /backups/home

rsync -avz /home
server:/backups/ # Synchronize files/directories between the local and remote system with compression enabled

.

14

Linux Comandos de uso de disco - Disk Usage

df -h # Show free and used space on mounted filesystems

df -i # Show free and used inodes on mounted filesystems

fdisk -l # Display disks partitions sizes and types

du -ah # Display disk usage for all files and directories in human readable format

du -sh # Display total disk usage off the current directory

.

15

Linux Comandos navegação de diretórios

Directory Navigation

cd .. # To go up one level of the directory tree. (Change into the parent directory.)

cd # Go to the $HOME directory

cd /etc # Change to the /etc directory

.

# Linux Comandos File/Directory Basics - Básicos para Diretórios e arquivos

ls
List files

cp
Copy files

mv
Rename files

rm
Delete files

ln
Link files

cd
Change directory

pwd
Print current directory name

mkdir
Create directory

rmdir
Delete directory

.

Linux Comandos File Viewing - Visualização de arquivos

cat
View files

less
Page through files

head
View file beginning

tail
View file ending

nl
Number lines

od
View binary data

xxd
View binary data

gv
View Postscript/PDF files

xdvi
View TeX DVI files

.

Linux Comandos File Creation and Editing - Editar e criar arquivos

emacs
Text editor

vim
Text editor

umask
Set default file protections

soffice
Edit Word/Excel/ PowerPoint docs

abiword
Edit Word documents

gnumeric
Edit Excel documents

.

Linux Comandos File Properties - Propriedades de arquivos

stat
Display file attributes

wc
Count bytes/words/lines

du
Measure disk usage

file
Identify file types

touch
Change file timestamps

chown
Change file owner

chgrp
Change file group

chmod
Change file protections

chattr
Change advanced file attributes

lsattr
List advanced file attributes

.

Linux Comandos File Location - Localização de arquivos

find
Locate files

slocate
Locate files via index

which
Locate commands

whereis
Locate standard files

.

Linux Comandos File Text Manipulation - Manupulação de arquivos de texto

grep
Search text for matching lines

cut
Extract columns

paste
Append columns

tr
Translate characters

sort
Sort lines

uniq
Locate identical lines

tee
Copy stdin to a file and o stdout simultaneously

.

Linux Comandos File Compression - Compressão de arquivos

gzip
Compress files (GNU Zip)

compress
Compress files (Unix)

bzip2
Compress files (BZip2)

zip
Compress files (Windows Zip)

.

Linux Comandos File Comparison - Comparação de arquivos

diff
Compare files line by line

comm
Compare sorted files

cmp
Compare files byte
by byte

md5sum
Compute checksums

.

Linux Comandos Disks and Filesystems - Sistema de arquivos e discos

df
Show free disk space

mount
Make a disk accessible

fsck
Check a disk for errors

sync
Flush disk caches

.

Linux Comandos Backups and Remote Storage - Gerenciamento remoto e Backups

mt
Control a tape drive

dump
Back up a disk

restore
Restore a dump

tar
Read/write tape archives

cdrecord
Burn a CD

rsync
Mirror a set of files

.

Linux Comandos File/Directory Basics - Básicos para Diretórios e arquivos

ls
List files

cp
Copy files

mv
Rename files

rm
Delete files

ln
Link files

cd
Change directory

pwd
Print current directory
name

mkdir
Create directory

rmdir
Delete directory

.

SHELL SCRIPT LINUX BASH

.

COMANDOS MAIS USADOS DO BASH EM SHELL SCRIPT

.

Qual é o seu usuário?

.

Se você não tem certeza qual é o seu usuário, use o comando "whoami" sem aspas, para saber.

.

Como o prompt de usuário normal pode ser diferente para cada um, podemos em algum momento usar "prompt$" para indicar o prompt da linha de comando.

.

ESCOLHER O DIRETÓRIO ONDE COLOCAR O SCRIPT

Para que o script possa ser executado de qualquer parte do sistema, mova-o para um diretório que esteja no seu PATH. Para ver quais são estes diretórios, abra agora o terminal pelo menu do sistema e digite o comando:

echo $PATH

.

Se não tiver permissão de mover para um diretório do PATH, deixe-o dentro de seu diretório pessoal ($HOME). Digite no terminal: $HOME

.

CRIAR O ARQUIVO E COLOCAR NELE OS COMANDOS

Abra pelo menu do sistema o editor de texto gedit, pluma, leafpad, mousepad ou outro editor de textos de sua preferência para colocar todos os comandos dentro do arquivo.

.

COLOQUE A CHAMADA DO SHELL NA PRIMEIRA LINHA

A primeira linha do script deve ser:

#!/bin/bash

Para que ao ser executado, o sistema saiba que é o bash quem irá interpretar estes comandos.

.

TORNE O SCRIPT UM ARQUIVO EXECUTÁVEL

Use o seguinte comando para que seu script seja reconhecido pelo sistema como um comando executável:

chmod +x nome-do-teu-shellscript.sh

.

Para permitir que todos os usuários possam executar o script:

chmod a+x nome-do-teu-shellscript.sh

.

EXECUTE O SCRIPT

./nome-do-teu-shellscript.sh (Aqui "./" representa o diretório atual)

/home/seu-usuário/bin/nome-do-teu-shellscript.sh (Aqui informa onde está o script para que o bash execute em outra pasta)

.

BASH EXECUTANDO COMANDOS

.

Shell script é uma linguagem de script usada em vários sistemas operacionais, com diferentes dialetos, dependendo do interpretador de comandos utilizado.

Um exemplo de interpretador de comandos é o bash, usado na grande maioria das distribuições GNU/Linux.

A maior parte dos usuários classificam shell script como uma linguagem de fácil aprendizagem. O primeiro passo é, saber o que se deseja fazer, então ver qual o código que executa este comando em shell e aí criar, basta escrever o código em algum editor de texto e salvar. Veja só por exemplo, que de tempos em tempos você quer saber informações do sistema, instalar programas, remover programas, converter/alterar arquivos, fazer backups, adicionar informações, remover informações, etc.

.

AGORA ABRE O TERMINAL E DIGITA COMANDOS, POR EXEMPLO, DIGITE ESTES COMANDOS ABAIXO UM DE CADA VEZ:

echo

ls

echo ''

echo ""

echo "Olá!"

printf 'Bem vindo ao bash!' (Aperte a tecla enter e digite: ls)

echo '#!/bin/bash'

echo "#!/bin/bash"

echo ; echo "Olá!" ; echo

echo -e 'Bom\nDia\nMundo!'

echo -e "Bom\nDia\nMundo!"

echo "Hello world!"

echo "Hello "world"!"

echo "Hello \"world\"!"

printf "Hello world" (Aperte a tecla enter e digite: cd ~)

pwd

ls -t

sleep 7

echo ; echo 'Olá!' ; sleep 3 ; ls -t

free -h -t

free -th

sleep 4

date

cal

du -h

uptime

df -h

clear

free -tmlh

df -a -h

df -k -l

df -T -m

echo ; whoami ; echo

ls ; echo ; pwd ; echo

echo ; ls -at ; echo

du *

ls -lah

du -hcs

du -ach

du -Sh

du -Sk

clear

echo ; echo 'df: Relata o espaço de disco usado pelo sistema (Usado e Livre)' ; echo

ls -hat

echo ; echo "du: Relata o espaço utilizado no disco de tal arquivo ou diretório" ; echo

whereis bash

VALOR="Linux"

echo $VALOR

echo $VALOR $VALOR

VALOR='ls -t'

$VALOR

echo $VALOR

clear

VALOR='free -h -t'

$VALOR

echo $VALOR

echo VALOR

read VALOR (aperte a tecla enter, digite: "ls" sem aspas e aperte enter.)

$VALOR

read VALOR (aperte a tecla enter, digite: "uptime" sem aspas e aperte enter.)

$VALOR

echo ; $VALOR ; echo ; $VALOR ; echo

echo ; $VALOR ; sleep 4 ; echo ; $VALOR ; echo

clear

unset VALOR

echo ; $VALOR

$VALOR

echo -e '\nOlá!\nVamos\nSaber\nOs\nComandos\ndo\nShellscript Linux!'

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"

clear

echo 'Informação sobre dispositivos de bloco: $HOJE'

unset HOJE

echo $HOJE

echo $((2*3))

echo $((2*4-2/2+3))

VALOR=44

echo $((VALOR*1))

echo $((VALOR*2))

echo $((VALOR*3))

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=$(uname -a)

echo $VALOR

HOJE=$(arch)

echo $HOJE

clear

echo "Informação sobre o kernel: $VALOR" ; echo ; echo "Informação sobre a arquitetura do sistema: $HOJE"

echo 'Informação sobre o kernel: $VALOR' ; echo ; echo 'Informação sobre a arquitetura do sistema: $HOJE'

echo ; echo 'Informação sobre o kernel: $VALOR' ; echo ; echo 'Informação sobre a arquitetura do sistema: $HOJE' ; echo

unset VALOR

unset HOJE

echo "Informação sobre o kernel: $VALOR" ; echo ; echo "Informação sobre a arquitetura do sistema: $HOJE"

echo 'Informação sobre o kernel: $VALOR' ; echo ; echo 'Informação sobre a arquitetura do sistema: $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"

unset NUM

clear

exit

.

Muito bom que você digitou um comando de cada vez!!!

O 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 os 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.

.

ASPAS SIMPLES ' E ASPAS DUPLAS ":

Aspas duplas permitem interpretar caracteres especiais.

Aspas simples desabilitam esta interpretação.

.

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:

#!/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 COM 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', digite 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.

É 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

.

CARACTERÍSTICAS

.

OS SCRIPTS SHELL PODEM CONTER ESTRUTURAS DE PROGRAMAÇÃO TAIS COMO:

.

ESTRUTURAS DE DECISÃO (if)

Recurso utilizado para dar sequencia em fluxos de execução baseado decisões. Cuja sintaxe é:

- Condição Verificada é o teste que definirá se controle deve ser passado para dentro do bloco then, observe que esse teste é feito sobre a saída de um comando.
- 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.

.

Ex:

# !/bin/baxh
# 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

.

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

.

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

.

FUNÇÕES E ARGUMENTOS

Ex:

# !/bin/bash
# REALIZAR BACKUP DO DIR

echo -e " \033[1;33m Digite o caminho de origem.: \033[0m "
read DIR_ORIGEM

clear

echo -e " \033[1;34m Digite 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

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":

.

Execute 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"

unset HOJE

echo $HOJE

HOJE=$(ls)

echo "O conteúdo desta pasta tem: $HOJE"

unset HOJE

echo $HOJE

HOJE=$(free -hmt)

echo "Informando sobre a memória desta máquina: $HOJE"

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

.

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:

-lt Núm. é menor que (LessThan)

-d É um diretório

-gt Núm. é maior que (GreaterThan)

-f É um arquivo normal

-le Núm. é menor igual (LessEqual)

-r O arquivo tem permissão de leitura

-ge Núm. é maior igual (GreaterEqual)

-s O tamanho do arquivo é maior que zero

-eq Núm. é igual (EQual)

-w O arquivo tem permissão de escrita

-ne Núm. é diferente (NotEqual)

-nt O arquivo é mais recente (NewerThan)

= String é igual

-ot O arquivo é mais antigo (OlderThan)

!= String é diferente

-ef O arquivo é o mesmo (EqualFile)

-n String é não nula

-a E lógico (AND)

-z String é nula

-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

.

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.

.

Então daqui por diante, 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.

.

Ex:

if COMANDO
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

.

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:

.

Ex:

if [ "$VARIAVEL" -gt 10 ]
then
echo "é maior que 10"
else
echo "é menor que 10"
fi

# Fim do script

.

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.

.

Já 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

.

Ex:

E por fim, o for percorre uma lista de palavras, pegando uma por vez:

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

.

Até Breve

.

:)

.

Fonte: https://semanickz.wordpress.com/2018/02/22/comandos-mais-usados-em-shellscript-linux/

.

Crie seu próprio epub deste artigo usando o programa Sigil

.

Um COMPUTADOR Com um Sistema Operacional Que Pode-se Usar Para Fazer Tudo Mas Com o Máximo de Privacidade e Anonimato Possível

2017

 

Um-computador-que-pode-se-usar-para-fazer-tudo-mas-com-o-máximo-de-privacidade-e-anonimato-possível

.

 

UM COMPUTADOR COM UM SISTEMA OPERACIONAL QUE PODE-SE USAR PARA FAZER TUDO MAS COM O MÁXIMO DE PRIVACIDADE E ANONIMATO POSSÍVEL

.

Linux Kodachi3 The Secure OS

.

Sabia que existem sistemas operacionais Linux que você pode instalar no computador, fazer tudo que sempre faz e ainda ter grande privacidade e anonimato incomparável a qualquer outro sistema operacional gratuito atualmente?

.

Pois é tem. Existe mesmo de fato!

.

Tem o o favorito do Snowden o Tails e acabei de me lembrar que também tem o Linux Kodachi – um Debian focado em privacidade e anonimato.

.

Linux Kodachi é uma distribuição baseada em Debian que pode ser executada a partir de uma unidade de DVD ou USB. A distribuição filtra todo o tráfego de rede através de uma VPN e da rede Tor, obscurecendo a localização de rede do usuário. O sistema também tenta limpar os rastros, removendo vestígios de seu uso no computador.

.

Linux Kodachi é uma distribuição baseada em Debian que pode ser executada a partir de uma unidade de DVD ou USB.

.

A distribuição filtra todo o tráfego de rede através de uma VPN e da rede Tor, obscurecendo a localização de rede do usuário.

.

O sistema também tenta limpar os rastros, removendo vestígios de seu uso no computador.

.

Achei esta página de Download para obter o Kodaki.

 

https://www.digi77.com/linux-kodachi/

.

Claro que eu vou verificar se a imagem ISO está corrompida.

.

Para gravar a imagem baixada em um pendrive eu uso o programa etcher ou gnome-disks

.

Visita estes Links para ajudar a entender como gravar a ISO em um pendrive:

.

https://semanickz.wordpress.com/2017/07/27/linux-mint18-e-debian9-instalar-etcher-gravador-de-imagens-em-cartao-sd-e-pendrive-usb/

.

https://semanickz.wordpress.com/2017/07/18/linux-o-que-e-gnome-disks/

.

 

Você baixa ele pelo Github e Sourceforge versão para sistema de 64 bits e tem arquivo MD SHA-256 e SHA-512 para conferir a integridade da ISO baixada.

.

O Linux Kodachi foi lançado pela primeira vez em 2013 e segue forte até hoje.

.

Repetindo, o link para baixar acho que é:

.

https://www.digi77.com/linux-kodachi/

 

.

Até Breve

.

Mantenha-se conectado. Dicas, correções, sugestões são muito bem-vindas.

.

Dados para verificação de integridade , visite o site oficial. Abaixo é só um exemplo!

 

==================================================
Filename : kodachi-3.7-64.iso
MD5 : 73b43f761aeae87aafa1d4b544d78990
SHA1 : d72c108444a51becea736c9659c102dda98f50f3
CRC32 : 2342dec7
SHA-256 : 15668916e5d28108421c32626b164ae3a8d1f231f780728361e6cf4618a04bfd
SHA-512 : 30931b4e1c206fbab9226e6b195c6a4001d984cb309a571ebec5ec9cc2e9a60c04eece432fecdc4b1ac9f0e0c7fd239dfb10141e7f7a2d29fc96b676e6cac926
SHA-384 : 658cb29807560d9b45641520b887e4b71e20834c065a2a27673b698a9d4004967cb58d4bded1cbd7bcf7d7d496a9a481
Full Path : https://www.digi77.com/software/kodachi/kodachi-3.7-64.iso
Modified Time : 1/8/2017 3:07:15 AM
Created Time : 1/8/2017 3:07:48 AM
File Size : 2,169,288,704
File Version : 3.7
Product Version : 3.7
Identical :
Extension : iso
File Attributes : A
==================================================

.

 

🙂

.

Instalar o Y PPA Manager no Linux Mint 18

2017

.

Linux Mint 18 – Instalar o Y PPA Manager

.

O que é Y PPA Manager?

.

Y PPA Manager é uma ferramenta que permite gerenciar PPAs.

Com ele eu posso adicionar, remover ou limpar PPAs, procurar pacotes nos PPAs, bem como outros recursos.

.

Para quem sabe manejar seus PPAS via Fonte de Aplicativos do Linux Mint, eu não consegui ver muita utilidade neste programa, a não ser no caso de alguma chave de segurança estar defazada ou algum PPA estar desatualizado.

.

 

No caso de instalar diversos programas via PPA, para administrar tudo isso, Eu simplesmente desabilito todos os PPAs e de tempos em tempos, habilito todos eles e faço update dos programas que tenho instalados.

Vou testar instalar o Y PPA Manager

.

Y PPA Manager pode:

1
Listar os pacotes disponíveis em um PPA adicionado em seu sistema

2
Baixar pacotes de PPAs sem adicioná-los

3
Fazer backup/restauração de PPAs, juntamente com todas as chaves do PPA

4
Atualizar repositórios únicos usando uma ferramenta de linha de comando (por falar nisso, quando eu adiciono um PPA usando Y PPA Manager, ele é atualizado sem atualizar todas as fontes de software) chamada de “update-ppa” – Exemplo de uso: “sudo update-ppa ppa:webupd8team/java “

5
Ajuda a reativar PPAs para voltar a funcionar, quando eu fizer uma atualização para uma versão mais recente do Linux Mint

6
Remover PPAs duplicadas

7
Fornecer Unity quicklists ou opcionalmente, AppIndicator

.

Vou pesquisando…

.

Eu abro meu terminal pelo menu do meu sistema e pela minha conta e risco, instalo o programa com os comandos abaixo:

.
1
Adiciono o repositório:

sudo add-apt-repository ppa:webupd8team/y-ppa-manager -y

 

2
Atualizo o APT com o comando:

sudo apt update

 

3
Agora uso o comando abaixo para instalar o programa:

sudo apt install y-ppa-manager

.

Posso baixar o arquivo .deb e instalar com o instalador Gdebi visitando o link abaixo:

.

 

https://launchpad.net/~webupd8team/+archive/ubuntu/y-ppa-manager/+packages

 

.

Se eu quiser desinstalar o programa:

.

 

1 – Removo o repositório

sudo add-apt-repository -r ppa:webupd8team/y-ppa-manager

.

 

2 – Removo o programa

sudo apt-get remove y-ppa-manager

.

 

3 – Removo restos do programa

sudo apt-get autoremove

 

.

Com o dupeGuru eu posso encontrar e remover arquivos duplicados.

.

Eu abro meu terminal pelo menu do meu sistema e pela minha conta e risco, instalo o programa com os comandos abaixo:

.

sudo apt-add-repository ppa:hsoft/ppa -y

.

sudo apt update

.

sudo apt install dupeguru-se

.

 

Para eu desinstalar:

.

sudo apt-add-repository -r ppa:hsoft/ppa

.

sudo apt-get remove dupeguru-se

.

sudo apt-get autoremove

.

 

Até Breve

.

😀

.

 

Dicas e sugestões são muito bem-vindas! Mantenha-se conectado. Doe da maneira que puder.

.

Meu Linux Mint 18 Não Reinicializa! Como arrumar isto? Socorro!

Meu-Linux-Mint-nao-inicializa-como-consertar?

.

Meu Linux Mint 18 Não Reinicializa! Como arrumar isto? Socorro!

.

Se por exemplo, o meu Linux Mint 18 por um motivo qualquer não inicializa, isto é minha responsabilidade.

.

Ninguém virá salvar-me. Estou só. Mas tem ajuda em fóruns e sites por tooooda a internet. Então não estou tão só como antes imaginava.

.

Eu sou o admin do meu sistema. O problema pode ser o GRUB.

.

GRUB é a sigla para GRand Unifield Bootloader. Trata-se de um gerenciador de boot desenvolvido inicialmente por Erich Stefan Boleyn, disponibilizado como software GNU. Entre seus principais recursos está a capacidade de trabalhar com diversos sistemas operacionais, como o Linux, o Windows e as versões BSD, e seu conseqüentemente suporte a vários sistemas de arquivos, como o ext2, ext3, reiserfs, FAT, FFS, entre outros.

.

O que é Grub mesmo?

Grub é o gerenciador de boot. É um software capaz de iniciar o processo de carregamento de sistemas operacionais em um computador. Por diversas razões, é comum encontrar máquinas que possuem mais de um sistema operacional instalado. Nestes casos, os gerenciadores de boot têm papel importantíssimo, pois cabe a eles a tarefa de permitir ao usuário o carregamento de um ou outro sistema. Este artigo apresentará e abordará as principais características do GRUB, um gerenciador de boot cada vez mais usado, principalmente em instalações que envolvem o Linux.

.

Tem como recuperar o GRUB em 3 comandos.

.

No meu caso, o GRUB fica localizado na MBR, então para recuperá-lo de forma simples e fácil sigo as instruções a seguir:

.

Vou precisar de um CD-Live ou Pendrive de instalação, o que eu eusei para instalar o meu sistema Linux.

.

Depois de carregado o Live-CD, entro no meu terminal e digito os comandos a seguir:

 

1.
Verificando a partição referente ao seu GNU/LINUX:

sudo fdisk -l

 

(caso esteja utilizando outro SO que não o Ubuntu, faço o login como ROOT)

 

2.
Vou montar o meu sistema de arquivos na minha partição GNU/Linux no diretório /mnt.

 

sudo mount -t ext4 /dev/sda6 /mnt

 

Neste caso o meu sistema de arquivos é EXT4 e a minha partição Linux é a sda6, troque esses campos conforme a sua configuração.

 

3. Instalação do Grub:

sudo grub-install –root-directory=/mnt /dev/sda

 

Depois ponho a máquina pra funcionar.

.

Revisando…

 

Sistemas baseados em Ubu como o Linux Mint podem talvez, acho eu; ser arrumados assim:

.

Um sistema que não inicializa por causa de atualizações quebradas…

.

Vou precisar de um CD-Live ou Pendrive de instalação, o que eu eusei para instalar o meu sistema Linux.

.

Entro no sistema do cd/pendrive/Live escolhendo “Experimentar” o sistema.

.

Abro um terminal pelo menu do sistema e preciso saber qual é a partição raiz da minha instalação. Geralmente é “/dev/sda1”, mas pode ser diferente depende do que o usuário fez ao instalar.

.

Para descobrir qual é a partição root, executo o comando abaixo:

 

sudo fdisk -l

.

O comando acima, irá mostrar uma lista de discos rígidos e partições a partir do qual terei que descobrir qual é a partição root.

Para certificar-me de uma determinada partição é a partição raiz, posso montá-la, usando o gerenciador de arquivos e verificando se ela contém as pastas que eu normalmente encontro em uma partição de raiz, como “sys”, “proc” e “dev”

.

Tem que ter as pastinhas:

dev, proc e sys

.

No terminal eu monto a minha partição raiz com o comando abaixo [substituo PART-ROOT pelo nome da sua partição raiz identificada]

.

sudo mount PART-ROOT /mnt

.

Monto as partições /sys, /proc, /run e partições /dev, digitando o comando abaixo:

.

for i in /sys /proc /run /dev /dev/pts; do sudo mount –bind “$i” “/mnt$i”; done

.

Copio o arquivo resolv.conf. se eu receber uma mensagem de erro eu ignoro.

.

sudo cp /etc/resolv.conf /mnt/etc/

.

Inicio o chroot na partição raiz que foi montada com o comando abaixo:

.

sudo chroot /mnt

.

Atualizo o APT com o comando abaixo:

.

apt-get update

.

Atualizo o meu sistema com o comando abaixo:

.

apt-get upgrade

.

Por eu estar usando o comando chroot, a instalação do sistema está tipo em um gaiola, e irá afetar o sistema e não o meu Live CD que eu baixei e gravei com minhas pŕoprias mãos e máquinas. E o negócio aqui é arrumar o sistema. Então tá tudo nos conformes, acho eu.

.

Agora eu devo tentar reiniciar o sistema e não esquecer de retirar o Cd ou o pendrive.

.

Tem muita gente que acha isto tão complicado e chato que prefere reinstalar.

.

Tem sistema hoje em dia como o Solus Linux que reinstala, instala em no máximo 15 minutos…

.

Veja bem, esta é uma situação comum que todo usuário Linux deveria saber fazer. Quantos sabem?

.

Depois eu fico me perguntando por que o Linux não tem mais usuários se resolver problemas no Linux é tão “fácil” não é mesmo?

.

Baixar a ISO correta para sua máquina é “fácil”!

.

Gravar a ISO correta para sua máquina é “fácil”!

.

Particionar o HD da sua máquina para windows e Linux é “fácil”!

.

Instalar os Drivers que sua máquina precisa é “fácil”!

 

.

Aprender os comandos do Bash é “fácil”!

 

.

Aprender a usar e escrever em shellscrip é “fácil”!

 

.

Tuuuudo no Linux é fácil e de graça? Não,não, não, não!!!

.

Kkkkkkkk…

.

Até Breve

.

😀

.

Dicas e sugestões são muito bem-vindas! Mantenha-se conectado. Doe da maneira que puder.

Blog Semanickzaine

Linux-Mint-18-Instalando-alguns-icones-e-temas-2017

Linux-Mint-18-Instalando-alguns-icones-e-temas-2017.txt

.

Vou pesquisar..

.

Abro meu terminal e por minha conta e risco executo os comandos abaixo.

.

MINWAITA TEMA – VERSÃO COMPACTA DO GNOME DESKTOP

.

sudo add-apt-repository ppa:noobslab/themes

sudo apt-get update

sudo apt-get install minwaita-theme

sudo apt update

 

.

 

TEMA POP

.

sudo add-apt-repository ppa:noobslab/themes

sudo apt-get update

sudo apt-get install system76-pop-gtk-theme

.

sudo add-apt-repository ppa:noobslab/icons

.

sudo apt-get update

.

sudo apt-get install system76-pop-icon-theme

.

 

TEMA DARK AURORA

.

sudo add-apt-repository ppa:noobslab/themes

sudo apt-get update

sudo apt-get install dark-aurora

.

 

LINUX MINT 18 – INSTALAR O TERMINAL TERMINUS – 2017

.

 

Pelo que me informei, o terminus é um terminal moderno e customizável. Acho que ele é construído usando tecnologias web com base no eletron.

 

.

Por minha conta e risco, visito o site e depois abro meu terminal pelo menu do meu sistema e executo os comandos deste post.

.

https://github.com/Eugeny/terminus/releases

.

O arquivo “terminus_1.0.0-alpha.23_amd64.deb” tem 43.2MB

.

 

COMANDOS DE INSTALAÇÃO:

.

wget -c https://github.com/Eugeny/terminus/releases/download/v1.0.0-alpha.23/terminus_1.0.0-alpha.23_amd64.deb

 

sudo dpkg -i terminus_1.0.0-alpha.23_amd64.deb

 

sudo apt-get -f install

 

sudo apt update ; sudo apt upgrade ; sudo dpkg –configure -a ; sudo update-grub

 

.

 

LINUX MINT 18 – TEMA GTK MOBO

.

sudo add-apt-repository ppa:noobslab/themes

 

sudo apt-get update

 

sudo apt-get install mobo-v2-theme

.

Como instalar icones e temas no Linux?

.

Vou pesquisar…

.

Para todos os usuários do sistema poderem usar:

.

sudo mv /path/to/icon/theme/folder/ /usr/share/icons/ -r

.

Para apenas um usuário poder usar:

.

mv /path/to/icon/theme/folder/ ~/.icons -r

.

 

Linux Mint 18 – Instalar Conky Flair no Linux Mint 18 e Debian 9

.

 

sudo apt-get install conky-all lm-sensors

 

sudo sensors-detect

 

cd && wget -O flair-c.sh http://drive.noobslab.com/data/conky/flair/flair-conky.sh

 

cd && chmod +x flair-c.sh && ./flair-c.sh

 

.

PARA CASO DE EU QUEIRER DESINSTALAR CONKY FLAIR:

.

cd && wget -O uninstall-flair-c.sh

 

http://drive.noobslab.com/data/conky/flair/uninstall-flair-conky.sh

 

chmod +x uninstall-flair-c.sh && ./uninstall-flair-c.sh

 

.

Linux 2017 tá difícil compilar hoje em dia?

2017

.

 

Artigo: Linux 2017 tá difícil compilar hoje em dia?

.

LINUX PARA COMPILAR DA FONTE UM PACOTE TAR.ALGUMA-COISA? COMO É QUE EU FAÇO?

.

Vou pesquisar…

.

Parece que são seis (6) comandos.

 

.

1
tar zxf nome_do_pacote.tar.gz

 

Extraio o pacote. Uma pasta é criada. Esta pasta tem de ser movida para o diretório adequado. Pacotes tar.gz padrão podem ser instalados simplesmente usando ./configure && make && make install. É bom ler as instruções que geralmente vem na pasta descompactada.

 

2
cd nome_da_pasta_extraida

 

3
./configure

 

4
make

 

5
make test

 

6
make install

 

Parece que a cada ano eu falho mais e mais neste processo. Não funciona sempre. Para mim, funciona em raras exceções hoje neste ano de 2017.

.

EXERCÍCIOS

 

Debian – Linux Instale o Jogo FreeOrion

Visito o Link:

.

https://ufpr.dl.sourceforge.net/project/freeorion/FreeOrion/FreeOrion Version 0.4.3/freeorion-0.4.3_i386.deb

.

Baixo o pacote .deb e tento instalar com o Gdebi ou, com o comando:

.

sudo dpkg -i nome-do-software.deb

 

.

 

sudo dpkg -i nome-do-software.deb

 

.

 

Debian – Linux Instale o Jogo flobopuyo

Visito o Link:

.

http://www.fovea.cc/files/flobopuyo/flobopuyo-0.20.tgz

.

Baixo o pacote .tgz e tento instalar lendo o readme ou o install.

 

.

Debian – Linux Instale o Jogo Zero Ballistics

Visito o Link:

.

https://ufpr.dl.sourceforge.net/project/zeroballistics/release/linux/zb_20.tar.bz2

.

Baixo o pacote e tento instalar lendo o readme ou o install.

 

.
Debian – Linux Instale o Jogo freeorion

.

Visito o Link:

.

https://ufpr.dl.sourceforge.net/project/freeorion/FreeOrion/FreeOrion Version 0.4.3/freeorion-0.4.3_i386.deb

.

Baixo o pacote e tento instalar lendo o readme ou o install.

.

 

Tem outros jogos. Para saber mais eu visito:

 

.

http://www.linuxtotal.org/viewforum.php?f=95

.

http://www.linuxtotal.org/viewforum.php?f=7

.

 

Debian – Linux Instale o Jogo Terasology

.

Visito o Link:

.

https://sourceforge.net/projects/terasology.mirror/?source=recommended

.

Baixo o pacote e tento instalar lendo o readme ou o install.

.

E aí? Tá fácil, ou tá difícil?

.

Faça o teste.

.

Até Breve

 

.

Dicas e sugestões, são muito bem-vindas. Se achar algum erro neste post, por favor, nos avise.

.

Debian 9 – Quero saber a versão do programa que estou instalando, modos de buscar e instalar ele e instalar pacotes de programas que eu baixei

2017

Debian 9 – Quero saber a versão do programa que estou instalando, modos de buscar e instalar ele e instalar pacotes de programas que eu baixei

.

Para mim tudo no Linux atualmente é por minha própria conta e risco, apesar de toda a segurança que os sistemas linux oferecem gratuitamente ao usuário. Quer dizer que se eu tiver qualquer problema não tenho nada a reclamar. Problema meu.

.

Quem tem muito conhecimento na internet e usa este conhecimento de maneira positiva, para mim, é Hacker. O hacker é whitehat.

.

Quem tem muito conhecimento na internet e usa este conhecimento de maneira negativa, para mim, é Cracker. O cracker é blackhat

.

Tem pessoa que é os dois. É greenhat.

.

Eu penso que talvez a mídia televisiva, jornais e revistas; usam muitas vezes por engano a palavra hacker de maneira errada.

.

Eles deviam dizer cracker ou blackhat.

.

É preciso usar as palavras corretamente, pois, se não um dia destes; qualquer pessoa que tenha algum conhecimento avançado na internet será considerado crimonoso por empresas e pelos governos ou pior, criminoso em potencial. Uma sociedade inteira pode começar a pensar assim…

.

Aí a coisa fica feia, hein?

.

Tipo, prende a pessoa antes que ela tenha alguma idéia e cometa um cyber-crime, e creio que não é por aí.

.

DEBIAN 9 – QUERO SABER A VERSÃO DO PROGRAMA QUE ESTOU INSTALANDO E MAIS!

.

Para que eu quero saber isto?

.

Uma vez que eu sei a versão que tem no repositório do meu sistema Linux e a versão que tem no desenvolvedor do programa, eu posso decidir instalar a versão mais atual ou, ver se a versão do repositório da minha distro é o mais atual. Talvez os programas mais atuais sejam geralmente melhores.

.

Para eu buscar alguma coisa, tipo jogos. Eu quero buscar jogos e outras coisas. Digito:

.

apt search games

apt search game

apt search player

apt search music

apt search epub

apt search pictures

.

QUERO SABER A VERSÃO DO PROGRAMA QUE ESTOU INSTALANDO E MAIS…

.

“apt show” e “apt-cache”

.

Para saber a versão do programa que estou instalando:

.

apt show nome_programa

.

O apt show mostra todas as info sobro o programa que existe no repo oficial da distro.

.

Para mim, o melhor comando, o mais completo até ontem, é o “apt-cache show”.

.

apt-cache policy nome_programa

.

apt-cache show nome_programa

.

Testo com o reprodutor de video totem, por exemplo.

.

apt show totem

.

apt-cahe policy totem

.

apt-cahe show totem

.

Eu posso instalar usando apt:

.

sudo apt update ; sudo apt install -y nome_programa ; sudo apt install -f ; sudo apt update

.

sudo apt install nome_programa ; sudo apt install -f ; sudo apt update

.

Eu posso instalar usando apt-get:

.

sudo apt-get update ; sudo apt-get install -y nome_programa ; sudo apt-get install -f ; sudo apt-get update

.

sudo apt-get install nome_programa ; sudo apt-get install -f ; sudo apt-get update

.

Posso usar aptitude:

sudo aptitude update ; sudo aptitude install nome_programa ; sudo aptitude update

.

Eu posso usar comando para instalar programas usando sh -c e/ou bash -c

.

sudo sh -c ‘comando1 && comando2’

.

sudo bash -c ‘comando1 && comando2’

.

sudo sh -c ‘apt update && apt -y full-upgrade’

.

Exemplo de instalação de vários programas para Linux Mint do tipo deixa instalando e vai dormir, ou vai passear e deixa a máquina fazendo o serviço que deve ser feito sem problemas:

.

Exemplo básico:

.

sudo sh -c ‘apt install -y programa1 programa2 programa3 ; apt install -f ; apt update && apt -y full-upgrade ; dpkg –configure -a ; update-grub’

(são dois tracinhos antes de configure -a)

.

Exemplo instalando alguns programas de verdade (VOU TESTAR):

sudo sh -c ‘apt install -y vlc smplayer firejail transmission armagetronad uget fortune cowsay figlet finger bd rythmbox virtualbox clementine gedit mousepad leafpad scratch vim geany ; apt install -f ; apt update && apt -y full-upgrade ; dpkg –configure -a ; update-grub’

 

(são dois tracinhos antes de configure -a)

.

Pelo que eu li, o esquema é o seguinte:

.

sudo – Confere superpoderes a tudo o que vem depois, nesta mesma linha de comando.

.

sh – Abre uma shell do interpretador de comandos Dash padrão do Linux/Unix.

.

-c – Executa os comandos, que seguem entre as aspas.

.

Com o comando apt, o exemplo abaixo roda a opção de atualização com os repositórios, antes de instalar um programa:

.

sudo –sh -c ‘apt update && apt install -y thermald’

(são dois tracinhos antes do sh)

.

Eu posso instalar pacotes com os comandos abaixo.

.

Se eu baixo um pacote .deb confiro a procedência dele. Geralmente o desenvolvedor oferece um md5sum para verificar a integridade do pacote. O programa Gdebi, confere tudo isto automaticamente, mas mesmo assim tem pacote que mesmo seguro ele não instala. Então posso abrir o terminal na pasta onde está o pacote .deb e usar o comando abaixo para instalar o pacote .deb

.

sudo dpkg -i nome-do-software.deb

.

Tem um outro jeito de instalar pacotes…

.

Usando .sh Tem que descomprimir o pacote entrar na pasta dele que foi criada quando descomprimi o pacote e usar os comandos abaixo:

.

 

chmod 775 software.sh

 

./software.sh

 

Acima a palavra software, acho, acho que é o nome do software que está na pasta. Dentro da pasta, quase sempre tem um script de instalação que geralmente leva o nome do programa que eu quero instalar.

.

user@pc:~$ apt-cache show totem
Package: totem
Version: 3.22.1-1
Installed-Size: 237
Maintainer: Debian GNOME Maintainers <pkg-gnome-maintainers@lists.alioth.debian.org>
Architecture: amd64
Depends: libc6 (>= 2.4), libcairo2 (>= 1.14.0), libgdk-pixbuf2.0-0 (>= 2.22.0), libglib2.0-0 (>= 2.37.3), libgstreamer-plugins-base1.0-0 (>= 1.0.0), libgstreamer1.0-0 (>= 1.4.0), libgtk-3-0 (>= 3.19.4), libnautilus-extension1a (>= 3.21.92-3~), libpango-1.0-0 (>= 1.14.0), libpangocairo-1.0-0 (>= 1.14.0), libtotem-plparser18 (>= 3.10.0), libtotem0 (>= 3.22.1-1), libtotem0 (<< 3.23), libx11-6, totem-common (= 3.22.1-1), gsettings-desktop-schemas, gstreamer1.0-clutter-3.0, gstreamer1.0-plugins-base (>= 1.6.0), gstreamer1.0-plugins-good, gstreamer1.0-plugins-bad, gstreamer1.0-x, grilo-plugins-0.3
Recommends: gstreamer1.0-libav, gstreamer1.0-plugins-ugly, gstreamer1.0-pulseaudio, totem-plugins
Suggests: gnome-codec-install
Description-pt_BR: Simples tocador de mídia para o GNOME baseado no GStreamer
O Totem é um reprodutor de mídia simples, porém cheio de recursos, para
o GNOME que pode ler um grande número de formatos de arquivo. Seus recursos:
.
* Suporte a playlist shoutcast, m3u, asx, SMIL e ra
* Toca DVD (com menus), VCD e Digital CD (with CDDB)
* Configuração para saída de TV com troca de resolução opcional
* 4.0, 5.0, 5.1 e saída de áudio estéreo
* Modo tela cheia (movimente o seu mouse e terá bons controles) com
Xinerama, dois monitores e suporte a RandR
* Alternancia de razão de aspecto, escalando com base no tamanho original
do vídeo
* Controle completo pelo teclado
* Lista de reprodução com modo de repetição e funcionalidades para salvar
* Integração com GNOME, Nautilus e GIO
* Captura de tela do vídeo atual
* Controle de Brilho e Contraste
* Complemento de visualização quando toca arquivos somente-áudio
* Miniatura do vídeo para o nautilus
* Página de propriedades do Nautilus
* Funciona com telas remotas
* Legendas DVD, VCD e OGG/OGM com seleção automática de idioma
* Extensível com complementos
Description-md5: 3773374b409bb5710c492c328fe37f78
Homepage: https://wiki.gnome.org/Apps/Videos
Tag: implemented-in::c, interface::graphical, interface::x11, role::program,
scope::application, sound::player, suite::gnome, uitoolkit::gtk,
use::playing, works-with-format::mp3, works-with-format::oggtheora,
works-with-format::oggvorbis, works-with-format::wav,
works-with::audio, works-with::video, x11::application
Section: video
Priority: optional
Filename: pool/main/t/totem/totem_3.22.1-1_amd64.deb
Size: 101234
MD5sum: c3de070c18c8fc1c44256b99a6cb2161
SHA256: 712c25bcc12636356ad2fdbdddbb499571c44cd77176d48a2ea616f63241fc61

 

.

 

Até Breve

.

Mantenha-se conectado. Dicas e sugestões são muito bem-vindas. Doe da maneira que puder.

 

😀

.

RESUMO de Debian 9 – Quero saber a versão do programa que estou instalando, modos de buscar e instalar ele e instalar pacotes de programas que eu baixei

.

apt search nome_programa

apt show nome_programa

apt-cache policy nome_programa

apt-cache show nome_programa

sudo apt install nome_programa ; sudo apt install -f ; sudo apt update

sudo apt-get update ; sudo apt-get install -y nome_programa ; sudo apt-get install -f ; sudo apt-get update

sudo aptitude update ; sudo aptitude install nome_programa ; sudo aptitude update

sudo sh -c ‘comando1 && comando2’

sudo bash -c ‘comando1 && comando2’

sudo sh -c ‘apt update && apt -y full-upgrade’

sudo sh -c ‘apt install -y programa1 programa2 programa3 ; apt install -f ; apt update && apt -y full-upgrad

sudo – Confere superpoderes a tudo o que vem depois, nesta mesma linha de comando.

.

sh – Abre uma shell do interpretador de comandos Dash padrão do Linux/Unix.

.

-c – Executa os comandos, que seguem entre as aspas

.

sudo dpkg -i nome-do-software.deb

.

chmod 775 software.sh

 

./software.sh

.

2017-Debian9-Como-Instalar-Pacotes-Snap-no-Debian9?

.

Por minha conta e risco.

.

O que é snap?

É um formato de pacote (um modo de empacotar software) que permite que o desenvolvedor coloque todas as dependências que o programa precisa dentro do pacote (o Snap). Este pacote pode ser por enquanto; instalado por meio de uma Central de Aplicativos e pelo terminal (atualmente); uma vez instalados, pacotes Snap funcionam em Sandbox, o que permite uma maior estabilidade do sistema, facilita o dowgrade, caso seja necessário, e fecha as portas para bichinhos virtuais.

 

.

Visito o site:

 

https://snapcraft.io/docs/core/install

.

Install snapd on Debian

.

https://snapcraft.io/docs/core/install-debian

.

Para instalar no Debian 9;

$ sudo apt install snapd ; sudo apt install -f ; sudo apt update ; sudo apt full-upgrade ; sudo apt install -f ; sudo dpkg –configure -a ; sudo update-grub

.

Como usar snaps?

.

 

Instalo um Game no Debian 9:

 

$ sudo snap install explode-bricks

 

$ snap list

.

Procurar por snaps:

$ snap find game

$ snap find icon

$ snap find player

$ snap find media

$ snap find browser

.

 

Log in to a snap store

.

Criar uma conta no ubuntu one

.

https://login.ubuntu.com/+login

.

Depois logar pelo terminal:

.

$ sudo snap login me@myself.com

Password: *********

 

2-factor: ******

Welcome!

.

 

Comandos snap:

 

snap: command reference

help: Shows the help content
version: Prints the version

Store commands

find: Finds packages to install
login: Authenticates on snapd and the store
logout: Log out of the store
buy: Buys a snap

Manage snaps on a system

install: Installs a snap to the system
remove: Removes a snap from the system
list: List installed snaps
info: show detailed information about a snap
refresh: Refreshes a snap in the system
revert: Reverts the given snap to the previous state
disable: Disables a snap in the system
enable: Enables a snap in the system
alias: Enables the given aliases
unalias: Disables the given aliases

Manage interfaces connections

interfaces: Lists interfaces in the system
connect: Connects a plug to a slot
disconnect: Disconnects a plug from a slot

See system changes

changes: List system changes
watch: Watch a change in progress
abort: Abort a pending change
change: List a change’s tasks

Developer commands

try: Tests a snap in the system
run: Run the given snap command
download: Downloads the given snap
get: Prints configuration options
set: Changes configuration options
known: Shows known assertions of the provided type
ack: Adds an assertion to the system

find

Usage: snap find <query>

The find command queries the store for available packages.
Command options

–private: Search private snaps
–section=: Restrict the search to a given section

login

Usage: snap login <email>

The login command authenticates on snapd and the snap store and saves credentials into the ~/.snap/auth.json file. Further communication with snapd will then be made using those credentials.

Login only works for local users in the sudo, admin or wheel groups.

An account can be setup at https://login.ubuntu.com
logout

Usage: snap logout

This command logs the current user out of the store
buy

Usage: snap buy <snap>

The buy command buys a snap from the store.
Command options

–currency=: ISO 4217 code for currency

install

Usage: snap install <snap>

The install command installs the named snap in the system.
Command options

–channel=: Use this channel instead of stable
–edge: Install from the edge channel
–beta: Install from the beta channel
–candidate: Install from the candidate channel
–stable: Install from the stable channel
–devmode: Put snap in development mode and disable security confinement
–jailmode: Put snap in enforced confinement mode
–classic: Put snap in classic mode and disable security confinement
–revision=: Install the given revision of a snap, to which you must have developer access
–dangerous: Install the given snap file even if there are no pre-acknowledged signatures for it, meaning it was not verified and could be dangerous (–devmode implies this)

remove

Usage: snap remove <snap>

The remove command removes the named snap from the system.

By default all the snap revisions are removed, including their data and the common data directory. When a –revision option is passed only the specified revision is removed.
Command options

–revision=: Remove only the given revision

list

Usage: snap list <snap>

The list command displays a summary of snaps installed in the current system.
Command options

–all: Show all revisions

info

Usage: snap info <snap>

The info command shows detailed information about a snap, be it by name or by path.
Command options

–verbose: Include a verbose list of a snap’s notes (otherwise, summarise notes)

refresh

Usage: snap refresh <snap>

The refresh command refreshes (updates) the named snap.
Command options

–channel=: Use this channel instead of stable
–edge: Install from the edge channel
–beta: Install from the beta channel
–candidate: Install from the candidate channel
–stable: Install from the stable channel
–devmode: Put snap in development mode and disable security confinement
–jailmode: Put snap in enforced confinement mode
–classic: Put snap in classic mode and disable security confinement
–revision=: Refresh to the given revision
–list: Show available snaps for refresh
–ignore-validation: Ignore validation by other snaps blocking the refresh

revert

Usage: snap revert <snap>

The revert command reverts the given snap to its state before the latest refresh. This will reactivate the previous snap revision, and will use the original data that was associated with that revision, discarding any data changes that were done by the latest revision. As an exception, data which the snap explicitly chooses to share across revisions is not touched by the revert process.

[revert command options]

–devmode: Put snap in development mode and disable security confinement
–jailmode: Put snap in enforced confinement mode
–classic: Put snap in classic mode and disable security confinement
–revision=: Revert to the given revision

disable

Usage: snap disable <snap>

The disable command disables a snap. The binaries and services of the snap will no longer be available. But all the data is still available and the snap can easily be enabled again.
enable

Usage: snap enable <snap>

The enable command enables a snap that was previously disabled.
alias

Usage: snap alias <snap>

The alias command enables the given application aliases defined by the snap.

Once enabled the respective application commands can be invoked just using the aliases.
Command options

–reset=: Reset the aliases to their default state, enabled for automatic aliases, disabled otherwise

unalias

Usage: snap unalias <snap> <alias>

The unalias command disables explicitly the given application aliases defined by the snap.
interfaces

Usage: snap interfaces <snap>:<slot or plug>

The interfaces command lists interfaces available in the system.

By default all slots and plugs, used and offered by all snaps, are displayed.

$ snap interfaces <snap>:<slot or plug>

Lists only the specified slot or plug.

$ snap interfaces <snap>

Lists the slots offered and plugs used by the specified snap.

$ snap interfaces -i=<interface> <snap>

Filters the complete output so only plugs and/or slots matching the provided details are listed.
Command options

-i=: Constrain listing to specific interfaces

connect

Usage: snap connect <snap>:<plug> <snap>:<slot>

The connect command connects a plug to a slot. It may be called in the following ways:

$ snap connect <snap>:<plug> <snap>:<slot>

Connects the provided plug to the given slot.

$ snap connect <snap>:<plug> <snap>

Connects the specific plug to the only slot in the provided snap that matches the connected interface. If more than one potential slot exists, the command fails.

$ snap connect <snap>:<plug>

Connects the provided plug to the slot in the core snap with a name matching the plug name.
disconnect

Usage: snap disconnect <snap>:<plug> <snap>:<slot>

The disconnect command disconnects a plug from a slot. It may be called in the following ways:

$ snap disconnect <snap>:<plug> <snap>:<slot>

Disconnects the specific plug from the specific slot.

$ snap disconnect <snap>:<slot or plug>

Disconnects everything from the provided plug or slot. The snap name may be omitted for the core snap.
changes

Usage: snap changes <snap>

The changes command displays a summary of the recent system changes performed.
watch

Usage: snap watch <change-id>

The watch command waits for the given change-id to finish and shows progress (if available).
abort

Usage: snap abort <change-id>

The abort command attempts to abort a change that still has pending tasks.
change

Usage: snap change <id>

The change command displays a summary of tasks associated to an individual change.
try

Usage: snap try <snap-dir>

The try command installs an unpacked snap into the system for testing purposes. The unpacked snap content continues to be used even after installation, so non-metadata changes there go live instantly. Metadata changes such as those performed in snap.yaml will require reinstallation to go live.

If snap-dir argument is omitted, the try command will attempt to infer it if either snapcraft.yaml file and prime directory or meta/snap.yaml file can be found relative to current working directory.
Command options

–devmode: Put snap in development mode and disable security confinement
–jailmode: Put snap in enforced confinement mode
–classic: Put snap in classic mode and disable security confinement

run

Usage: snap run <snap>.<command>

Run the given snap command with the right confinement and environment
Command options

–shell: Run a shell instead of the command (useful for debugging)

download

Usage: snap download <snap>

The download command downloads the given snap and its supporting assertions to the current directory under .snap and .assert file extensions, respectively.
Command options

–channel=: Use this channel instead of stable
–edge: Install from the edge channel
–beta: Install from the beta channel
–candidate: Install from the candidate channel
–stable: Install from the stable channel
–revision=: Download the given revision of a snap, to which you must have developer access

get

Usage: snap get <snap> <key>

The get command prints configuration options for the provided snap.

$ snap get snap-name username
frank

If multiple option names are provided, a document is returned:

$ snap get snap-name username password
{
“username”: “frank”,
“password”: “…”
}

Nested values may be retrieved via a dotted path:

$ snap get snap-name author.name
frank

Command options

-t: Strict typing with nulls and quoted strings
-d: Always return document, even with single key

set

Usage: snap set <snap> <key=value>

The set command changes the provided configuration options as requested.

$ snap set snap-name username=frank password=$PASSWORD

All configuration changes are persisted at once, and only after the snap’s configuration hook returns successfully.

Nested values may be modified via a dotted path:

$ snap set author.name=frank

known

Usage: snap known <assertion type> <header=value>

The known command shows known assertions of the provided type. If header=value pairs are provided after the assertion type, the assertions shown must also have the specified headers matching the provided values.
Command options

–remote

ack

Usage: snap ack <assertion file>

The ack command tries to add an assertion to the system assertion database.

The assertion may also be a newer revision of a preexisting assertion that it will replace.

To succeed the assertion must be valid, its signature verified with a known public key and the assertion consistent with and its prerequisite in the database.

.

Fonte:

https://snapcraft.io/docs/reference/snap-command

.

Linux-2017-Como-usar-o-wget-e-baixar-o-Opensuse-Tumbleweed

.

Existem muitas outras coisas legais pra se fazer com o wget, devo ter paciência, coisa que sou pobre em ter e ler os “man”s do Linux.
.

Quase sempre, em função de sua flexibilidade e agilidade o wget é a melhor opção para fazer download de arquivos.
.

Esta ferramenta, é um dos melhores aliados do usuário Linux, por tornar simples várias situações complexas.
.

Com o wget dá para baixar arquivos grandes, baixar vários arquivos recursivamente, baixar arquivos sem minha interação, baixar uma grande quantidade de arquivos etc.
.

Dá para usar o wget para baixar a ISO de uma distribuição Linux?

.

Para me informar sobre o OpenSuse Tumbleweed visito:
.

https://distrowatch.com/table.php?distribution=opensuse

.

http://download.opensuse.org/

.

http://download.opensuse.org/tumbleweed/iso/

.

Digamos que eu estava baixando alguma coisa via linha de comando com:

 

wget http://www.origem.dominio/arquivo

 

.
E se porventura o download parar, é possível eu continuar com:

 

wget -c http://www.origem.dominio/arquivo

 

.
Então para baixar o OpenSuse Tumbleweed eu tento os comandos:

 

cd

ls -t

cd Downloads/

ls

mkdir tumbleweed-download-iso

ls -t

cd tumbleweed-download-iso/

wget -c http://download.opensuse.org/tumbleweed/iso/openSUSE-Tumbleweed-DVD-x86_64-Current.iso

 

.
Baixo o sha256 da ISO

wget -c http://download.opensuse.org/tumbleweed/iso/openSUSE-Tumbleweed-DVD-x86_64-Current.iso.sha256

.

Eu vejo que enquanto baixa o arquivo, o wget exibe algumas informações:

 

1
o percentual de download já completado;

2
a quantidade de bytes baixados;

3
a velocidade de download atual;

4
o tempo restante para completar a tarefa.

 

.
MAIS INFORMAÇÃO SOBRE O WGET:

.
Usando o wget

 

.
É possível baixar sites inteiros com o wget:

 

wget -r http://www.o-siteque-eu-quero-baixar.dominio

 

.
Dizem que vale lembrar que isso vai baixar apenas os arquivos linkados nas páginas do site. Se tiver arquivos sem referência alguma eles não são passíveis de visualização.

.
Repetindo…

Se eu estava baixando alguma coisa via linha de comando com um

# wget http://www.origem.dominio/arquivo

 

.
Se de repente, o download parou, é possível continuar com:

# wget -c http://www.origem.dominio/arquivo

 

.
É possível também criar uma lista de links em um arquivo e pedir pro wget usá-la como arquivo de entrada:

 

wget -f file

 

Para forçar o arquivo de entrada a ser tratado como um arquivo HTML, use o -F:

 

wget -fF file

 

.
Asim, eu poderia criar uma lista de sites interessantes e baixá-los todos de uma vez, ou criar uma lista de arquivos a serem baixados (seqüencialmente) e fazer o mesmo com eles.

.
O wget costuma enviar muita saída de texto, quem o usa em scripts normalmente não deseja este inconveniente. Logo, o melhor seria usar o wget desta maneira:

 

wget -nv [outras opções] [links]

 

.
Assim, o wget só envia para tela mensagens onde ele avisa que um dado arquivo foi baixado com sucesso.

 

Para colocar o wget no segundo plano, sem o “&”, tento fazer o seguinte:

 

wget -b

.

Dá para baixar um arquivo com wget e salvar com nome diferente ou em diretório diferente. Eu faço o teste abaixo:
,

 

wget -c http://download.opensuse.org/tumbleweed/iso/openSUSE-Tumbleweed-DVD-x86_64-Current.iso.sha256 -O verifico-integridade-da-iso-tumbleweed.txt

.

Funciona direitinho.

.

O mesmo pode ser feito se eu quiser gravar em um diretório diferente do atual:
.

 

wget -c http://download.opensuse.org/tumbleweed/iso/openSUSE-Tumbleweed-DVD-x86_64-Current.iso.sha256 -O ~/Downloads/verifico-integridade-da-iso-tumbleweed.txt

.

 

Também funciona direitinho.

.

Dá para limitar a velocidade de download do wget e salvar com nome diferente ou em diretório diferente. Eu faço o teste abaixo:

.

wget –limit-rate=150k http://download.opensuse.org/tumbleweed/iso/openSUSE-Tumbleweed-DVD-x86_64-Current.iso.sha256

.

wget –limit-rate=150k http://download.opensuse.org/tumbleweed/iso/openSUSE-Tumbleweed-DVD-x86_64-Current.iso.sha256 -O integridade-iso

.

wget –limit-rate=150k http://download.opensuse.org/tumbleweed/iso/openSUSE-Tumbleweed-DVD-x86_64-Current.iso.sha256 -O integridade-iso ~/Downloads/integridade-iso

.

Para fazer o Download em background

.

wget -b http://download.opensuse.org/tumbleweed/iso/openSUSE-Tumbleweed-DVD-x86_64-Current.iso.sha256 -O integridade-iso

.

wget -b http://download.opensuse.org/tumbleweed/iso/openSUSE-Tumbleweed-DVD-x86_64-Current.iso.sha256 -O integridade-iso ~/Downloads/integridade-iso

.

 

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

.

killall wget

 

.

Faça o teste, eu fiz hoje e funcionou. Amanhã é outro dia.

.

 

Dá para disfarçar de navegador com –user-agent.

.

wget –user-agent=”Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.3) Gecko/2008092416 Firefox/3.0.3″ http://download.opensuse.org/tumbleweed/iso/openSUSE-Tumbleweed-DVD-x86_64-Current.iso.sha256

.

wget -c –user-agent=”Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.3) Gecko/2008092416 Firefox/3.0.3″ http://download.opensuse.org/tumbleweed/iso/openSUSE-Tumbleweed-DVD-x86_64-Current.iso

.

Disfarce de navegador com –user-agent

.
Alguns sites desabilitam seus downloads quando detectam que não estão sendo feitos por um navegador. Veja como 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″

.
Como baixar um site completo via wget

.

Segue o comando para fazer download de um site completo, usando o parâmetro

.

–mirror

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

.

em que:

.

–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

.

Como fazer o wget rejeitar certos tipos de arquivos

.

Em alguns casos, não quero baixar as imagens ou os arquivos de vídeo .flv… para estes casos, uso a opção –reject. Veja como (repetindo o exemplo anterior):

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

.
Como fazer download de apenas certos tipos de arquivos

.
Temos uma situação contrária à anterior. Ainda usando o mesmo exemplo, vamos restringir os downloads aos arquivos PDF:

.
wget -r -A.pdf –mirror -p –convert-links -P ./LOCAL http://www.site.com.br
Como continuar um download interrompido

.

Para reiniciar um download no ponto em que ele parou, use a opção -c:
wget -c http://cdimage.ubuntu.com/daily-live/current/trusty-desktop-amd64.iso

.

Se você não usar esta opção, o wget vai entender que deve criar um novo arquivo – e vai acrescentar “.1” ao final do nome do novo arquivo, para te ajudar a diferenciar os dois.
Faça download em background

.

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

.
wget -b http://cdimage.ubuntu.com/daily-live/current/trusty-desktop-amd64.iso

.
Continuando em plano de fundo, pid 28553.

.
A saída será escrita em “wget-log”.

.
Solaris-8:~$

.

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
16950K ………. ………. ………. ………. ………. 1% 458K 45m5s
17000K ………. ………. ………. ………. ………. 1% 549K 45m1s
17050K ………. ………. ………. ………. ………. 1% 480K 44m59s
17100K ………. ………. ………. ………. ………. 1% 442K 44m57s
17150K ………. ………. ………. ………. ………. 1% 542K 44m53s
17200K ………. ………. ………. ………. ………. 1% 490K 44m51s
17250K ………. ………. ………. ………. ………. 1% 505K 44m48s

.

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

.

Fonte:

.

https://gist.github.com/paiva33/010cba0095730e474fae

.

Para fazer uploads tem o comando wput. Confira sobre ele visitando o link abaixo:

.

https://elias.praciano.com/2014/04/o-comando-wput-em-5-exemplos/

.

 

Até Breve

 

.

Não é a mesma coisa Instalar icones no Debian 9 e no Linux Mint 2017, Por Quê?

2017
.

.

POR QUE A GENTE INSTALA ÍCONES NO LINUX MINT DE UM JEITO E NO DEBIAN DE OUTRO?

.

No Debian, eu tenho que escrever o endereço de internet do repositório em /etc/apt/sources.list.d e depois disto, eu tenho que adicionar as chaves do repositório para que o Debian aceite instalar icones. Existe mais de uma maneira de fazer isto.

Veja esta por exemplo, muito utilizada aqui no Brasil:

.

Debian9-Instalar-icones-Square-2017

.
Este comando abaixo, que acho que é praticamente um script; escreve o repositório no arquivo /etc/apt/sources.list.d

.

sudo sh -c ‘echo “deb http://ppa.launchpad.net/noobslab/icons2/ubuntu precise main” >> /etc/apt/sources.list.d/noobslab-icons2.list’

.
Este outro comando abaixo, adiciona as chaves do repositório a Debian, geralmente, após a instalação o Debian refuga esta chave e este repositório. Adicionar repositórios que não são do Debian pode ser algo arriscado, dizem que você em praticamente dá o controle do seu sistema a o dono do repositório. Mas se o Debian aceita, acho que não tem muito motivo para me preocupar.
.

sudo apt-key adv –keyserver keyserver.ubuntu.com –recv-keys F59EAE4D

.
Este comando abaixo, informa ao sistema que tem coisa nova na área.

.

sudo apt-get update

.
E por último, mas não menos importante, o comando abaixo; instala os ícones.

,

sudo apt-get install square-icons

.
PODERIAM ESCREVER UM SCRIPT QUE FIZESSE ISTO TUDO DE UMA VEZ SÓ? SIM ISTO PODE SER FEITO.

.

PODERIAM ESCREVER UM SCRITP QUE INSTALASSE TODOS OS MELHORES PROGRAMAS, ÍCONES E TEMAS? SIM! TEM GENTE QUE ESCREVE SCRIPTS PARA FAZER ISTO E USA OS SCRIPTS E ELES FUNCIONAM MUITO BEM. MAS O QUE É BOM PARA UMA PESSOA É O QUE OUTRA NECESSITA?

.

SE UM ESCREVE UM SCRIPT COM TUDO QUE PRECISO E PUBLICA, QUEM VAI VISITAR BLOG/SITE LINUX? ISTO PREJUDICARIA OS ACESSOS? NÃO SEI. NÃO ME IMPORTO MUITO COM ACESSOS. ESTE É APENAS UM DIÁRIO DE ANOTAÇÕES ABERTO AO PÚBLICO.
.

COMO INSTALA ÍCONES NO LINUX MINT QUE NÃO ESTÃO NOS REPOSITÓRIOS DO LINUX MINT?

.

NO LINUX MINT, É DIFERENTE.
.

Linux Mint 2017, Instalar Ícones Square

.
O Linux Mint 2017 foi feito para aceitar repositórios ppa:

.
Este comando abaixo adiciona o repositório :ppa onde está o ícone que desejo baixar.

sudo add-apt-repository ppa:noobslab/icons2

.
Este comando abaixo, informa ao sistema que tem coisa nova na área.

sudo apt-get update

.
E por último, mas não menos importante, o comando abaixo; instala os ícones.

sudo apt-get install square-icons

.

Até Breve

 

.

Debian9-Adicionando-mais-um-usuário

2017-Debian9-Adicionando-mais-um-usuário

.

Eu estava aqui pensando…

.

Eu sou o administrador do meu Debian 9. Eu sou o Admin do meu sistema. E também sou o root. Cada um tem uma senha diferente. O root tem uma senha e o usuário admin tem outra. Mas e se eu quiser criar mais um usuário como fica? Seriam por exemplo 3 usuários.

.

1
Um é Root

.
2
Outro é um usuário com poder de sudo.

.
3
Novo usuário, como criar?

.

Eu sou o Root e também sou um usuário admin com poder de sudo.

.

O Debian 9 já vem com sudo. Dizem que antes (2012) tinha que instalar o sudo com:

.

sudo apt-get install sudo -y ; sudo apt-get update

.

Mas e se eu quiser adicionar mais um usuário? Ah sei lá… Chegou alguém que quer usar o computador e não quero este alguém nas minhas coisas… algo assim…

.

Vou pesquisar.

.

Passa um mês…

.

Voltei!

.

No sistema não é possivel se ter dois usuarios root, o que pode existir é usuarios persistentes no grupo root do sistema.

.

Para eu criar mais um usuário eu faço assim:

.

sudo adduser nome-do-usuário

.

Aperto enter. E sigo as instruções do terminal.

.

sudo apt update

.

Eu não quero que este usuário tenha poder de sudo. Então já está tudo pronto.

.

Usuário Root só existe um, o próprio root.
.

Eu posso criar usuário com direito/permissão de root, o usuário administrador (Admin).

.

Se eu quiser adicionar este novo usuário, que não é admin no grupo root do sistema como sendo um usuário persistente, por minha conta e risco, faço assim:

.

sudo addgroup nome_do_usuario root

.

sudo apt update

.

Acho que é assim. Vou testar.

.

Ao adicionar o novo usuário, o terceiro usuário, ao grupo root no Debian 9, eu posso abrir o terminal e escrever:
.

su

.
Digitar a senha de root e administrar o sistema, mas o novo usuário não pode usar o sudo. Eu não adicionei este usuário ao grupo sudo. Acho isto muito bom e não pretendo alterar nada mais. Eu gosto deste jeito e para mim, está muito bem e muito bom. Por enquanto.

 

.

 

Até Breve

.

Mantenha-se conectado. Dicas, comentários e sugestões são muito bem-vindas. Se você achou algum erro neste post, por favor, nos avise.

.

🙂

 

 

.

Jogos-para-o-Terminal-do-Linux-Jogo-2

2017-Jogos-para-o-Terminal-do-Linux-Jogo2

.

Ninvaders – Debian 9

.

sudo apt install -y ninvaders ; sudo apt update

.

Para saber como jogar digito:

 

man ninvaders

.

NINVADERS(6) Games Manual NINVADERS(6)

NAME
ninvaders – ncurses version of space invaders

SYNOPSIS
ninvaders

DESCRIPTION
In short, this is a space invaders game written for the ncurses termi‐
nal control library. It uses ASCII art to draw everything, and you can
play it just about anywhere. Space Invaders over dialup!

To play the game, simply run the program. You will be placed in the
game arena with a large block of aliens. To move your gun pod (at the
bottom of the screen) use the left and right arrow keys. To shoot,
press space. You can move faster if you hold the arrow keys down.

E vou lendo…

.

 

Até Breve

.

 

Jogos-para-o-Terminal-do-Linux-Jogo-1

 

2017-Jogos-para-o-Terminal-do-Linux-Jogo1

.

MyMan

Para jogar no Debian 9 eu instalo assim:

.

sudo apt-get install libncurses5-dev groff

.

wget http://downloads.sourceforge.net/project/myman/myman-cvs/myman-cvs-2009-10-30/myman-wip-2009-10-30.tar.gz

.

OU…

.

Vou no site do desenvolvedor e baixo o arquivo.

https://sourceforge.net/projects/myman/

.

Abro o terminal onde baixei o arquivo.

.

ls -t

.

cd Downloads/

.

ls -t

.

Executo os comandos abaixo:

.

tar xvfvz myman-wip-2009-10-30.tar.gz

.

Vou para dentro da pasta descompactada.

.

ls -t

.

cd myman-wip-2009-10-30

.

Executo os comandos de instalação do jogo (compilação)

.

 

./configure

 

make

 

sudo make install

.

Para iniciar o jogo abro qualquer o terminal e digito:

man myman

.

GETTING STARTED
Start playing MyMan by typing myman (to play MyMan on a text termi‐
nal or terminal emulator), or xmyman (to play MyMan in full color
inside a new window under the X Window System.) Move MyMan using the
arrow keys. The alternate keys H, J, K, and L are available for vi (1)
users. The alternate keys Ctrl-B, Ctrl-N, Ctrl-P, and Ctrl-F are
available for emacs (1) users. Press the Q key at any time to quit.
If the flashing power pellets are too small, run myman with the -o com‐
mand-line parameter or press O or 0 during the game. If the maze walls
are invisible or garbled, run myman with the -a command-line parameter
or press A during the game.

.

Para mais info sobre o jogo digito de novo:

man myman

.

MYMAN(6) The MyMan Manual MYMAN(6)

NAME
myman, xmyman, xmyman2, xmyman3, xmyman4, xbigman, xhugeman, xbitman,
xbitman2, xbitman3, xbitman4, xbitman5, xbitman6, xquackman, myman.ct –
the MyMan video game

SYNOPSIS
myman [-v variant ] [-z size ] [-h] [-V] [-b|-q] [-c|-n] [-B|-N]
[-o|-p] [-d num ] [-D name[=value] … ] [-g num ] [-l num ] [-u|-U]
[-a|-A] [-i|-I] [-r|-R] [-e|-E] [-x|-X] [-1|-2] [-m file ] [-s file ]
[-t file ] [-M] [-S] [-T] [-f file ] [-F file ] [ — [toolkit-
options]… ]

NOTE: The optional toolkit-options are only accepted when myman
is built with PDCurses for X (a.k.a. XCurses)

.

O jogo foi instalado em:

.

/usr/local/share/myman-0.7.1/

.

O que está em Downloads eu posso guardar de backup ou simplesmente remover ou excluir.

.

Até Breve

.

Anotação2-LINUX-MINT-SERENA-GUIA-PÓS-INSTALAÇÃO-2017

linux-mint-wallpaper-4428-hd-wallpapers

 

 

2017-Abril

LINUX-MINT-SERENA-GUIA-PÓS-INSTALAÇÃO-2017


Reboot painel do Linux Mint 18.1 Serena
Fiz uma besteira e o meu painel ficou bagunçado. Abro o terminal e executo o seguinte comando abaixo:

 

gsettings reset-recursively org.cinnamon (ESTE É PARA CINNAMON)

gsettings reset-recursively org.mate.panel (ESTE É PARA MATE)
—————————————————-
—————————————————-
Linux Mint 18.1 Serena
ATALHOS DE TECLADO PARA O EMULADOR DE TERMINAL LINUX
—————————————————-
Atalho Função

Ctrl + a Move o cursor para o início da linha
—————————————————-
Ctrl + e Move o cursor para o final da linha
—————————————————-
Ctrl + l Limpa a tela, semelhante ao comando clear
—————————————————-
Ctrl + u Apaga do cursor ao início da linha.
—————————————————-
Ctrl + k Apaga do cursor ao final da linha.
—————————————————-
Ctrl + w Apaga uma palavra antes do cursor.
—————————————————-
Ctrl + _ Desfaz as últimas mudanças.
—————————————————-
!! Executa o último comando no histórico.
—————————————————-
!abc Executa o último comando no histórico começando com abc.
—————————————————-
!n Executa o comando de número n no histórico.
—————————————————-
^abc^xyz Substitui a primeira ocorrência de abc por xyz no último comando e executa o mesmo.
—————————————————-
—————————————————-
————————————————————
*Minhas-Anotacoes-Guia-Pós-Instalação-Linux-Mint-18.1-Serena-LTS-2017*
————————————————————

 

 

Primeiro de tudo eu vou pesquisar no site do Linux Mint. Abro o terminal onde esa a imagem ISO do Linux Mint. Posso usar:

 

sha1sum nome_completo_da_ISO
sha256sum nome_completo_da_ISO

 

Comparar as letras e números se conferem com as letras e números do site oficial Linux Mint.

 

Crio uma pasta chamada ISO na pasta Home
Movo a Imagem ISO baixada para esta pasta

 

Baixo 2 arquivos do site oficial Linux Mint são eles:
sha256sum.txt

sha256sum.txt.gpg

 

A pasta ISO fica com 3 arquivos a imagem ISO e os dois acima.
Com o mouse abro o terminal nesta pasta e dependendo do caso, digito os 3 comandos abaixo um de cada vez, o mais importante é o último:

cd
cd ISO
sha256sum -b *.iso

 

O último comando deve mostrar o SHA256 e compare com o encontrado no texto
sha256sum.txt

 

Pode também tentar o comando abaixo mas as instruções acima para mim é o suficiente (preguiça):

 

sha256sum –ignore-missing -c sha256sum.txt
Pronto! Se estiver tudo certo, dizem que posso usar a imagem ISO tranquilamente.

 


sudo apt-get install aptitude -y ; sudo apt-get update ; sudo aptitude update && sudo aptitude upgrade

 

 

 

Guia-Pós-Instalação-Linux-Mint-18.1-Serena-LTS-2017

 

 

Quero saber qual se é mesmo o Linux Mint serena que estou usando. Digito o comando [ lsb_release -a ] abaixo e recebo a resposta:
~ $ lsb_release -a
No LSB modules are available.
Distributor ID: LinuxMint
Description: Linux Mint 18.1 Serena
Release: 18.1
Codename: serena

~ $ df -h
Sist. Arq. Tam. Usado Disp. Uso% Montado em
udev 1,9G 0 1,9G 0% /dev
tmpfs 387M 6,3M 381M 2% /run
/dev/sda1 158G 33G 118G 22% /

 

 

O SÍMBOLO DA RAIZ DO SISTEMA TOTAL É UMA BARRA /

~$ cd /

 

Aperto enter e estou na raiz total do sistema e se eu mexer aí ou deletar ele, acabou-se tudo. Para confirmar digito pwd
~$ pwd
/

 

 

Guia-Pós-Instalação-Linux-Mint-18.1-Serena-LTS-2017
——————————————————-
*Aqui já de cara, executo um comando antes de começar a brincadeira. Eu quero instalar lm-sensors, finger, fortune, cowsay, speedtest-cli, w3m, w3m-img e links. Vou usar aptitude também. Copio e colo no terminal a sequência abaixo, digito a senha (não aparecerão números nem simbolos) e aperto enter*
——————————————————-

 

 

~$ sudo apt install lm-sensors && sudo apt install finger fortune cowsay && sudo apt install speedtest-cli w3m w3m-img links && sudo apt update

 

 

É BOM DE IMEDIATO, EU IR TOMANDO INTIMIDADE COM O TERMINAL POIS, ELE É MEU ALIDADO. É UM AMIGO QUE EXISTE PARA SIMPLIFICAR E FACILITAR A MINHA VIDA. NÃO É ALGO COMPLICADO OU ARRISCADO QUE APENAS USUÁRIOS AVANÇADOS PODEM USAR.

 
—————————————————-
Guia-Pós-Instalação-Linux-Mint-18.1-Serena-LTS-2017
—————————————————-
COMANDOS BÁSICOS W3M – PROGRAMA NAVEGADOR INTERNET QUE RODA NO TERMINAL
shift+h

w3m google.com

shift+b

shift+u
—————————————————-
Guia-Pós-Instalação-Linux-Mint-18.1-Serena-LTS-2017
—————————————————

 

SOU INICIANTE, ENTÃO QUERO APRENDER COMANDOS BÁSICOS DO TERMINAL DO LINUX QUE SE CHAMA BASH (BOURNE AGAIN SHELL).
—————————————————

 

No mundo do computador, tem SOFTWARE e HARDWARE.
Hardware é a parte SÓLIDA e software é VIRTUAL.
O Software controla o hardware. Em termos simplificados é isto.

Executar comandos no terminal com sucesso é um dos meus objetivos como iniciante.
—————————————————-
Guia-Pós-Instalação-Linux-Mint-18.1-Serena-LTS-2017
—————————————————-

 

O Kernel é o programa que está mais próximo do hardware.

 

O kernel é a ponte que permite os programas conversarem com o hardware.

 

O hardware responde aos aplicaticos por meio do Kernel.

 

Deve ser por isto, que estão sempre atualizando o Kernel.

 

Os Kernels mais antigos não respondem bem a novos hardwares e pode ser que certos programas não funcionem bem se usar um Kernel antigo.

 

Os aplicativos não conversam com o Hardware conversam com o Kernel ai sim, o Kernel sim conversa com o Hardware.

 

O Bash é um dos muitos interpretadores de comandos que existem e é o usado no Linux.

 

Tem outros como o CSH o DOS o POWERSHELL e outros.

 

O SHELL É O INTERPRETADOR DE COMANDOS DO TERMINAL.

 

O SHELL DO LINUX É O BASH.

 

TUDO NO LINUX É CONSIDERADO ARQUIVO.

 

OS COMANDOS PODEM USAR ARGUMENTOS.


 

 

Eu quero saber o que significa processos do sistema operacional Linux. O que é isto? Vou pesquisar. Pesquiso muito. As informações são confusas, navego em sites, blogs encaro um monte de sujeira e XXX pelo caminho caótico e sujinho em inglês, português, espanhol e uso um tradutor para sites eslavos. Affff!
Mas agora acho que sei o que são processos. 🙂

 

 

Vou escrever com minhas palavras. Afinal, estas são as minhas anotações e faço o que for preciso para que eu possa entender mais ou menos esta coisa complicadíssima.

 

 

Pograma e comando executados funcionando ou abertos, são processos em execução no sistema que ganham um número para poderem ser controlados. O sistema recebe informações e envia informações.

 

Os processos tem a ver com entrada e saída. Os processos, é programas ou comandos que estão funcionando no sistema operacional GNU/Linux. Quando o sistema carrega programas ou comando ele coloca eles em execução, então o sistema chama eles de processo e assim, o sistema cria um número para poder controlar eles e estes número é chamado de PID.

 

Toda vez que o interpretador de comando inicia executando comando ou programa, eles se tornam um processo em execução que precisa se comunicar com o mundo da gente. Os comandos do terminal processam e precisam responder o que processaram para mim.

 

Eles fazem isto usando o que eu chamo de pipes. Eu inicio um comando no terminal aí, o sistema conecta 3 pipes neste processo para receber dados e enviar dados do mundo interno para o mundo externo (eu) e o que passa pelo cano é o bit.

 

Os pipes recebem e enviam bits. Cada letra é um bit. Bits são informações computacionais. Posso mandar o sistema processar um texto e o meu texto é passado ao sistema por um pipe. Estes pipes, estes tubos, cada um é chamado hoje em dia por um nome que alguém inventou.

 

Tem uma saida padrão [stdout=standart-output], uma saída de erro [stderr=standart-error] entre eles está o processo e, ligado ao processo está ligada a entrada padrão [stdin=standart-input]. Todos os pipes tem um número de identificação.
O primeiro pipe que é conectado pelo sistema, é a entrada padrão, o número desta entrada é zero 0 e é o sistema que atribui zero a entrada padrão.

 

Pela entrada padrão o sistema recebe os dados que eu envio e o nome da entrada padrão é stdin. Quer dizer eu pergunto alguma coisa para o sistema esta pergunta é enviada pela entrada padrão stdin que o sistema identifica pelo número zero.

 

Depois que ele, o sistema ouve ou recebe, ele precisa responder pra eu. Para responder ele joga a resposta em bit pela saída padrão que eu chamo de pipe stdout e tem o número 1 definido pelo sistema.

 

O terceiro pipe serve só para informar erros que aconteceram durante a execução de algum comando ou programa que o sistema não conseguiu processar. No meio de um monte de bits que ele tá enviando, o sistema precisa informar se alguma vez aconteceu um determinado erro de alguma coisa.

 

A mensagem de erro não pode ir pelo pipe 0 nem pode ir pelo pipe 1 então a mensagem é enviada pela saida padrão 2, stderr [standart-error] a saída de erro padrão.

 

Tudo vai pro terminal.

 

O Bash direciona tudo isto para o emulador de terminal. É no terminal que eu vou obter respostas, perguntar, comandar, alterar tudo no sistema operacional. Posso ouvir música pelo terminal, ver filmes, ver fotos, calcular, navegar na internet, jogar games no terminal etc… O terminal faz de tudo. Mas nem tudo é simples de fazer.

 

Então eu posso perguntar e comandar o sistema. O sistema pode ouvir e processar minhas perguntas e comandos. O sistema pode responder algumas das minhas perguntas, nada pessoal (espero). O sistema pode alterar partes dele mesmo. Se eu assim mandar ele faz. Mesmo que seja uma coisa idiota que eu comande e destrua ele. Por isto, é bom eu pensar bem. Pois no final, quem se ferrará será eu. Kkkkkkkk.

 

Os pipes são file descriptors. Coisa cabeluda de complicada. Kkkkkk. Depois vou pesquisar sobre isto.

 

Os processos software em execução que ouvem, falam e informam pelas entradas e saídas, os erros são informados pela saida de erro.
A entrada padrão no Linux é recebida pelo sistema via o teclado. A entrada padrão no Linux é o teclado. A entrada padrão no Linux é o teclado. Pra não esquecer. Kkkkkkk.

 

A saida padrão vai imprimir na tela do terminal. A saida padrão vai imprimir na tela do terminal. A saida padrão vai imprimir na tela do terminal. Acho que não vou esquecer isto.

 

A saida de erro vai imprimir na tela do terminal também. A saida de erro vai imprimir na tela do terminal também. A saida de erro vai imprimir na tela do terminal também. Pra não esquecer.

 

A saída padrão e a saida de erro ficam misturadas na tela do terminal. A saída padrão e a saida de erro ficam misturadas na tela do terminal. A saída padrão e a saida de erro ficam misturadas na tela do terminal. Pra não esquecer. Kkkkkkk.

 

O Bash serve como encanador. Consegue conectar saídas padrões de comandos, com entradas padrões de comandos.

 

 

QUERO SABER COMO USAR O COMANDO APT, ENTÃO USO NO TERMINAL:

man apt, –help apt, info apt

 

Procuro o terminal no menu e abro ele. Vou fazendo anotações e executando o que anotei no terminal. Estou executando no terminal o que estou lendo agora.

 

 

DE ONDE VEM O TERMINAL?

No inicio dos computadores, só se podia fazer as coisas pelo terminal e ele era um monitor com tela preta, os programas eram feitos para funcionar no monitor terminal e você executava comandos e navegava pela rede e fazia alterações no sistema através deste monitor terminal. Hoje em dia não é mais assim.

 

Atualmente ainda precisamos de terminais mas os monitores podem fazer muitas coisas a mais e por isto, é possível atualmente usarmos o emulador de terminal.

 

O interpretador de comandos roda dentro do terminal e o Bash é o interpretador de comando do terminal no Linux.

 

O prompt significa que tá pronto. O prompt pode ser $ [usuário] ou # [super-usuário].

 

O legal do terminal, é que para conversar com o terminal do Linux, o sistema, programas do sistema, o Hardware tenho que pensar digitar e recebo resposta dependendo de usar corretamente a linguagem.

 

A linguagem é o Bash. Existem comandos internos e existem comandos que não são internos. Quem ajuda nesta hora é o sistema operacional.

 

O comando pwd é um comando interno por exemplo. Você digita pwd e recebe a resposta rapidinho. Tem comandos INTERNOS e comandos do SISTEMA OPERACIONAL.

 

O modo não interativo é dialogo programado e chama-se SHELL SCRIPTS.

 

O interpretador de comandos controla a execução dos comandos executados.
Pode-se pausar um processo que esteja acontecendo no terminal por exemplo.
Posso mexer nos processos que estão acontecendo no computador.

 

 

Pode-se executar dois processos ao mesmo tempo.

 

 

É necessário adquirir costume de usar o terminal para poder fazer diversas coisas simultaneamente, executar mais de um comando ao mesmo tempo e fazer eles se comunicarem.

 

 

O MAIS FORTE NO LINUX É O EMULADOR DE TERMINAL COM O INTERPRETADOR DE COMANDOS CHAMADO BASH.

 

O que é cat? É de CONCATENAR? O que é concatenar? Preciso de um dicionário urgente! 🙂

 

man cat [aperto enter]

 

 

Eu quero andar com minhas próprias pernas. Quero descobrir coisas sobre comandos. Uso ls –help pra listar todos os arquivos e diretórios e vai mostrar um monte de documentação e posso usar o ls com parametros.

 

 

Posso usar –help para aprender muitos comandos. ls, ls -t, man nome_do_comando, info nome_do_comando. O man é mais tradicional, o info é mais atual.
Tem 3 modos de eu aprender usando o terminal:

 

 

–help
man
info

 

 

Não achei informação sobre uns comandos usando estes 3, tenho que ir buscar no Google. Procurar a info na massa embolada de informação que tem lá com atenção e paciência.

 

Quero saber como ser administrador super usuário do sistema uso [su] ou [sudo su] digito a senha invisivel ao digitar, e obtenho o resultado:
~$ su
cp pc #

 

 

Depois quero saber quem eu sou. Será que sou administrador mesmo? Uso ‘whoami’.
cp# whoami
root

 

 

Para sair do modo super usuário administrador digito exit e tenho o resultado:
cp pc # exit

cp@pc ~$

 

Digito então su ou sudo su…

 

Aperto enter e digito a senha mas não aparece nada no terminal por proteção. Aperto enter. Saio do modo super usuário digitando exit.

 

 

Quero saber o quanto de memória tem no meu computador. Quero saber a quantidade de memória livre e usada no sistema. “free -m” digito “free”, “free -m”, “free -h” e recebo a resposta:

~$ free
total used free shared buff/cache available
Mem: 3955864 1796172 153272 141808 2006420 1743612
Swap: 4194300 0 4194300

~ $ free -m
total used free shared buff/cache available
Mem: 3863 1289 209 201 2364 2099
Swap: 4095 0 4095

~$ free -h
total used free shared buff/cache available
Mem: 3.8G 1.7G 145M 139M 1.9G 1.7G
Swap: 4.0G 0B 4.0G
—————————————————-

 
Quero saber onde estou no terminal, ou seja, em qual pastinha estou no momento. Então eu digito pwd e recebo a resposta:
$ pwd
/home/rfg/Área de Trabalho

 
Quero saber o que tem na pasta onde estou. Eu digito ls e recebo a resposta que não tenho nada na minha Área de Trabalho e posso adicionar mais parametros ao ls:
~$ ls
~$ ls -t
~ $ ls -l
~ $ ls -la
~ $ ls -lah

 
Quero ir para uma pasta que tenha alguma coisa, preciso saber um comando para isto. Pesquiso e acho rapido a resposta.
É o comando cd.

 
cd – Este comando permite me deslocar entre a árvore de diretórios do sistema. Quando abro um terminal ou seção shell, entro direto no meu diretório pessoal. Para mover-me pelo sistema de arquivos eu devo usar o cd. O comando cd é bom para copiar scripts e arquivos.

 
“cd /” para ir ao diretório raiz.
“cd” para ir ao seu diretório pessoal.
“cd ..” para ir uma pasta antes da pasta onde estou.
”cd -” para voltar a pasta onde estava antes de mudar.

 

Para navegar através múltiplos níveis de pastas em um só comando, uso por exemplo, “cd /home/cp/Imagens”, que me levará diretamente ao pasta Imagens. Para voltar a pasta Home digito cd.

 

Então volto com o comando cd para pasta inicial que considero ser Home. Digito e recebo resposta:

 

~$ cd

~ $ ls
Área de Trabalho Downloads Música
Biblioteca do calibre Imagens Público
Documentos Modelos Vídeos

 

~ $ ls -t
Vídeos Modelos Biblioteca do calibre
Downloads Imagens Música
Documentos Área de Trabalho Público

 

 

Quero ir para a pasta Documentos. Digito e acontece o seguinte:
~ $ cd Documentos
cp@pc ~/Documentos $

 
PESQUISO NA INTERNET:

Uma característica interessante do bash é que ele possui a função de auto-completar os nomes de comandos que foram digitados via entrada padrão. Isso é feito PRESSIONANDO-SE A TECLA TAB; o comando é completado e acrescentando um espaço. Isso funciona sem problemas para comandos internos; caso o comando não seja encontrado, o bash emite um beep. Outro recurso muito interessante do bash, é que você pode repetir um comando executado sem ter que digitá-lo novamente. Isso é possível UTILIZANDO O CARACTERE “!” na frente do comando que você deseja repetir. O BASH BUSCA COMANDOS NO HISTÓRICO.

 

 

Agora que estou na pasta documentos, eu quero saber o que tem na pasta documentos, então digito:

 

cp@pc ~/Documentos $ ls
Formatar-Pendrive-no-Linux-2017

 
REPETINDO:
LS COM PARAMETROS, FUNÇÕES AUXILIARES, FILTROS PARA MOSTRAR AS COISAS DE UM MODO DIFERENTE.
Digito cp@pc ~/Documentos $ ls
Digito cp@pc ~/Documentos $ ls -t
Digito cp@pc ~/Documentos $ ls -l
Digito cp@pc ~/Documentos $ ls -la
Digito cp@pc ~/Documentos $ ls -lah
Digito cp@pc ~/Documentos $ clear
~/Documentos $ ls -lah
total 140K
drwxr-xr-x 4 rfg rfg 4,0K Abr 20 06:00 .
drwxr-xr-x 33 rfg rfg 4,0K Abr 20 06:05 ..
-rw-r–r– 1 rfg rfg 1,4K Abr 8 01:27 Formatar-Pendrive-no-Linux-2017

 

 

Tem um arquivo chamado: Formatar-Pendrive-no-Linux-2017, e quero criar um arquivo chamado texto.txt, uso o comando touch. Para saber sobre o comando touch abro outro terminal e digito:

 

~$ man touch

 

Crio um arquivo chamado texto.txt ou teste.txt, a extensão txt não é necessária para a criação de um arquivo no Linux mas coloco a extensão .txt para não me confundir.

 

~/Documentos $ touch texto.txt

Confiro o que existe em documentos:
~/Documentos $ ls
Formatar-Pendrive-no-Linux-2017 texto.txt

 
Quero criar uma pasta chamada texto. Uso mkdir. Para saber alguma coisa pelo terminal sobre o que é mkdir digito man mkdir, –help mkdir, info mkdir e depois eu Digito:
~/Documentos $ mkdir texto

 
Para apagar arquivos e pastas uso um comando que tem que ter CUIDADO.
rm -rf apaga pastas (CUIDADO!)

 

rm -r apaga arquivos
Confiro:

 
~/Documentos $ ls
Formatar-Pendrive-no-Linux-2017 texto
texto.txt
$ ls -lah
total 12K
drwxr-xr-x 3 rfg rfg 4,0K abr 20 13:09 .
drwxr-xr-x 32 rfg rfg 4,0K abr 20 12:00 ..
drwxrwxr-x 2 rfg rfg 4,0K abr 20 13:09 teste
-rw-rw-r– 1 rfg rfg 0 abr 20 13:06 texto.txt
Acima vejo que toda pasta começa com d e o arquivo -rw

Tem dois arquivos de texto e uma pasta chamada texto.

 

Quero mover o arquivo texto.txt para dentro da pasta texto, vou usar o comando mv, procuro informação sobre comando mv usando man mv, –help mv e info mv. Então eu digito:
~/Documentos $ mv texto.txt texto
Abro o meu gerenciador visual de arquivos para ver se o icone texto está na pasta texto.

 

Ok. Confere. Comando bem sucedido.

 
Confiro o que tem em documentos:
~/Documentos $ ls
Formatar-Pendrive-no-Linux-2017 texto

 

 

Digito ls -l e obtenho a seguinte resposta do terminal:

~/Documentos $ ls -l
total 8
-rw-r–r– 1 rfg rfg 1333 Abr 8 01:27 Formatar-Pendrive-no-Linux-2017
drwxr-xr-x 2 rfg rfg 4096 Abr 20 07:08 texto

 

 

Limpo as informações da tela do terminal com clear:
~$ clear

 
Agora vou para a pasta texto:
~/Documentos $ cd texto

 
Estou na pasta texto e confiro isto com o comando ls:
~/Documentos/texto $ ls
texto.txt

 
Se eu quiser remover o arquivo texto.txt usaria o comando rm:
~/Documentos/texto $ rm texto.txt

 
Para criar de novo outro arquivo chamado texto.txt digitaria:
~/Documentos/texto $ touch texto.txt

 
Agora eu quero escrever alguma coisa no arquivo texto.txt e vou usar primeiro o comando cat que é um dos comandos para mostrar todo o conteúdo do arquivo no Shell. Me informo alguma coisa sobre o cat com o comando ‘man cat’, ‘info cat’ e ‘–help cat’ mas não entendo muito bem. Executo:

~/Documentos/texto $ cat texto.txt

 
Não tem nada no arquivo texto.txt então não aparece nada. Eu sei que posso usar um comando de um programa chamado nano que roda no terminal para escrever neste arquivo pelo terminal, pesquiso sobre o nano digitando no terminal ‘nano –help’, ‘man nano’, ‘info nano’ e então eu digito:

~/Documentos/texto $ nano texto.txt

 

 

O nano inicia-se no terminal e eu escrevo no arquivo o seguinte:
Esta é a primeira frase do arquivo texto.txt

 
Gravo com o comando de teclado ctrl + O , confirmo que é para o nano salvar o arquivo com o nome texto.txt apertando a tecla ENTER e saio com o comando de teclado ctrl+X e agora digito no terminal:

~/Documentos/texto $ cat texto.txt
Esta é a primeira frase do arquivo texto.txt

 
Poderia visualizar este arquivo com o gedit, mousepad, leafpad, vim entre outros.
Quer dizer que escrevi uma linha no arquivo texto.txt e posso abrir o icone dele em um programa de texto e lá estará escrito a frase. Posso abrir o arquivo num programa de edição de texto e transformar estas letras, mudar de tamanho colorir elas etc…
Posso escrever neste arquivo texto.txt usando o comando echo. Pesquiso man echo, info echo, –help echo.

 

Estou na pasta texto que está na pasta documentos.

 

~/Documentos/texto $echo ‘segunda linha do arquivo texto.txt’ >> texto.txt
~/Documentos $ echo “exemplo de texto terceira linha” >> texto.txt
Noto que eu usei >> para escrever a primeira linha usaria apenas > O texto a ser escrito no arquivo deve ser abraçado por duas ” o simbolo > direciona a frase para o arquivo chamado teste sendo a primeira linha. As linhas seguintes usarão >> e as aspas.
~/Documentos/texto $echo ‘esta é a primeira linha escrita usando echo’ > texto.txt
Se fizer isto acima, eu apago as duas linhas que escrevi anteriormente.
Para ler o arquivo posso usar o comando head, head -n1, head -n2.

 

Exemplo:
~/Documentos $ head teste.txt
exemplo de texto 1
exemplo de texto 2

 
Para ver o final do texto, posso usar tail, tail -n1, tail -n2. O comando head vê o inicio do texto e o comando tail vê o final do texto. Posso adicionar parâmetros a estes comandos.
Exemplo:

 

~/Documentos $ tail teste.txt
exemplo de texto 1
exemplo de texto 2

 
Vou para a pasta Home pois digito cd então navegando pelo terminal chego até lá no texto.txt para ver o que está escrito. Faço bem detalhadamente:

 
~/Documentos/texto $ cd
~ $
~ $ ls
Área de Trabalho Downloads Música
Biblioteca do calibre Imagens Público
Documentos Modelos Vídeos
~ $ cd Documentos
~/Documentos $
~/Documentos $ ls
Formatar-Pendrive-no-Linux-2017 texto texto.txt
~/Documentos $ cd texto
~/Documentos/texto $

~/Documentos/texto $ cat texto.txt
Esta é a primeira frase do arquivo texto.txt
segunda linha do arquivo texto.txt. 🙂

 

 
Quero saber como copiar arquivos e pastas usando o terminal:

cp – Copia arquivos e diretórios. “cp file foo” é para fazer uma cópia exata do arquivo “file” dando-lhe o nome de “foo”.

 
“sudo cp /etc/X11/xorg.conf /etc/X11/xorg.conf-bkp” para gerar uma cópia de segurança exata do arquivo “/etc/X11/xorg.conf” dando-lhe o nome de “/etc/X11/xorg.conf-bkp”.

 

 

Meu terminal está cheio de letras e informações de comandos quero limpar ele digito o comando clear ou teclo ctrl+l.
~$ clear

 
Pesquiso e acabo sabendo que se o destino fornecido for o nome de um diretório existente, os arquivos serão copiados para esse diretório, com o mesmo nome. Caso indiquemos um nome de arquivo no caminho de destino, o arquivo de origem será copiado e essa cópia renomeada também. A sintaxe é:

 
cp [opções] arquivos_origem local_destino

Opções mais comuns:
-i, –interactive
Pergunta se desejamos sobrescrever um arquivo de destino já existente.

 

-l, –link
Cria hard links para os arquivos em vez de copiá-los.
-n, –no-clobber
Não sobrescrever um arquivo já existente
-p
Preserva as permissões originais do arquivo, incluindo proprietário, grupo, stuid, setgid, tempos da última modificação e acesso.
-r, -R, –recursive
Copia diretórios de forma recursiva.
-s, –symbolic-link
Cria links simbólicos (symlinks) para os arquivos em vez de copiá-los
-u, –update
Copia apenas quando os arquivos de origem forem mais novos que os de destino, ou quando os arquivos de destino estiverem faltando.

 
-v, –verbose
Modo verboso; explica o que está sendo feito no momento.

 
–help
Mostra a ajuda básica do comando e sai.

 
–version
Mostra informações sobre a versão do comando e sai.

 

 

Quero saber sobre os comandos more e pipe. Dizem que são bastante utilizados. Em uma pasta que tem bastante arquivo. A pasta etc. A pasta etc quase sempre guarda os arquivos de configuração programas instalados no sistema operacional em alguns sistemas é na pasta opt.
~$ cd /etc

~$ ls
~$ ls -lah

 

 

Concatenação de comandos:
~ ls -lah | more [ o more fará uma pausa a cada tela exibita o pipe | liga o ls -lah com o comando more ]

 
Quero saber a data do dia. Digito no terminal e recebo a resposta:
~ $ date
Qui Abr 20 03:56:35 BRT 2017

 
Quero saber o calendário digito e recebo a resposta:
~ $ cal
Abril 2017
Do Se Te Qu Qu Se Sá
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30

 
Quero saber quando cairá certo dia em outro ano anterior ou posterior usando pipe “|” e “less”:
~$ cal 2018 | 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 virão todos juntos.

 

 

Se eu quiser sabe o mês 4 de 2013, eu faço assim:
~$ cal 4 2013

 
Quero saber a temperatura da máquina. Instalo lm-sensors. Digito e recebo a resposta:

~$ sudo apt update ; sudo apt upgrade ; sudo apt install lm-sensors

~ $ sensors
acpitz-virtual-0
Adapter: Virtual device
temp1: +48.0°C (crit = +104.0°C)
temp2: +48.0°C (crit = +104.0°C)

coretemp-isa-0000
Adapter: ISA adapter
Physical id 0: +48.0°C (high = +105.0°C, crit = +105.0°C)
Core 0: +48.0°C (high = +105.0°C, crit = +105.0°C)
Core 1: +48.0°C (high = +105.0°C, crit = +105.0°C)

 

 

Quero saber a arquitetura do computador. digito arch que é igual ao comando uname -m, e recebo a resposta:

~ $ arch
x86_64
~ $ uname -m
x86_64

 

 

Quero saber o hardware instalado no computador, especificando os endereços digito e recebo a resposta:

$ lsdev
O programa ‘lsdev’ não está instalado no momento. Você pode instalá-lo digitando:
sudo apt install procinfo

 
Então digito:
~$ sudo apt install procinfo ; sudo apt update ; sudo apt upgrade ; lsdev
~ $ lsdev
Device DMA IRQ I/O Ports
————————————————
0000:00:02.0 4000-403f
0000:00:1f.2 44 4060-407f 4080-4083 4090-4097 40a0-40a3 40b0-40b7
0000:00:1f.3 4040-405f
0000:02:00.0 3000-30ff
ACPI 1800-1803 1804-18

 

 

lspci – Exibe informações sobre os barramentos PCI do computador e sobre os dispositivos a ele conectados.

~ $ lspci
00:00.0 Host bridge: Intel Corporation Broadwell-U Host Bridge -OPI (rev 08)
00:02.0 VGA compatible controller: Intel Corporation Broadwell-U Integrated Graphics (rev 08)
00:03.0 Audio device: Intel Corporation Broadwell-U Audio Controller (rev 08)

 

 

lsusb – Lista informações sobre os barramentos USB do computador e sobre os dispositivos a eles conectados.
~ $ lsusb
Bus 001 Device 002: ID 8087:8001 Intel Corp.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 003 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub

 

 
uname – Este comando exibe várias informações sobre o sistema, incluindo o nome da maquina, nome e versão do Kernel e alguns outros detalhes. É muito útil para verificar qual é o Kernel usado por você.
~ $ uname
Linux

”uname -a” para exibir todas as informações.
~ $ uname -a
Linux rf7E 4.4.0-53-generic #74-Ubuntu SMP Fri Dec 2 15:59:10 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux

 

 

Quero saber em tempo real informações sobre o meu sistema linux, digito:
$ top

 

 
comandos interativos mais importantes do ”top”.

”k” – Finaliza, ou seja, “mata” um processo.

”m” – Ativa/Desativa a exibição de informações da memória.

”M” – Ordena os processos pelo uso da memória residente.

”N” – Ordena os processos pelos seus PIDs.

”P” – Ordena os processos pelo uso da CPU (este é o padrão).

”ESPAÇO” – Atualiza imediatamente a visualização do quadro de processos.

”h” – Exibe a ajuda dos comandos interativos do ”top”.

”q” – Abandona o comando ”top”.

 

 

Quero saber um quadro atual, porém estático dos processos que estão sendo executados no sistema. Digito e recebo a resposta:

~ $ ps
PID TTY TIME CMD
9409 pts/0 00:00:00 bash
12148 pts/0 00:00:00 ps

 

 

Quero saber como matar processos sendo executados pelo meu PID enviando um sinal:
”kill -9 1345” para finalizar o processo de PID número 1345. Para saber qual PID de determinado processo que esta sendo executado pode ser utilizado o comando ps

~ $ ps
PID TTY TIME CMD
9409 pts/0 00:00:00 bash
13178 pts/0 00:00:00 ps
~$ kill -9 13178

 

Fechei o terminal que estava usando.

~$exit

 

 

Quero finalizar processos pelo nome ao invés do PID como faz o comando kill. Uso killall.

 

Se eu tiver aberto o Firefox e quero fecha ele pelo terminal, se eu digitar no terminal ”killall mozilla-firefox” finalizo processo mozilla-firefox, fechando com isso o navegador web Mozilla Firefox. O nome dos processos ativos pode ser observado com uso do comando ps