Linux Bash Comandos Tutorial

:: Linux_Bash_Comandos_Tutorial ::

O Linux tem uma interface gráfica com o usuário e funciona de maneira semelhante a outros sistemas. O interessante talvez seja a linha de comando (também conhecida como terminal) rodando o Bash.

A linha de comando é uma fera interessante, e se você não usou uma antes, pode ser um pouco assustador.

Com um pouco de prática você logo virá a vê-lo como seu amigo. A maioria das pessoas abre uma interface de linha de comando como outra janela na área de trabalho (na verdade, você pode ter quantas abertas quiser).

Isso também é vantajoso, pois podemos ter várias linhas de comando abertas e executar diferentes tarefas em cada uma ao mesmo tempo.

Também podemos voltar facilmente para a GUI (ambiente gráfico) quando nos convier.

Experimente até encontrar a configuração mais adequada para você.

---------------------
Como exemplo, 3 terminais abertos:

1. Terminal que faz o trabalho
2. outro terminal para trazer dados auxiliares
3. O último terminal serve para visualizar as páginas do Manual (man pages).
---------------------

:: Uma linha de comando, ou terminal, é uma interface baseada em texto para o sistema. É a famosa interface chamada de cli. (cli = interface modo texto) ::

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

Você pode inserir comandos digitando-os no teclado e o feedback será dado a você de forma semelhante como texto.

A linha de comando geralmente apresenta um prompt.

Conforme você digita, ele será exibido após o prompt.

Na maioria das vezes você estará emitindo/digitando/colando comandos.

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

Você provavelmente o encontrará o terminal em:

Aplicativos > Sistema ou Aplicativos > Utilitários

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

Como alternativa, você pode clicar com o botão direito do mouse na área de trabalho e pode haver uma opção "Abrir no terminal".

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

Dentro de um terminal você tem o que é conhecido como shell. Esta é uma parte do sistema operacional que define como o terminal se comportará e cuidará da execução (ou execução) de comandos para você. Existem vários shells disponíveis, mas o mais comum é chamado de bash, que significa Bourne Again shell.

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

O terminal pode parecer assustador, mas não se preocupe. O Linux é cheio de atalhos para ajudar a tornar a vida mais fácil. Tome nota deles, (não só como eles tornam a vida mais fácil, eles muitas vezes também salvam a gente de cometer erros bobos, como erros de digitação) anote seus erros bobos também.

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

Quando você insere comandos, eles são realmente armazenados em um histórico. Você pode percorrer esse histórico usando as teclas de seta para cima e para baixo. Portanto, não se preocupe em redigitar os comandos que você digitou anteriormente, você normalmente pode apenas acertar a seta para cima algumas vezes. O histórico pode ser limpo usando o comando: history -c

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

Você também pode editar esses comandos usando as teclas de seta para a esquerda e para a direita para mover o cursor para onde desejar.

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

:: Executando Comandos...

O Bash determina o tipo de programa que deve ser executado. Programas normais são comandos do sistema que existem em forma compilada no seu sistema. Quando tal programa é executado, um novo processo é criado porque o Bash faz uma cópia exata de si mesmo.

Esse processo filho possui o mesmo ambiente que seu pai, somente o ID do processo número é diferente. Este procedimento é chamado bifurcação.

Após o processo de bifurcação, o espaço de endereço do processo filho é sobrescrito com os novos dados do processo. Este é feito através de uma execução que liga para o sistema mudando um comando antigo por um novo, enquanto o ambiente em que o novo programa é executado permanece o mesmo, incluindo a configuração de dispositivos de entrada e saída, ambiente variáveis ​​e prioridade.

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

Esse mecanismo é usado para criar todos os processos do UNIX, portanto, também se aplica ao sistema operacional Linux. Mesmo o primeiro processo, com o ID do processo 1, é bifurcado durante o procedimento de inicialização. Este procedimento é chamado bootstrappin.

Para ver o que se entende por scripting, use o shell em combinação com o seu editor de texto favorito, por exemplo. vi para criar um novo arquivo chamado trabalho.sh contendo todos os comandos acima, cada um em uma linha separada. Quando estiver pronto, torne seu novo arquivo executável usando o comando chmod com uma opção + x. Por fim, execute seu novo script prefixando seu nome com ./

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

: Caminho Relativo vs Caminho Absoluto :

Por fim, antes de programar scripts de shell bash oficial, deve-se discutir brevemente a navegação de shell e a diferença entre um caminho de arquivo relativo e absoluto.

Provavelmente, a melhor analogia para explicar um caminho de arquivo relativo versus absoluto é visualizar o sistema de arquivos GNU/Linux como um edifício de múltiplos andares. O diretório raiz (porta de entrada do edifício) indicado por "/" fornece a entrada para todo o sistema de arquivos (edifício), dando acesso a todos os diretórios (níveis/salas) e arquivos (pessoas).

Para navegar para uma sala 1 no andar 3, primeiro precisamos entrar na porta principal / (raiz), então seguir para o 3 andar/nivel3/ e a partir daí entrar na sala1.

Assim, o caminho absoluto para essa sala específica dentro de um edifício é /andar3/sala1. A partir daqui, se desejarmos visitar sala2 também no terceiro andar, primeiro precisamos sair de nosso local atual que é sala1 inserindo ../ e, em seguida, incluindo o nome da sala: sala2. Nós pegamos um caminho relativo para a sala2, que neste caso é ../sala2. Nós já estávamos no nível 3, então não havia necessidade de deixar o prédio inteiro e pegar o caminho absoluto pela:

entrada_principal/andar3/sala2

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

: No computador ficaria mais ou menos assim...

raiz/home/home-usuário/Documentos/Arquivo-de-texto.txt

Ou:

~/Documentos/Arquivo-de-texto.txt

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

Felizmente, o GNU / Linux apresenta uma ferramenta de bússola simples para ajudá-lo a navegar por todo o sistema de arquivos na forma do comando pwd. Este comando, quando executado, sempre imprimirá sua localização atual. Usa-se o comando cd e pwd para navegar pelo sistema de arquivos GNU/Linux usando caminhos absolutos e relativos.

A navegação pelo sistema de arquivos GNU/Linux considerada simples e, no entanto, para muitos, muito confuso. Familiarize-se com a navegação do sistema de arquivos GNU/Linux antes de passar para outros assuntos.
---------------------

: Navegando pelo sistema de arquivos GNU/Linux...

No prompt de comando do Linux, use o comando cd para alterar o diretório de trabalho, onde as ações ocorrem por padrão. Aqui estão alguns usos básicos para o comando cd:

1. Para mudar para o seu diretório pessoal, digite cd e pressione [Enter].
2. Para alterar para um subdiretório, digite cd, um espaço e o nome do subdiretório (por exemplo, cd Documents) e, em seguida, pressione [Enter].
3. Para alterar para o diretório pai do diretório de trabalho atual, digite cd seguido por um espaço e dois pontos e pressione [Enter].
4. Para mudar para um diretório especificado por um nome de caminho, digite cd seguido de um espaço e do nome do caminho (por exemplo, cd /usr/local/lib) e, em seguida, pressione [Enter].
5. Para confirmar que você mudou para o diretório desejado, digite pwd e pressione [Enter]. Você verá o nome do caminho do diretório atual.

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

: Alternando entre diretórios diferentes...

Ao trabalhar com dois diretórios no modo de linha de comando, você pode alternar entre eles e fazer uma grande quantidade de redigitação no processo. Se os diretórios não estiverem localizados no mesmo diretório pai, você terá que digitar o nome do caminho inteiro para mudar de um diretório para o próximo, o que pode ser entediante. No entanto, você pode eliminar toda essa digitação extra usando uma das duas abordagens: Use a lista de histórico do shell ou use uma outra função do shell que é geralmente a tecla Enter (pressione duas ou três vezes). A tecla Tab pode dependendo do caso, também auto-completar caminhos.
---------------------

: Comandos importantes para desfrutar o Linux...

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

1. ls
O comando ls - o comando ls (list) - funciona no terminal do Linux para mostrar todos os principais diretórios arquivados em um determinado sistema de arquivos. Por exemplo, o comando:

ls /aplicativos

... mostrará ao usuário todas as pastas armazenadas na pasta geral de aplicativos.

O comando ls é usado para visualizar arquivos, pastas e diretórios.

2. cd
O comando cd - change directory - permitirá ao usuário mudar entre diretórios de arquivos. Como o nome do comando name sugere, você usaria o comando cd para circular entre dois diretórios diferentes. Por exemplo, se você quisesse mudar do diretório inicial para o diretório Scripts, deveria inserir o seguinte comando:

cd ~/Documentos/Scripts

Logicamente cd ~/Documentos/Scripts lê a mudança para o diretório /Scripts que é armazenado no diretório /Documentos. Todos os comandos do Linux seguem um caminho lógico.

3. mv
O comando mv - move - permite que um usuário mova um arquivo para outra pasta ou diretório. Assim como arrastar um arquivo localizado em uma área de trabalho do PC para uma pasta armazenada na pasta "Documentos", o comando mv funciona da mesma maneira. Um exemplo do comando mv é:

mv /arora/applications/majorapps/ arora/aplicativos/minorapps

A primeira parte do comando mv /arora/applications/majorapps lista o aplicativo a ser movido. Neste caso, arora. A segunda parte do comando /arora/applications/minorapps lista onde o arora será movido para - de majorapps para minorapps.

4. man
O comando man - o comando manual - é usado para mostrar o manual do comando inserido. Assim como um filme sobre a natureza do filme, o comando man é o meta-comando da Linux CLI. A entrada do comando man mostrará todas as informações sobre o comando que você está usando. Um exemplo:

cd man

O comando de entrada mostrará o manual ou todas as informações relevantes para o comando de mudança de diretório.

5. mkdir

O comando mkdir - make directory - permite ao usuário criar um novo diretório. O comando mkdir cria novos diretórios em um ambiente Linux. Um exemplo do comando mkdir

mkdir -v pastateste

O comando de exemplo retorna:

~$:mkdir -v pastateste
mkdir: foi criado o diretório 'pastateste'

6. rmdir

O comando rmdir - remove diretório/pasta (vazia) - O comando: rm -ir permite ao usuário remover pastas com ou sem arquivos usando o terminal. Um exemplo do comando rmdir:

rmdir pastateste

--

Crie a pasta de novo:

mkdir -v pastateste

--

Remov com rm -ir:

rm -ri pastateste

O comando de exemplo faz o seguinte:

~$:rm -ri pastateste
rm: remover diretório 'pastateste'? y
~$:

Deve-se notar: os comandos mkdir e rmdir criam e removem diretórios. Eles não criam arquivos e também não removem um diretório que contenha arquivos. O mkdir fará um diretório vazio e o comando rmdir removerá um diretório vazio.

Touch

O comando touch - a.k.a. o comando make file - permite que os usuários criem arquivos usando o Linux CLI. Assim como o comando mkdir faz diretórios, o comando touch cria arquivos. Assim como você faria um .doc ou um .txt usando um desktop PC, o comando touch cria arquivos vazios. Um exemplo do comando touch:

touch arquivoteste.txt

O comando touch do exemplo efetivamente criou o arquivo arquivoteste.txt. Conforme observado pela extensão, o arquivo criado é um arquivo .txt ou de texto. Para equacionar, um arquivo .txt no Linux é semelhante a um arquivo de caderno .txt em um sistema operacional Windows ou Mac OS.

8. rm

O comando rm - remove - como o comando rmdir serve para remover arquivos do seu sistema operacional Linux. Enquanto o comando rmdir removerá os diretórios e arquivos contidos nele, o comando rm excluirá os arquivos criados. Uns exemplos do comando rm:

rm testfile.txt
rm -f testfile.txt
rm -i testfile.txt
rm -fi testfile.txt

Os comandos acima mencionados removem testfile.txt. Curiosamente, enquanto o comando rmdir excluirá apenas um diretório vazio, o comando: rm -r removerá os arquivos e diretórios com arquivos nele. Dito isso, o comando rm tem mais peso que o comando rmdir e deve ser usado com mais especificidade.

9. locate

O comando locate - a.k.a. find - serve para localizar um arquivo no sistema operacional Linux. Se você não souber o nome de um determinado arquivo ou não tiver certeza de onde o arquivo foi salvo e armazenado, o comando locate será útil. Um exemplo de comando locate:

locate -i Imagens

O comando indicado localizará um arquivo com o nome de arquivo contendo Imagens. Uma nota na entrada: o uso de "-i" diz ao sistema para procurar por um arquivo não específico de capitalização (funções do Linux em letras minúsculas). O uso do asterik "*" significa procurar um curinga. Um curinga diz ao sistema para puxar todos os arquivos que contenham os critérios de pesquisa.

Especificando -i com curingas, o comando locate irá recuperar todos os arquivos que contenham seus critérios de pesquisa, lançando a maior rede de busca que o sistema permitir.

10. clear

O comando clear faz exatamente o que diz. Quando seu terminal fica todo sujo com várias leituras e informações, o comando clear limpa a tela e limpa a placa.

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

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!

🙂


Você chegou hein?

2017
.
Parece que um caminhão te atropelou…
.
Eu andei por tanto lugar.
.
Quando eu estive lá eu vi coisas horríveis, não sei… Acho que fiz coisas horríveis.
.
Olha, você faz o que você tem que fazer. Não importa o que seja.
.
Faz a tua coisa!
.
Faça o que tiver de fazer, e eu te digo:
.
“Não importa seja lá o que você tenha feito.
Não importa o tanto que você ache horrendo, querido(a).
Escuta, e escuta bem!
Tem alguém em algum lugar fazendo pior do que você fez, ou acha que fez.
E está fazendo agora, neste exato momento!
Eu sei!
Eu sei mesmo!
Pode acreditar!
Tem milhões que fizeram pior e tem montes de gentes neste exato momento, eu digo agora, neste exato momento fazendo algo a alguém pior, muito pior do que qualquer coisa você tenha feito.
Lembre-se disto!
E nada, nada é pior do que o que todas as pessoas fazem o tempo todo, todos os dias.
As pessoas fecham os olhos e deixam acontecer.
As pessoas passam direto, fingindo que não veem e deixam acontecer.”

 

.

 

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

Ela disse: Walter…

2017 – Conto

.

Walter teve uma crise.

Isto aconteceu faz um tempo.

Walter inteligente.

Foi criança inteligente.

Amou e foi amado pelos pais.

Era bom estudante desde pequeno.

Teve o melhor estudo possível.

Estudou e foi estudado pelas instituições de ensino por onde aprendeu.

Inteligente o bastante para conseguir sobreviver sem cometer crime.

Educado, sofisticado, visionário para saber que o esquema era simples.

Esquema cruel e simples.

Eu era amiga dele.

Desde criança eu era amiga dele.

Estudamos juntos.

Crescemos perto um do outro.

Crescemos.

Ele me desejava desde novinho.

Mas eu sabia que eu não era para ele.

Eu também sou esperta.

Ele me idealizava.

Via uma menina e depois uma mulher que não era eu mesma.

Porque eu sei quem eu sou.

Ele ia se decepcionar, e eu não queria de forma alguma ferir o Walter.

Ele era perfeito e correto.

Eu queria e quero o proibido, quero o selvagem.

Enfim queria um homem que não fosse meu irmão.

Na minha cabeça, o Walter é meu irmão até hoje.

Os dias passaram.

Dinheiro foi ganho.

Dinheiro foi gasto.

Sempre fomos companheiros amigos e nos ajudávamos quando acontecia todo o tipo de problema, fosse no trabalho, fosse nos problemas cotidianos.

Euzinha tirei ele de muitas enrascadas e ele fez o mesmo por mim.

Walter continuou estudando e trabalhando.

Eu depois de estudar bastante passei a aprender, cara de pau, as manhas, macetes, malandragens para continuar me mantendo no jogo.

Eu queria e quero até hoje amor, dinheiro e poder.

Sou viciada nisto e assumo sem problemas.

Ao mesmo tempo tenho nojo disto e assumo paradoxos sem problemas.

Mas Walter era mais que eu.

Não sei como pode alguém ser mais que eu, mas ele era.

Admito contrariada e admirada.

Walter era mais profundo.

Profundo.

E Walter foi tão fundo que se perdeu.

Ou talvez descobriu uma grande verdade e começou a beber. Beber e beber.

Já era alto funcionário de um banco famoso quando chegou a este ponto.

Ele era um gênio. Com livros publicados e era uma pessoa que gerou milhões. Manipulou o capital, ações, documentos para grandes empresas.

Por isto, por ele saber demais e saber ficar de boca fechada que ele foi aposentado com 38 anos pelo banco.

Foi aposentado ganhando um salário de uns 12 mil reais por mês.

Muito bem menos do que ele merecia.

A gente morava no mesmo condomínio.

Eu com meu marido e meus filhos que vejo tão pouco mas que mantenho como reis.

Ele após a morte de seus pais sozinho em uma casa enorme.

Mansão.

Nesta época, eu acho que o cérebro do Walter já estava deteriorando-se.

Isto não o impediu de me ensinar como beber e ficar no grau e sobreviver para contar a história.

Ele era engraçado nesta época.

Walter saia a pé da mansão onde tinha um monte de carro caro.

Saía de sandálias, bermuda jeans rasgada, surrada mesmo.

Tipo uns dias sem fazer barba, camiseta de algum time e ia para um boteco que ficava ao lado do condomínio.

Um boteco tipo copo sujo.

Lá ele ficava desde as nove da manhã até as quatro ou cinco da tarde bebendo doses de aguardente.

Tinha vezes que virava noites naquele pé sujo.

Eu levava ele arrastado ao médico quando podia.

Cuidei dele mais do que cuidei dos meus filhos na época.

Mas ele conseguiu ganhar uma bela cirrose.

Numa época em que tudo estava indo muito, muito bem para euzinha, resolvi numa manhã de sábado fresco e azul, passar umas horas com ele naquele copo sujo.

Lá ele me ensinou a fazer coquetéis a começar de baixo teor alcoólico e ir subindo o teor dos coquetéis até quase um êxtase alcoólico e depois ir baixando até dar sono e ter vontade de casa, cama e sono.

Nossos diálogos foram magníficos e teses de doutorado foram escritas graças as ideias desenvolvidas naquele dia.

Você não sabe mas naquele dia, acho que eu e o Walter mudamos o mundo.

Aí fica esquisito.

Eu não entendo.

Walter morreu de cirrose.

Euzinha e uns quatro ou cinco amigos fomos ao enterro.

Como alguém que dominava a técnica de se embriagar tão bem morre de cirrose?

Anos passaram.

Hoje eu entendo.

Minha juventude passou.

Eu venci.

Sou rica pra caralho.

E estou farta!

O tal copo sujo que tinha fechado anos atrás após a morte do Walter…

Eu comprei o terreno e os terrenos ao lado e mandei abrir o copo sujo de novo.

O pior, é que estou ganhando um dinheiro absurdo com ele atualmente.

Eu vou lá todo dia.

Mas vou lá só para beber.

Não falo muito.

Vejo meus filhos passando em carros turbinados.

Vejo meu marido bobo passando com, não sei quem toda noite e nem ligo.

Vou bebendo.

Vou sorrindo.

Aprendi até jogar baralho e aposto.

O chato, é que mesmo caindo de bêbada, eu quase sempre ganho mais dinheiro no jogo do que perco.

Espero que a cirrose venha logo.

Quero saber aonde Walter está.

.

 

Até Breve

😀

.

Linux Mint Tutorial Xampp 2017

 

Linux-Mint-Tutorial-Xampp-2017

 

COMO INSTALAR E USAR O XAMPP, NO LINUX MINT 2017?
.

.

linux-mint-xampp

.

  • Primeiro eu preciso saber o que é Xampp.
    .

 

O QUE É XAMPP?
.

 

X+Apache+MariaDB+PHP+Perl = XAMPP
.

 

O nome provem da abreviação de X (para qualquer dos diferentes sistemas operativos), Apache, MariaDB, PHP, Perl. Na prática atual, XAMPP é utilizado atualmente para servir sites web na WWW, e com algumas modificações é geralmente seguro para uso em servidor público.
.

 

Uma ferramenta especial é incluída para proteger facilmente as partes mais importantes e sensíveis do pacote. O XAMPP possui muitos aplicativos, dentre eles o Apache, MySQL, phpMyAdmin, FileZilla FTP Server, OpenSSL.
.

 

Então, XAMPP é um conjunto de softwares que inclui Apache, MySQL, e interpretadores para PHP e Perl.
.

 

Isto faz do XAMPP um servidor independente de plataforma, software livre, que consiste principalmente na base de dados MariaDB.
.

O XAMPP pode ser, por exemplo, uma opção de requisito para instalação do Joomla!, WordPress e outros sistemas de gerenciamento de conteúdo.
.

 

O programa está liberado sob a licença GNU e atua como um servidor web livre, fácil de usar e capaz de interpretar páginas dinâmicas. Atualmente XAMPP está disponível para Microsoft Windows, GNU/Linux, Solaris, e MacOS X.
.

 

LINUX MINT, QUE É UM SERVIDOR?

 

Um servidor é um software ou computador, com sistema de computação centralizada que fornece serviços a uma rede de computadores, chamada de cliente.
.

 

Esses serviços podem ser de naturezas distintas, como por exemplo, arquivos e correio eletrônico.
.

 

Esta arquitetura é chamada de modelo cliente-servidor, é utilizada em redes de médio e grande porte (com muitas máquinas) e em redes onde a questão da segurança desempenha um papel de grande importância. O termo servidor é amplamente aplicado a computadores completos, embora um servidor possa equivaler a um software ou a partes de um sistema computacional, ou até mesmo a uma máquina que não seja necessariamente um computador.
.

 

Os servidores podem fornecer várias funcionalidades, muitas vezes chamado de “serviços”, tais como a partilha de dados ou [de recursos do sistema [| recursos]] entre vários clientes, ou computação desempenho para um cliente. Um único servidor pode servir vários clientes, e um único cliente pode usar vários servidores. Um processo cliente pode ser executado no mesmo dispositivo ou pode se conectar através de uma rede para um servidor em um dispositivo diferente.
.

 

LINUX MINT 2017, QUANTOS TIPOS DE SERVIDORES EXISTEM?
.

Existem muitos tipos de servidores:

 

1
Servidor de arquivos: Servidor que armazena arquivos de diversos usuários.
.
2
Servidor web: Servidor responsável pelo armazenamento de páginas de um determinado site, requisitados pelos clientes através de browsers.
.
3
Servidor de e-mail: Servidor publicitário responsável pelo armazenamento, envio e recebimento de mensagens de correio eletrônico.
.
4
Servidor de impressão: Servidor responsável por controlar pedidos de impressão de arquivos dos diversos clientes.
.
5
Servidor de banco de dados: Servidor que possui e manipula informações contidas em um banco de dados.
.
6
Servidor DNS: Servidores responsáveis pela conversão de endereços de sites em endereços IP e vice-versa.
.
7
Servidor proxy: Servidor que atua como um cache, armazenando páginas da internet recém-visitadas, aumentando a velocidade de carregamento destas páginas ao chamá-las novamente.
.

Servidor de imagens: Tipo especial de servidor de banco de dados, especializado em armazenar imagens digitais.
.
8
Servidor FTP: Permite acesso de outros usuários a um disco rígido ou servidor. Esse tipo de servidor armazena arquivos para dar acesso a eles pela internet.
.
9
Servidor webmail: servidor para criar emails na web.
.
10
Servidor de virtualização: permite a criação de máquinas virtuais (servidores isolados no mesmo equipamento) mediante compartilhamento de hardware, significa que, aumentar a eficiência energética, sem prejudicar as aplicações e sem risco de conflitos de uma consolidação real.
.
11
Servidor de sistema operacional: permite compartilhar o sistema operacional de uma máquina com outras, interligadas na mesma rede, sem que essas precisem ter um sistema operacional instalado, nem mesmo um HD próprio.
.

 

LINUX MINT COMO OS CLIENTES E SERVIDORES SE COMUNICAM?
.

 

OS CLIENTES E OS SERVIDORES COMUNICAM ATRAVÉS DE PROTOCOLOS, ASSIM COMO DOIS OU MAIS COMPUTADORES DE REDES.
.

Um computador, ocasionalmente, pode prover mais de um serviço simultaneamente. Pode existir em uma rede, um computador que atue como um servidor web e servidor de banco de dados, por exemplo; ou um computador pode atuar como servidor de arquivos, de correio eletrônico e proxy ao mesmo tempo. Computadores que atuem como um único tipo de servidor é chamado de servidor dedicado. Os servidores dedicados possuem a vantagem de atender a uma requisição de um cliente mais rapidamente.
.

 

Com exceção do servidor de banco de dados (um tipo de servidor de aplicação), os demais servidores apenas armazenam informações, ficando por conta do cliente o processamento das informações. No servidor de aplicações, os papéis se invertem, com o cliente recebendo o resultado do processamento de dados da máquina servidora.
.

 

LINUX MINT, O QUE É UM SERVIDOR DE INTERNET?

 

O servidor de Internet é um computador que controla o acesso de uma determinada rede à Internet. Todos os pacotes destinados à Internet ou recebidos pela internet passam pelo servidor de internet, onde são verificados e enviados ao destinatário correto dentro da rede.
.

As verificações de segurança baseadas em pacotes, portas, urls e tudo o mais é feito no servidor de internet. Isto não significa que tais verificações também não sejam feitas em outros locais, como nos firewalls das estações de trabalho.
.

O servidor de internet também pode implementar funções de cache de páginas de internet, log de acessos ou conversas em chats, etc. A principal vantagem de utilizar um computador como servidor de internet é que há uma gama muito maior em termos de serviços disponíveis, o que nem sempre é possível em dispositivos compactos como os roteadores, que também podem fazer o papel de “servidores de internet”, por assim dizer.
.

Hoje em dia, com a popularização do Linux a maior parte dos servidores de internet o utilizam. Além de oferecer maior segurança, é um sistema gratuito com centenas de ferramentas também gratuitas à disposição.
.

Existem vários softwares de servidor de internet grátis que fazem o papel de servidor proxy e podem ser instalados em qualquer distribuição Linux como o Ubuntu, por exemplo. Estes são os servidores de internet que ficam nas empresas e recebem as requisições das estações de trabalho da rede interna e repassam à rede externa. Neste processo são feitas verificações de segurança e controle de acesso.
Servidor de internet
.

 

Do servidor primário que eu pago para ter acesso a internet, usando um computador com Linux o Xampp seria um servidor proxy que se conectaria ao servidor primário e a partir dele, do Xampp minha estação de trabalho se comunicaria com a internet disponibilizada pelo servidor primário.
.

 

Também existem os servidores de internet via rádio. Estes são sistemas que controlam o acesso à internet para clientes conectados via rádio, usando antenas. É muito comum em cidades do interior que não tem infraestrutura de internet via cabo ou rede fixa de telefonia. Muitas cidades do interior já têm internet via celular mas a velocidade em geral não é muito aproveitável para funções profissionais.
.

LINUX MINT, O QUE É UM SERVIDOR DE INTERNET VIA RÁDIO?
.

 

Este tipo de servidor de internet (servidor de internet via rádio) é mais conhecido como “HTTP server” ou servidor HTTP. Estes enviam as páginas e respondem às requisições enviadas a um servidor que mantém um site na internet. A correta configuração deste tipo de servidor é um diferencial na velocidade de um site e portanto são muito importantes para a qualidade da experiência do usuário que visita um site.
.

 

LINUX MINT 2017, COMO INSTALAR O XAMPP?
.

 

Para instalar o XAMPP no Linux Mint 2017 para 64 bits, executo os comandos abaixo:
.

 

wget https://www.apachefriends.org/xampp-files/7.1.1/xampp-linux-x64-7.1.1-0-installer.run -O xampp-installer.run

 

Ou acesso esta página:
.

 

https://sourceforge.net/projects/xampp/files/XAMPP%20Linux/

.

Torno o arquivo executável com o comando abaixo;
.

 

chmod +x xampp-installer.run

 

 

Inicio a instalação do XAMPP, com o seguinte comando;
.

 

sudo ./xampp-installer.run

 

Quando aparecer, sigo os passos do assistente de instalação e configuração:
.

 

Crio um lançador para o programa, executando o comando abaixo;
.

 

echo -e ‘[Desktop Entry]\n Version=1.0\n Name=xampp\n Exec=gksudo /opt/lampp/manager-linux-x64.run\n Icon=/opt/lampp/icons/world1.png\n Type=Application\n Categories=Application’ | sudo tee /usr/share/applications/xampp.desktop

.

 

Para que o atalho funcione corretamente, instalo o GKSU com o comando abaixo. Se a distribuição não é derivada do Debian, procuro o programa no gerenciador de pacotes dela e instalo;
.

 

sudo apt-get install gksu

.

Quando quiser iniciar o programa, digito:
.

 

sudo /opt/lampp/manager-linux-x64.run (64 bits) ou em um terminal, seguido da tecla TAB.
.

 

Já se a distribuição suportar, coloco o atalho na sua área de trabalho usando o gerenciador de arquivos do sistema ou o comando abaixo, e uso para iniciar o programa.
.

 

sudo chmod +x /usr/share/applications/xampp.desktop

cp /usr/share/applications/xampp.desktop ~/Área\ de\ Trabalho/

Se meu sistema estiver em inglês, uso este comando para copiar o atalho para a área de trabalho:

cp /usr/share/applications/xampp.desktop ~/Desktop

 

.

 

ADMINISTRANDO, VERIFICANDO E DESINSTALANDO O XAMPP NO LINUX

 

Abro um terminal;
.

 

Se quiser iniciar o XAMPP através do terminal:
.

 

sudo /opt/lampp/lampp start

.

Ou simplesmente uso a interface gráfica do programa para iniciar ou parar o servidor web.

 

Para executá-lo, uso os atalhos criados, ou simplesmente digito o comando:
.

 

sudo /opt/lampp/manager-linux-x64.run

 

É para sistemas de 64 bits;
.

 

 

Para verificar se o servidor web está sendo executado, digito o seguinte endereço em um navegador:

 

http://localhost

 

 

Se a instalação funcionou, irá aparecer uma página.
.

 

 

Agora eu tenho um servidor web no meu sistema.

.

LINUX MINT 2017, SE EU QUISER REMOVER O XAMPP?
.

 

Como remover o XAMPP no Linux Mint?
.

 

Se for necessário desinstalar o XAMPP do meu sistema, faço o seguinte:
.

 

Abro um terminal;
.

 

Desinstalo o programa executando os seguintes comandos;
.

 

sudo /opt/lampp/lampp stop

 

sudo rm -rf /opt/lampp

 

 

Até Breve

 

.

COMO-INSTALAR-UMA-DISTRIBUIÇÃO-LINUX-2017?

 

Um sistema operacional, é o programa principal num computador que controla o modo que o computador funciona e torna possível que através dele todos os outros programas possam funcionar permitindo que eu possa interagir com o computador. Eu falo com o computador e o computador entende o que eu quero que ele faça e executa.

 

Os sistemas operacionais Linux são montados sobre o Kernel. O nome do Kernel é Linux. Outros programas que se baseiam no Kernel falam com o Kernel e o Kernel fala com o Hardware. A totalidade é o sistema operacional. Existem vários. Apesar de serem parecidos, possuem suas diferenças. Algumas das distribuições que eu jpa instalei e usei algumas vezes são:

 

Debian, Solus, Manjaro, Ubuntu, Fedora, Deepin, Linux Mint, Arch Linux entre outras…

 

 

Para instalar um sistema operacional Linux no meu computador, eu sei particionar o HD, criar as partições que receberão o sistema operacional Linux para ficar em dual boot por, exemplo, com o Windows.

 

  • Hoje em dia, as principais distribuições Linux automaticamente fazem isto para os usuários atraves dos instaladores que vem prontos para serem utilizados.

 

Então, ligo o computador, entro no Setup da BIOS do computador e configuro o DVD-R/CD-ROM/Pendrive para ser o primeiro dispositivo de boot (inicialização).

 

Insiro o CD/DVD/Pendrive da distribuição Linux no driver de CD e reinicio o computador.

 

Seleciono a opção “Start” e pressiono Enter.

 

Com o sistema carregado, verifico se estou conectado a internet. Configuro o screensaver e o power manager para a máquina não dormir nem bloquear a tela durante a instalação. Escolho o idioma que desejo instalar o sistema e assim por diante.

 

Esta parte não tem mistério. Antes de instalar é bom assistir a um video do youtube por exemplo; sobre a instalação da distribuição escolhida só para ficar mais seguro e ver que hoje é bem fácil mesmo.

Guia Pós Instalação Debian 9 – 2017 [Atualizado]


2017

Debian9

DEBIAN 9 - GUIA PÓS INSTALAÇÃO - Junho - 2017

HOME COMPUTER

.

O Debian existe tem uns 24 anos. Hoje em dia possui 50.500 pacotes (softwares pré-compilados e empacotados em um formato amigável, o que faz com que sejam de fácil instalação na minha máquina. É base para mais ou menos 100 distribuições Linux entre elas o Ubu.

.

Quero usar o Debian 9 - Stretch simplesmente para coisas do dia a dia. Rotina. Lazer. Diversão e de vez em quando algum trabalho.

Pelo que me informei, o Debian pode ser a maior distribuição Linux do mundo atualmente. Não pertence a empresa nenhuma. É gratuito "free-open-source" sem fins lucrativos. Merece doações e muito patrocínio e tem o que merece. Continuando...

Tudo certo instalar o Debian 9 Stretch no meu computador. Vídeos tutoriais para particionamento de HD e instalação do Debian tem muito e de muitos tipos na internet. Principalmente no YouTube.

Pesquiso, monto um tutorial para mim enquanto estou instalando. Tento aprender alguma coisa com meus erros e conserto o que posso.

As coisas mudam de uma versão do Debian para o outro. Métodos de instalação de programas. Repositórios de programas. Ficam os melhores, creio eu.

Tento aprender com meus erros. Depois o que consegui resolver salvo em arquivo, estas ações anotadas se tornam um diário. Algumas vezes chamo isto de Artigo, outras de vezes digo que são crônicas. Então eu publico.

DEBIAN 9 - GUIA PÓS INSTALAÇÃO

"Decido não usar distribuições Linux que pertencem a empresas. Vou usar sistemas operacionais Linux que pertencem a comunidades."

:)

Eu primeiro baixei a ISO pequena Netinstall. Um pouco mais de 300MB rapidinho. Depois de baixar ela conferi a integridade da mídia baixada.

instalação-debian9

Verifico a autenticidade do arquivo de instalação do Debian no site oficial.

Tudo OK. Aí pensei:

"Vou gravar este arquivo ISO em um pendrive e em um DvD, mas como?"

Peguei um DvD e usei outra Distribuição Linux para gravar a ISO NetInstall do Debian9 com um programa chamado K3B. Gravei também um pendrive USB rápido e fácil com um programa do Gnome (gnome-disk-utility) que faz isto e já vem pré-instalado no Linux Mint por exemplo.

.

Ao tentar usar o programa para gravação de pendrive do Linux Mint de uma ISO do Debian 9 Live, onde eu posso experimentar o Debian 9 antes de instalar, consegui usar o sistema mas não consegui instalar na máquina. Na hora da instalação deu Erro de CDrom não detectado ao instalar o Debian.

Mas gravando a ISO netinstall do Debian 9 no pendrive, não tive problema nenhum e estou usando o Debian 9 neste momento aqui.

.

Continuando...

O interessante para mim, é ver os sistemas operacionais mudando experimentar as mudanças, configurar, errar pesquisar e anotar.

Se tem um coisa que eu aprendi vivenciando o mundo Linux com seus sistemas operacionais para eu um "average joe" é que a tecnologia não muda dia a dia. Muda de hora em hora, toda hora sem parar. É fascinante. Impressionante. Uma loucura.

Quem usa o sistema operacional mais usado do mundo, o Android (que é um sistema Linux) em smartphones hora entende isto, visto o tanto de atualizações e novos programas que aparecem diariamente fora a quantidade absurda de update que estes programas Android pedem se você deixar seu computador de bolso na atualização automática (não faça isto).

Quanto mais programa instalado mais pesado fica o sistema. Muita coisa rodando em segundo plano. Tem muito programa que eu não uso e o sistema vindo leve e limpo, eu posso instalar o que eu quero e o que acho mais adequado ao ambiente que eu escolhi para usar. Isto não quer dizer que não vou instalar uma porrada de programas como você verá nestas anotações.

Ao instalar o Debian 9 Stretch, ele determina que sejam estabelecidas duas senhas. A tua e a de Root, como sou preguiçoso, coloco a mesma senha com mais de 14 dígitos (letras maiúsculas, minúsculas, símbolos e números) nos dois.

Olha pessoal, é bom criar boas senhas, longas senhas mas, se um profissional tentar invadir; isto não para o invasor, apenas demora mais tempo.

Agora, o que um "average joe" como eu teria a oferecer a um bom profissional em invasões?

Isto não quer dizer que a cada 3 ou quatro dias eu não faça backup offline das coisas que gosto e mantenho fora de qualquer sistema operacional.

Isto não quer dizer que não limpo minha máquina e navegador constantemente e também não quer dizer que periodicamente eu não troco minhas senhas do sistema e do roteador.

Mas quando uma pessoa quer arrebentar a porta e entrar, se ela souber como fazer e tiver as ferramentas, ela entra. É só uma questão de tempo, como já me disseram.

Após instalar o Debian 9, a primeira coisa que eu faço, é abrir o terminal que está no menu sistema e digitar:

su

Aperto enter

Digito a senha e aperto enter executo os comandos abaixo:

apt update ; apt upgrade -y

.

Aguardo o sistema ser atualizado. Poderia fazer a atualização usando os comandos abaixo também sem entrar como administrador (su) porque o su já está incluido no comando de atualização, pois é, a gente enche o saco de ficar digitando apt-get (a vida inteira sim):

.

apt-get install aptitude -y

exit

su -c 'aptitude update'

.

DIGITO A SENHA DE ROOT

.

su -c 'aptitude full-upgrade'

.

Coloco alguns comandos juntos, só para ver o que acontece. Não posso esquecer que é a senha de root:

.

su -c 'aptitude update' ; su -c 'aptitude full-upgrade' ; su -c 'aptitude install -f'

.

IMPORTANTE:

Eu tenho que configurar o sudo. Para eu poder abrir o terminal e poder usar por exemplo o comando sudo apt update, enquanto eu não configurar o sudo não poderei usar.

.

Um terminal está atualizando o sistema, abro outro terminal pra esta outra tarefa. Qual tarefa?
.

CONFIGURAR O SUDO NO MEU DEBIAN 9
.

CONFIGURO O SUDO PARA O MEU USUÁRIO enquando o sistema está sendo atualizado com o comando abaixo:

su -c 'adduser nome-de-usuário sudo'

.

Qual é o nome de usuário? Se eu ao abrir o terminal encontrasse isto:
.

user@pc:~$

.
Para eu adicionar o sudo ao meu usuário o comando que eu usaria seria o abaixo:
.

su -c 'adduser user sudo'

.
Aperto a tecla Enter.

.

Espero a atualização do sistema acabar.

.
Encerro a sessão e volto ao sistema e reinicio o sistema com o comando:

.

su -c 'shutdown -r now'

.

Ou sendo o administrador do sistema:

su

shutdown -r now

  • CONFIGURANDO A SOURCES.LIST DO DEBIAN9 STRETCH

Posso fazer uma cópia de segurança com o comando abaixo:

mv /etc/apt/sources.list /etc/apt/sources.list.bkp

Instalo os os programas abaixo:

.

sudo apt-get install curl wget apt-transport-https dirmngr

.

Para gerar um souce list para mim eu vou em https://debgen.xyz/

.

Sigo estas instruções abaixo:

Comece escolhendo o país hospedeiro do seu espelho (mirror). O ideal é optar pelo que estiver mais próximo de você.

Em seguida, selecione o release e a arquitetura atual: stable, testing ou unstable (Sid).

Escolha os repositórios que te interessam entre source, contrib, non-free e security. Na dúvida, não faz mal selecionar todos.

Quando terminar a configuração, clique no botão azul “Make it go!“. O texto, acima do botão, irá mudar de acordo com as escolhas.

.

Agora eu edito o source.list do Debian 9 com o comando que usará o editor de texto disponivel no meu Debian 9 (gedit, pluma, leafpad, mousepad, nano e outros):

sudo pluma /etc/apt/sources.list

Abre-se o arquivo de texto sources.list. Apago tudo nele, colo o texto abaixo, salvo o texto e fecho o Pluma.

###################################################################
# Arquivo Sources.list#
###################################################################

deb http://ftp.br.debian.org/debian/ stable main contrib non-free
deb-src http://ftp.br.debian.org/debian/ stable main contrib non-free

deb http://ftp.br.debian.org/debian/ stable-updates main contrib non-free
deb-src http://ftp.br.debian.org/debian/ stable-updates main contrib non-free

deb http://security.debian.org/ stable/updates main contrib non-free
deb-src http://security.debian.org/ stable/updates main contrib non-free

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

>>OU POSSO USAR ESTA OUTRA SOURCE.LIST ABAIXO:

###################################################################
# Repositórios Oficiais #
###################################################################

deb http://ftp.br.debian.org/debian/ stretch main contrib non-free
# deb-src http://ftp.br.debian.org/debian/ stretch main contrib non-free

deb http://ftp.br.debian.org/debian/ stretch-updates main contrib non-free
# deb-src http://ftp.br.debian.org/debian/ stretch-updates main contrib non-free

deb http://security.debian.org/ stretch/updates main contrib non-free
# deb-src http://security.debian.org/ stretch/updates main contrib non-free

Debian Stretch Backports
# deb http://ftp.br.debian.org/debian stretch-backports main contrib non-free
# deb-src http://ftp.br.debian.org/debian stretch-backports main contrib non-free

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

Ao editar a source.list eu acabo de dizer ao sistema, para que ele busque os pacotes da distribuição ESTÁVEL, sem abrir mão de software mais recente (atualizado), incluindo os pacotes não livres.

Se estivesse usando o editor de texto nano eu salvaria o arquvo de texto com ctrl+O, enter, ctrl+X .

De volta a janela do terminal, eu executo os seguintes comandos para inserção da chave keyring e atualizar os mesmos. Tranquilo.

sudo aptitude update ; sudo aptitude install deb-multimedia-keyring ; sudo aptitude update

AÍ EU ATUALIZO O SISTEMA COM O COMANDO ABAIXO:

sudo aptitude update ; sudo aptitude full-upgrade

DEPOIS EU REINICIO O SISTEMA:

sudo shutdown -r now

Aperto enter e o sistema vai reinicializar. Quando reinicializa, eu volto para este meu tutorial. Há quem diga que eu gosto muito de reiniciar a máquina  e que não há necessidade alguma de tudo isto. Eu sou um estudante e deste jeito e estou fazendo com o meu sistema e com o meu hardware as minhas custas, depois de muitas instalações de Debian ainda me sinto bem fazendo isto, o que mais posso dizer?

ENTÃO, INSTALLO FIREWALL E SANDBOX:

sudo aptitude install gufw firejail seahorse ; sudo aptitude update

Como agora parece estar tudo funcionando bem na minha máquina não vejo necessidade de atualizar o Kernel. Mas se eu fosse atualizar, faria assim:

"Usar uma versão mais atual do seu kernel pode trazer benefícios, principalmente no suporte ao seu hardware.

Para saber quais versões do kernel estão disponíveis, uso o comando search como administrador":

su

Aperto enter e digito a senha.

aptitude search linux-image

Aparecerá algo parecido com isto no terminal:

i A linux-image-3.16.0-4-amd64 - Linux 3.16 for 64-bit PCs

p linux-image-3.16.0-4-amd64 dbg - Debugging symbols for Linux 3.16.0-4-amd64

p linux-image-4.4.0-1-grsec-amd64 - Linux 4.4 for 64-bit PCs, Grsecurity protection

p linux-image-4.5.0-0.bpo.2-amd64 - Linux 4.5 for 64-bit PCs

p linux-image-4.5.0-0.bpo.2-amd64-dbg - Debugging symbols for Linux 4.5.0-0.bpo.2-amd64
i linux-image-amd64 - Linux para computadores de 64 bits (meta-pacote)

p linux-image-amd64-dbg - Debugging symbols for Linux amd64 configuration (meta-package)

p linux-image-grsec-amd64 - Linux image meta-package, grsec featureset

"A sua lista pode ser diferente da minha, portanto tenha cuidado na sua escolha."

Se você tem dúvidas sobre o assunto, pesquise.

"No meu caso, para instalar o kernel 4.5, uso o seguinte comando":

aptitude install linux-image-4.5.0-0.bpo.2-amd64

"Quando você reiniciar o sistema, já estará usando o novo kernel.
Para se certificar disto, use o comando uname":

uname -r

Sobre a atualização do Kernel a fonte é:

https://elias.praciano.com/2016/05/o-que-fazer-depois-de-instalar-o-debian/

Agora eu começo a instalar programas e se tiver algum programa novo interessante que eu não conheço e fico sabendo eu pesquiso e instalo só pra ver se é útil para mim, desde que possa saber se é de boa procedência.

Primeiro eu posso instalo alguns codecs, mas antes eu posso instalar reprodutor de mídia e se a máquina reproduzir bem vídeo e música talvez não precise instalar codecs...

sudo apt install smplayer vlc clementine -y ; sudo apt update && sudo aptitude upgrade -y

TESTO MEDIA DE ÁUDIO E VÍDEO. NÃO VOU INSTALAR CODECS AGORA.

MAS SE FOSSE INSTALAR CODECS:

sudo aptitude install libavcodec-extra

sudo aptitude install gstreamer0.10-plugins-ugly gstreamer0.10-plugins-bad gstreamer0.10-fluendo-mp3 gstreamer0.10-pulseaudio

sudo aptitude install libgstreamer-perl libgstreamer-interfaces-perl

INSTALANDO OS PRIMEIROS PROGRAMAS

Os primeiros programas que eu geralmente instalo são Conky-manager, o reprodutor de midia VLC, o editor de texto Mousepad, o Fbreader, o mcomix, o comix, o Calibre, o Sigil, o youtube-dl, o cliente de email Thunderbird, os geradores de senha pwgen e makepasswd, para pacotes zip e rar instalo o unrar e o p7zip e p7zip-plugins. Para música instalo o Clementine. Para torrents instalo o Transmission. Meu navegador favorito já vem pré-instalado.

Eu JÁ INSTALEI o VLC usando aptitude ou o synaptic:

sudo aptitude install vlc ; sudo aptitude update

Assim que o VLC abrir já houve tempo que na primeira vez que eu tenho que ir em ferramentas → preferencias → Video e escolher em Saída a Saída de Vídeo do X11 (XCB) se não quando o VLC for reproduzir um vídeo ele fecha automaticamente pois a saída estava em automático. MAS DESTA VEZ NÃO PRECISO.

.

Tem como fazer coisas no Debian 9 sem usar o sudo? Parece que pelo que eu pesquisei tem sim. Achei este artigo interessante que mostra como fazer isto:

https://elias.praciano.com/2015/11/como-instalar-e-configurar-o-sudo-no-debian/

.

No Debian, usa-se o comando su - que serve para nos autenticar como superusuário no sistema.

Você precisa conhecer a senha do root, para usar o su.

Para se autenticar temporariamente como root e voltar, use o comando ‘su -c’. Veja um exemplo de como instalar o mpg123, no Debian:

.

su -c 'apt install mpg123'

.

Esta linha, faz com que o superusuário execute o comando entre aspas e depois devolva o prompt ao usuário atual.

.

Se eu quiser entender melhor as diferenças de uso entre o sudo e o su:

.

https://elias.praciano.com/2015/08/qual-a-diferenca-entre-su-e-sudo/

.

Para instalar o Conky-Manager os métodos ou são muitos ou mudam de tempos em tempos. Atualmente tento este:

.

Baixo o pacote .deb no site do Conky e instalo com o gdebi. Instalo programas que usarão os sensores da máquina pelo terminal com o comando abaixo:

sudo aptitude install curl lm-sensors hddtemp

.

Debian9-Stretch

Instalo o Mate Tweak no Debian 9 Mate, procuro o pacote .deb compatível baixo ele e instalo com o gdebi. Exemplo abaixo:

sudo apt-get update

sudo apt-get install gdebi

sudo gdebi mate-tweak_3.5.2a-1_all.deb

sudo apt-get update

sudo apt-get upgrade

  • Baixo o pacote .deb e instalo com o gdebi em:

http://ftp.br.debian.org/debian/pool/main/m/mate-tweak/mate-tweak_3.5.2a-1_all.deb

.

Abro o programa em Sistema >> Centro de Controle >> MATE Tweak. Com o MATE Tweak aberto configuro meu desktop. Fica do jeito que eu quero.

.

Bom, eu resolvo saber alguma coisa sobre a minha CPU. Eu vou usar o comando cat:

cat /proc/cpuinfo

O comando acima me diz o que eu quero saber sobre minha CPU.

.

Agora eu quero e vou instalar fontes extras com o comando abaixo:

sudo aptitude install ttf-freefont ttf-mscorefonts-installer ttf-bitstream-vera ttf-dejavu ttf-liberation

Talvez instalar Flash Plugin, Icedtea Plugin e Pepperflash Plugin com os comandos abaixo:

sudo aptitude install flashplugin-nonfree

.

sudo apt-get install icedtea-plugin

.

sudo aptitude install pepperflashplugin-nonfree

  • Instalo estes programas (sugestão) caso desinstale algum, é só voltar aqui e instalar novamente.

sudo aptitude update ; sudo aptitude install bleachbit gimp shotwell gparted gnome-disk-utility scratch geany musique transmission uget pinta smplayer wget liferea thunderbird gnugpg enigmail gedit gdebi dreamchess calibre comix mcomix fbreader youtube-dl musique p7zip unrar rar audacity thermald lm-sensors gconjugue firejail inkscape pinta mtpaint file-roller parcellite clementine chromium midori w3m fortune cowsay fortunes fortunes-br finger git bc links e-links ; sudo aptitude update ; sudo apt-get check ; sudo aptitude update ; sudo aptitude upgrade

.

Debian 9 - INSTALO A SUÍTE DE ESCRITÓRIO CALLIGRA

.

Calligra é programas para trabalho de escritório. É completa que nem o Libre Office. Muitos programas fazem parte do pacote.

Antes o Calligra era chamado de KOffice. O projeto mudou de nome mas continua sendo mantido pelo KDE. Uso o comando abaixo para instalar no Debian 9:

sudo apt install calligra -y ; sudo apt install -f ; sudo apt update && sudo apt full-upgrade -y

.

ICONES E TEMAS

.

Arc Icon Theme no Debian

.

  • Baixo primeiro o arquivo .deb Moka-Icon-Theme e instale com o Gdebi. Para isto visito esta página:

.

https://launchpad.net/~moka/+archive/ubuntu/daily/+packages

.

  • TALVEZ INSTALE MOKA-ICON-THEME VIA TERMINAL

Baixo Moka via terminal adicionando: wget

.

Depois, instalo com o comando: sudo dpkg -i

.

E instalo dependencias do Moka com: sudo apt-get install -f  (o arc icon-theme precisa do Moka icon-theme, acho eu)

.

Fica assim comandos separados por: " ; "

.

wget https://launchpad.net/~moka/+archive/ubuntu/daily/+files/moka-icon-theme_5.3+r470~daily~ubuntu15.10.1_all.deb -O moka.deb ; sudo dpkg -i moka.deb ; sudo apt-get install -f

.

ICONES NUMIX

sudo su -

senha e enter copie e cole

apt-get update ; apt-get install git ; mkdir numix; cd numix && git clone https://github.com/cldx/numix-gtk-theme && git clone https://github.com/numixproject/numix-icon-theme && git clone https://github.com/numixproject/numix-icon-theme-circle && mv numix-gtk-theme /usr/share/themes && mv numix-icon-theme/Numix/ /usr/share/icons && mv numix-icon-theme-circle/Numix-Circle/ /usr/share/icons; cd - && rm numix -rf

.

INSTALO ÍCONE E TEMA XENLISM WILDFIRE

.

sudo apt-key adv --keyserver keys.gnupg.net --recv-keys 90127F5B

echo "deb http://downloads.sourceforge.net/project/xenlism-wildfire/repo deb/" | sudo tee -a /etc/apt/sources.list

sudo apt-get update

sudo apt-get install xenlism-wildfire-icon-theme

sudo apt-get install xenlism-artwork-wallpapers

.

LENDO LIVROS E QUADRINHOS NO DEBIAN.

sudo apt-get update ; sudo apt-get install calibre fbreader comix mcomix qcomicbook cbrpager ; sudo apt-get install -f ; sudo apt-get update ; sudo apt-get upgrade

CALIBRE, INSTALAÇÃO BINÁRIA

sudo -v && wget -nv -O- https://raw.githubusercontent.com/kovidgoyal/calibre/master/setup/linux-installer.py | sudo python -c "import sys; main=lambda:sys.stderr.write('Download failed\n'); exec(sys.stdin.read()); main()"

Para administrar arquivos torrent uso o Transmission. Tem muitos outros mas acho o Transmission o melhor atualmente. Comando abaixo:

sudo apt install transmission -y ; sudo apt update

INSTALANDO E HABILITANDO O FIREWALL

INSTALE

FIREWALL

.

sudo su

apt-get install ufw gufw ; apt-get install -f

Adiciono deny rule ao firewall.

ufw default deny

Ative o Firewall:

ufw enable

Verifico o status do firewall:

ufw status

ufw status verbose

.

exit

.

INSTALO KEEPASS2

Proteja suas senhas com Keepass2

sudo apt-get install keepass2 keepass2-doc mono-dmcs xdotool libgluezilla -y ; sudo apt-get install -f ; sudo apt-get update ; sudo apt-get upgrade

UM BREVE RESUMO SOBRE COMO UTILIZAR O KEEPASS2

O KeePass é um software de gerenciamento de senhas open source e multi plataforma (essas duas palavras já fazem falar bem dele), porém, não só isso, ele é extremamente seguro, trabalha com algoritmos de criptografia de alto nível (como AES 256 e Twofish), tem suporte a diversas extensões que nos ajudam em alguns trabalhos etc. O primeiro passo para começar a utilizar o programa é instalá-lo em seu computador com foi ensinado acima. Após instalá-lo, você deverá abri-lo, caso seja seu primeiro acesso ao programa, ele abrirá uma janela. Após abri-lo, clique em "New" para criar um novo "banco de dados" para armazenar sua senha. Feito isso, abrirá uma janela, você deverá salvar como o nome que lhe desejar. Após salvar, ele irá mostrar uma tela para que você digite uma senha e/ou que você crie/use um arquivo como senha. Pode utilizar apenas a senha mesmo, mas vai do gosto do freguês. Caso você queira ver a senha digitada, basta clicar no ícone com as reticências que ele irá lhe mostrar. Nesta nova janela que será mostrada, você terá acesso as opções separadas por abas. Geralmente só modificar o nome do banco de dados e a descrição na primeira aba, já satisfaz, então, deem uma olhada antes de criar o arquivo. Após criado o banco de dados, lhes será apresentada outra tela, nela você tem no campo esquerdo "Abas", com os nomes dos grupos padrões (que podem ser renomeados ou deletados). Ao selecionar o item "Banco", ou seja, lá qual o nome que você deu a ele, irá aparecer ao centro todos os itens cadastrados. Após isso, crie um novo grupo ou vá em um dos já criados e crie uma nova entrada clicando no grupo que deseja, e com o botão na área central. Na nova entrada, preencha como achar melhor. No campo "Notas", o item mais interessante em minha opinião, você pode fazer uma mini documentação para caso dê problema no servidor. Você terá uma ideia do que irá encontrar, como por exemplo os serviços, IP padrão da maquina etc. Após concluir tudo, é só salvar o arquivo e levar para onde quiser (movê-la para o Smartphone, tablet etc).

Este software ajuda muito, não só na gerência das senhas, mas servindo também como uma mini documentação, de forma que não fique mais perdido com os servidores.

JOGOS - GAMES - existem muitos jogos entre eles, tem estilo Arcade (games retro) para jogar tem por enquanto uns 300 jogos Arcade todos gratuitos.

Existe o Steam para Debian Linux e o PlayonLinux, que junto com o programa Wine, serve para rodar games do Windows no Debian.

sudo apt-get install pingus flightgear neverball pychess gnome-chess frozen-bubble ; sudo apt-get install -f ; sudo apt-get update ; sudo apt-get upgrade ; sudo apt-get install -f

.

VERIFICANDO SE O COMPUTADOR ESTÁ INFECTADO:

Chkrootkit Software

Chkrootkit – chkrootkit ferramente que checa sinal de rootkit. Para instalar:

sudo apt-get install chkrootkit ; sudo apt-get install -f

PROCURO POR ROOTKITS:

sudo chkrootkit

VERIFICANDO SE O COMPUTADOR ESTÁ INFECTADO USANDO O RKHUNTER SOFTWARE:

rkhunter - rkhunter (Rootkit Hunter) ferramenta Unix-based que busca rootkits, backdoors e possiveis local exploits.

Rkhunter busca por rootkits e malware. Também verifica se comandos foram modificados, se o system startup files foi modificado, e various checks na interface de rede, verifica também por listening applications. Para instalar rkhunter digite:

sudo apt-get install rkhunter ; sudo apt-get install -f

COLOCO O RKHUNTER PARA TRABALHAR:

sudo rkhunter --check (dois tracinhos antes do check)

Verifico se existe rkhunter update:

sudo rkhunter --update

PROBLEMAS COM O RELÓGIO DO SISTEMA? UM TÉCNICO ABRE E TROCA ALGUMA COISA DO HARWARE DEPOIS O SISTEMA FICA COM O HORÁRIO ERRADO. DÁ PROBLEMA PARA NAVEGAR ENTRE OUTRAS COISAS.

sudo apt-get install ntp ; sudo apt-get install -f

sudo su

DIGITO A SENHA. DEPOIS EXECUTO O COMANDO ABAIXO:

ntpdate pool.ntp.br

EXEMPLO DO RESULTADO:

# 21 Nov 19:21:24 ntpdate[32349]: the NTP socket is in use, exiting

SOBRE SANDBOX FIREJAIL:

Firejail Sandbox - Proteja seus aplicativos que entram em contato com a rede usando a sandbox chamada Firejail. O jeito mais fácil que conheço é instalar o pacote .deb do firejail usando Gdebi.

Link para baixar o pacote .deb (exemplo)

https://sourceforge.net/projects/firejail/files/firejail/firejail_0.9.42_1_amd64.deb/download

SE O FIREJAIL ESTÁ NOS REPOSITÓRIOS DEBIAN, É SÓ EXECUTAR OS COMANDOS ABAIXO:

sudo su

apt-get update ; apt-get install firejail ; apt-get install firetools ; apt-get install -f

DEPOIS APLICO ESTE COMANDO ABAIXO NO TERMINAL:

.

sudo apt-get update ; 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 aptitude update

CONFIGURAR O RELÓGIO DIGITAL DO DEBIAN LXDE

Para configurar o relógio digital, com o botão direito do mouse > em cima das horas > clique em: configurações de "relógio digital".

%A, %E de %B de %Y - %H:%M:%S

OU:

%A, %e de %b de %Y - %H:%M:%S

OU:

%a %e %b %Y - %H:%M

TEAMVIEWER - AMD64

wget http://download.teamviewer.com/download/teamviewer_amd64.deb -O teamviewer.deb ; sudo dpkg -i teamviewer.deb ; sudo apt-get install -f

PARA REMOVER O TEAMVIEWER

sudo apt-get remove teamviewer ; sudo apt-get autoremove

INSTALO CONKY-MANAGER:

Baixo neste Link:

https://dl.dropbox.com/u/67740416/linux/conky-manager-latest-amd64.deb?dl=1

INSTALO
GRUB-CUSTOMIZER

.

wget https://launchpad.net/~danielrichter2007/+archive/ubuntu/grub-customizer/+files/grub-customizer_5.0.6-0ubuntu1~ppa1x_amd64.deb -O grub-customizer.deb ; dpkg -i grub-customizer.deb ; apt-get install -f

PARA DESINSTALAR

apt-get remove grub-customizer ; apt-get autoremove

Programas que instalam em quase todos os sistemas Linux inclusive o Debian9

.

INSTALAR O TOR-BROWSER NO DEBIAN9

Removo qualquer coisa previamente instalada:

sudo rm -Rf /opt/tor-browser*

sudo rm -Rf /usr/bin/tor-browser

sudo rm -Rf /usr/share/applications/torbrowser.desktop

Vou no site oficial do Tor Browser (https://www.torproject.org/) baixo o pacote para Linux, confiro a integridade do pacote, movo ele para a pasta Home e renomeio o pacote de:

tor-browser.tar.xz

Abro o terminal.  Verifico se o pacote está na pasta Home com o comando ls então digito os comandos abaixo:

sudo tar -xvJf tor-browser.tar.xz -C /opt/

sudo mv /opt/tor-browser*/ /opt/tor-browser

sudo ln -sf /opt/tor-browser/Browser/start-tor-browser /usr/bin/torbrowser

echo -e '[Desktop Entry]\n Version=1.0\n Name=torbrowser\n Exec=/opt/tor-browser/Browser/start-tor-browser\n Icon=/opt/tor-browser/Browser/icons/updater.png\n Type=Application\n Categories=Application' | sudo tee /usr/share/applications/torbrowser.desktop

  • OBS:
    Vejo que existe [Desktop Entry], Version, Name, Exec, Icon, Type, Categories. Estes sete itens devem ser informados ao sistema pelo administrador. As informações formecidas variam de programa para programa.

Continuando, eu executo os comandos abaixo:

sudo chmod +x /usr/share/applications/tor-browser.desktop

cp /usr/share/applications/tor-browser.desktop ~/Área\ de\ Trabalho/

Agora, para abrir pelo terminal digito:

/opt/tor-browser/Browser/start-tor-browser

INSTALO O TELEGRAM NO DEBIAN9

Removo qualquer coisa previamente instalada:

sudo rm -Rf /opt/telegram*

sudo rm -Rf /usr/bin/telegram

sudo rm -Rf /usr/share/applications/telegram.desktop

.

Vou no site oficial do TELEGRAM (https://telegram.org/) baixo o pacote para Linux, confiro a integridade do pacote, movo ele para a pasta Home e renomeio o pacote de:

.

telegram.tar.xz

.

Executo os comandos abaixo:

.

sudo tar Jxf telegram.tar.xz -C /opt/

sudo mv /opt/Telegram*/ /opt/telegram

sudo ln -sf /opt/telegram/Telegram /usr/bin/telegram

echo -e '[Desktop Entry]\n Version=1.0\n Exec=/opt/telegram/Telegram\n Icon=Telegram\n Type=Application\n Categories=Application;Network;' | sudo tee /usr/share/applications/telegram.desktop

.

OBS:
Vejo que existe [Desktop Entry], Version, Name, Exec, Icon, Type, Categories. Estes sete itens devem ser informados ao sistema pelo administrador. As informações formecidas variam de programa para programa.

.

Continuando, eu executo os comandos abaixo:

sudo chmod +x /usr/share/applications/telegram.desktop

cp /usr/share/applications/telegram.desktop ~/Área\ de\ Trabalho/

.

INSTALO O POPCORN-TIME

Removo qualquer coisa previamente instalada:

sudo rm -Rf /opt/popcorntime

sudo rm -Rf /usr/bin/Popcorn-Time

sudo rm -Rf /usr/share/applications/popcorntime.desktop

Vou no site oficial, baixo o pacote para Linux, confiro a integridade do pacote, movo ele para a pasta Home e renomeio o pacote para:

popcorntime.tar.xz

Executo os comandos abaixo:

sudo mkdir /opt/popcorntime

sudo tar Jxf popcorntime.tar.xz -C /opt/popcorntime/

sudo ln -sf /opt/popcorntime/Popcorn-Time /usr/bin/Popcorn-Time

echo -e '[Desktop Entry]\n Version=1.0\n Name=popcorntime\n Exec=/opt/popcorntime/Popcorn-Time\n Icon=/opt/popcorntime/src/app/images/icon.png\n Type=Application\n Categories=Application' | sudo tee /usr/share/applications/popcorntime.desktop

  • Vejo que existe [Desktop Entry], Version, Name, Exec, Icon, Type, Categories. Estes sete itens devem ser informados ao sistema pelo administrador. As informações formecidas variam de programa para programa.

Continuando, eu executo os comandos abaixo:

sudo chmod +x /usr/share/applications/popcorntime.desktop

cp /usr/share/applications/popcorntime.desktop ~/Área\ de\ Trabalho/

Agora é digitar:

/opt/popcorntime/Popcorn-Time

E apertar a tecla TAB

.

Debian 9 - Stretch - Instalo Steam - para jogar games

Habilito suporte 32-bit e instalo o Steam com os comandos abaixo:

sudo su

dpkg --add-architecture i386

apt update && apt upgrade

apt install steam

Eu já tenho o ótimo navegador Firefox instalado no Debian 9 Stretch, mas eu quero instalar também o Google Chrome. Vou ao site oficial do Google Chrome e baixo o pacote .deb do Google Chrome e instalo com o instalador gdebi.

Gosto de gerenciar meus e-mails através do Thunderbird. Para instalar ele, uso os comandos abaixo:

sudo su

apt install aptitude -y

apt update

aptitude install thunderbird -y

aptitude update && aptitude full-upgrade -y

exit

.

Sugestão de programas, icones, etc... para eu talvez instalar no meu Debian 9

.

sudo apt-get install shotwell shutter viewnior gsfonts gsfonts-x11 git git-core unace rar unrar zip p7zip p7zip-rar sharutils libbluray-bdj gstreamer1.0-fluendo-mp3 gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly libmp4v2-2 vlc libdvdcss2 audacity dreamchess pitivi supertux gcompris filezilla winff pinta inkscape gimp gimp-plugin-registry gimp-data-extras ; sudo apt update && sudo apt full-upgrade

Paper icon theme

apt-get update ; apt-get install git ; mkdir paper; cd paper && git clone https://github.com/snwh/paper-icon-theme.git && git clone https://github.com/snwh/paper-icon-theme && git clone https://github.com/snwh/paper-icon-theme && mv paper-icon-theme /usr/share/themes && mv paper-icon-theme/Paper/ /usr/share/icons && mv paper-icon-theme/paper-icon-theme/ /usr/share/icons; cd - && rm paper -rf

Ou use o método abaixo:

Baixe o pacote .deb no link abaixo

https://snwh.org/paper/download.php?owner=snwh&ppa=pulp&pkg=paper-icon-theme,16.04

Abra o terminal onde está o arquivo ou instale com o instalador gdebi. Pelo terminal, abra o terminal onde descompactou o arquivo e use os comandos abaixo:

sudo su

dpkg -i paper*.deb

apt-get install -f

exit

.

Debian 9, 2017 instalando o Selene conversor de video

.

Quero converter arquivos multimídia de diferentes formatos.

.

Primeiro faço uma busca para ver se selene existe nos repo do Debian, com o comando abaixo:

.

sudo apt search selene

.

Para instalar:

.

sudo aptitude install selene -y ; sudo aptitude update && sudo aptitude full-upgrade -y ; sudo apt install -f

.

Selene é uma ferramenta de conversão de mídia, que usa GTK3/Vala.

.

Para eu encodar no formato AAC/MP4, o programa precisa do encoder NeroAAC, é instalar fazendo o seguinte:

.

Vou para a pasta tmp;
.

cd /tmp

.

Baixo o arquivo de instalação do encoder com o comando:

.

wget http://ftp6.nero.com/tools/NeroAACCodec-1.5.1.zip

.

Descompacto o arquivo baixado usando o comando abaixo:

.

unzip -j NeroAACCodec-1.5.1.zip linux/neroAacEnc

.

Executo o instalador, com este comando:

.

sudo install -m 0755 neroAacEnc /usr/bin

.

Para finalizar, executo o comando abaixo:

.

sudo apt install gpac

.

cd

.

sudo apt update ; sudo apt full-upgrade -y ; sudo apt install -f ; sudo dpkg --configure -a

.

>> ACABOU A LUZ DURANTE UM UPDATE OU INSTALAÇÃO DE SOFTWARE, PROBLEMAS... ETC...

sudo su

dpkg --configure -a ; apt-get check && apt-get install -f && apt-get update && apt-get upgrade && apt-get dist-upgrade ; apt-get install -f

exit

Bom, é isto. Fico por aqui. Espero que estas anotações te ajudem o tanto quando são úteis para mim. Por favor, mantenha-se conectado. Volte sempre. Dicas e sugestões são muito bem vindas. Doe da maneira que puder.

Até Breve.

:)

.

KORORA 25-GUIA-POS-INSTALACAO

korora2

2017-JUNHO-KORORA_25-GUIA-POS-INSTALACAO

KORORA 25-GUIA-POS-INSTALACAO

Bonito e funcional o Korora 25 vem do Fedora. É adequado a iniciantes. Poderoso e flexivel, atende tudo o que um expert precisa. Baixa arquivos binários e pacotes fonte usando o dnf da mesma forma que o Fedora e todos os comandos do Fedora são utilizáveis no Korora. O Korora é o Fedora com todas as facilidades que o Fedora não oferece atualmente. Eu não experimentei nenhum problema, travamento ou bug ao utilizar o Korora 25. Achei o Korora 25 muito bom. A instalação deve ser feita usando pendrive de boot. Por DvD não é recomendado.

O Korora 25 funciona bem com multiplos monitores. Vem com um monte de aplicativos e codecs já pré instalados. O Korora poupa todo o trabalho de pós-instalação exigido pelo Fedora. O Korora poupa um bom tempo vindo pronto pra uso imediato. Enfim é puro Fedora, mas, sem a parte chata.
O ambiente do Korora é o XFCE. Leve, o XFCE roda tranqüilo em tudo quanto é tipo de máquina.

korora3

VISITE E BAIXE O KORORA 25 – 🙂

 

https://kororaproject.org/
https://kororaproject.org/download

 

.

O PRIMEIRO COMANDO A SER USADO É PARA ATUALIZAR REPOSITÓRIOS E FAZER UPGRADE DO COMPUTADOR:

 

.
sudo dnf update && sudo dnf upgrade -y

.
Comandos dnf básicos:

 

Atualização e upgrade:
sudo dnf update
sudo dnf upgrade

 

Instalação:

sudo dnf install nome_do_programa

 

Busca:

sudo dnf search

 

Remoção:
sudo dnf remove nome_do_programa

 

CONFIGURAR POWER MANAGER (GERENCIADOR DE ENERGIA) – DEFINIR O COMPORTAMENTO DO MONITOR. ESTA FUNÇÃO ESTÁ NAS CONFIGURAÇÕES.

 

CONFIGURAR SCREENSAVER – DEFINIR O COMPORTAMENTO DO MONITOR. ESTA FUNÇÃO ESTÁ NAS CONFIGURAÇÕES.

 

JÁ VEM COM O FIREWALL INSTALADO E ATIVADO.
JÁ VEM COM O VLC INSTALADO.

E POSSUI VÁRIOS OUTROS PROGRAMAS EXTREMAMENTE ÚTEIS.

.
INSTALAR GERENCIADOR DE SENHAS SEAHORSE
sudo dnf install seahorse

.
APÓS A EXECUÇÃO DO COMANDO ACIMA. EU FAÇO O REBOOT DA MÁQUINA COM O COMANDO ABAIXO:
sudo shutdown -r now

.
VOLTANDO AO TUTORIAL, ABRINDO O CENTRO DE CONTROLE EM VISUAL E COMPORTAMENTO ATUALIZAREI O PACOTE DE IDIOMAS CLICANDO NO ICOME IDIOMAS E SEGUINDO AS INDICAÇÕES ATUALIZO OS IDIOMAS.

 

.

AGORA VOU INSTALAR MAIS EDITORES DE TEXTO.
sudo dnf install gedit mousepad vim bluefish nano ed -y ; sudo apt update

.

AGORA INSTALO OS PROGRAMAS QUE ACHO MAIS INTERESSANTES NO MUNDO LINUX ATUALMENTE. ALGUNS EU PRECISO BASTANTE, OUTROS SÓ DE VEZ EM QUANDO E OUTROS QUERO APENAS CONHECER E VER COMO FUNCIONAM E SE FUNCIONAM BEM.

.

FAZ UM TEMPO, DECIDI QUE MINHA RELAÇÃO COM COMPUTADORES SERIA SIMPLES USANDO PROGRAMAS SIMPLES.

.
COISAS PARA USO NO DIA A DIA.

ABRO MÃO DE CERTAS TECNOLOGIAS QUE APRISIONAM, PARA TER LIBERDADE E TECNOLOGIA.

 

O LINUX É APENAS O KERNEL. O KERNEL PERMITE QUE A MÁQUINA SE COMUNIQUE COM OS PROGRAMAS. ENTENDO QUE POR EXEMPLO, O KORORA, O FEDORA, O UBUNTU, O MANJARO, O DEBIAN E O ANDROID SÃO CONSTRUÍDOS SOBRE O KERNEL.

.

A MAIOR PARTE DO SERVIÇO, DEPENDE NÃO DA MÁQUINA, MAS DA PESSOA E DO QUE A PESSOA ESTA PENSANDO EM FAZER.

.
É UMA QUESTÃO DE MÉRITO.

.
OU VOCÊ ESTUDA E APRENDE A FAZER O QUE PRECISA SER FEITO BEM FEITO OU VOCÊ NÃO ESTUDA, NÃO APRENDE NADA E PAGA (CARO) PARA ALGUÉM FAZER DE QUALQUER JEITO, COISAS RELATIVAMENTE SIMPLES PARA VOCÊ.

.
CLARO QUE UM PRESTADOR DE SERVIÇO PODE SE APROVEITAR DA SUA IGNORÂNCIA DE UM MODO NEGATIVO. FAZER O QUE? É O GANHA-PÃO DA PESSOA. ESTA PESSOA ESTUDOU ALGUMA COISA.

.
SALVO NO MUNDO LINUX, QUASE NINGUÉM ENSINA O QUE SABE DE GRAÇA. NINGUÉM DÁ PROGRAMA DE GRAÇA.

AS DISTRIBUIÇÕES LINUX DE HOJE EM DIA, SÃO DIFERENTES.

AS DISTRIBUIÇÕES LINUX OFERECEM SIM PROGRAMAS GRATUITAMENTE E MUITOS DESTES PROGRAMAS SÃO EXCELENTES.  EU OUÇO MUSICA, ESCREVO, LEIO, ASSISTO VÍDEOS, TRABALHO COM IMAGENS, GRAVO, EDITO, FAÇO BACKUPS, CONVERTO ARQUIVOS E ADMINISTRO MEU SISTEMA OPERACIONAL COM PROGRAMAS LINUX E NUNCA TIVE QUE PAGAR NADA POR ELES.

AS PESSOAS TENDEM A DESPREZAR TODO O TIPO DE ENSINAMENTO GRATUITO POR ACREDITAREM PIAMENTE QUE NÃO EXISTE NADA DE GRAÇA NESTE MUNDO. TALVEZ ELAS ESTEJAM CERTAS. QUEM SOU EU PARA DIZER O QUE É CERTO E O QUE É ERRADO.

 

 

INSTALANDO PROGRAMAS:
sudo dnf install cowsay figlet w3m w3m-img links elinks youtube-dl -y ; sudo apt update && sudo dnf upgrade ; sudo dnf install smplayer gaupol subdownloader clementine musique pinta inkscape gimp fbreader calibre sigil shutter fotoxx mcomix gparted preload geany vim qbittorent leafpad midori retext aria2 git uget -y ; sudo dnf update

 

 

PARA AUMENTAR A VIDA UTIL DA BATERIA:
sudo dnf install tlp powertop ; sudo service tlp start

.
O KORORA JÁ VEM COM OS ÍCONES NUMIX INSTALADOS. SE FOSSEM DESINSTALADOS, PARA REINSTALAR EU FARIA ASSIM:
sudo dnf copr -y enable numix/numix
sudo dnf install numix-icon-theme numix-icon-theme-circle numix-gtk-theme

 

.

ARQUIVOS COMPACTADOS GERENCIADORES

 

sudo dnf install p7zip p7zip-plugins lzip cabextract unrar

 

.

CONKY-MANAGER

 

.

VERIFIQUE SE ESTÁ NOS REPOSITÓRIOS
sudo dnf search conky-manager

 

.

INSTALE

 

sudo dnf install conky-manager

 

.
INSTALAR PLAYER QMPLAY2 – POR QUE?

.

FAZ DOWNLOAD, TOCA RADIO E MAIS

 

.

COMANDOS QMPLAY2:

Próximo → B
Anterior → Z
Aumentar vol → *
Baixar vol → /
Mudo → M
Pausar → barra de espaço
Alterar o tamanho da imagem → A
Visão compacta → alt+V

 

.

PARA INSTALAR O QMPLAY2

 

sudo dnf install qmplay2

.

INSTALO O FEDY NO KORORA 25 USO O COMANDO ABAIXO:
curl https://www.folkswithhats.org/installer | sudo bash

.
INSTALO O YUMEX

.

QUEM NÃO SABE QUE NEM EU USAR LINHAS DE COMANDO PARA O TERMINAL DO LINUX, O TAL DE BASH, INSTALE O YUMEX QUE VAI AJUDAR MUITO MESMO PORQUE ELE FAZ O SERVIÇO DO TERMINAL USANDO UMA INTERFACE GRÁFICA.
$ sudo dnf install amrnb amrwb faad2 flac ffmpeg gpac-libs lame libfc14audiodecoder
$ sudo dnf install yumex-dnf ; sudo dnf update

 

.
VERIFICO SE O AMBIENTE DE TRABALHO JÁ NÃO VEIO COM O YUMEX INSTALADO.

 

.

SYNAPTIC – HÁ QUEM ODEIE O SYNAPTIC, DEPOIS DE UM TEMPO ENTENDEMOS ELE, AÍ A GENTE PASSA A GOSTAR. É SÓ NÃO INSTALAR COISAS QUE DESCONHECE OU INCOMPATÍVEIS COM O AMBIENTE DE TRABALHO ESCOLHIDO. TEM QUE PEGAR LEVE.

 

.

sudo dnf install synaptic ; sudo dnf update

 

.

POSTINSTALLERF

 

.

INSTALE FACILMENTE SOFTWARES COM O POSTINSTALLERF – ESTE, ASSEMELHA-SE AO FEDY POR INSTALAR TAMBÉM DE MODO GRÁFICO PROGRAMAS QUE NÃO ACHAMOS BUSCANDO PELO TERMINAL OU NO SYNAPTIC NEM NO YUMEX.

 

.

sudo dnf -y install wget
sudo rpm –import https://raw.githubusercontent.com/kuboosoft/postinstallerf/master/GPG/$(rpm -E %fedora)/RPM-GPG-KEY-postinstallerf
sudo wget -c -P /etc/yum.repos.d/ https://raw.github.com/kuboosoft/postinstallerf/master/postinstallerf.repo
sudo dnf clean metadata
sudo dnf -y install postinstallerf

 

.

COM O YUMEX, SYNAPTIC, FEDY E POSTINSTALLER, SABENDO O NOME, PODE INSTALAR DE MODO GRÁFICO E FÁCIL USANDO YUMEX, SYNAPTIC, FEDY E POSTINSTALLER.

QUANDO ALGUÉM QUISER SABER SOBRE PROGRAMAS NOVOS, PODE VISITAR SITES LINUX E SABER O NOME DE PROGRAMAS, O QUE ELES FAZEM E INSTALAR.

BASTANTE COISA BOA TEREI USANDO O YUMEX, SYNAPTIC, FEDY E POSTINSTALLER.

COM O POSTINSTALER E O FEDY EU NÃO PRECISO DE FORMA ALGUMA DE CENTRAL DE PROGRAMAS. TEM TANTOS ÓTIMOS PROGRAMAS QUE PARECE UMA FESTA PARA QUEM PRECISA E GOSTA DE FAZER COISAS INCRÍVEIS COM SUA MÁQUINA. ESTES DOIS, SOMADOS AO YUMEX E O SYNAPTIC ME DEIXAM SEM ELOGIOS SUFICIENTES PARA FALAR BEM DO ÓTIMO E FLUIDO KORORA 25.

 

.

SE EU QUERO REMOVER UM REPOSITÓRIO DO FEDORA EU FAÇO ASSIM:

.

sudo su
OU:
su –

.

APERTO ENTER E DIGITO A SENHA.

SE ESTIVER USANDO…

.

Se estiver usando Gnome colo o texto abaixo no terminal:

nautilus /etc/yum.repos.d

.
Se estiver usando KDE colo o texto abaixo no terminal:

dolphin /etc/yum.repos.d

.
Se estiver usando XFCE colo o texto abaixo no terminal:

thunnar /etc/yum.repos.d

.

Se estiver usando LXDE colo o texto abaixo no terminal:

pcmanfm /etc/yum.repos.d

.

Se estiver usando Mate colo o texto abaixo no terminal:

caja /etc/yum.repos.d

.
E DELETO O ARQUIVO .repo CORRESPONDENTE AO REPOSITÓRIO QUE DESEJO DESABILITAR.

 

.

NUMIX ICONES E TEMA, ARC ICONES E TEMA

sudo dnf install numix-icon-theme numix-icon-theme-circle numix-icon-theme-square

 

.

GERADOR DE SENHAS AUTOMÁTICO

sudo dnf install pwgen makepasswd

.
XFBURN

Gravador de DvD fácil e eficiente JÁ VEM INSTALADO NO kORORA.

sudo dnf install xfburn

.
QBITTORRENT e DELUGE

 

.

PARA BAIXAR ARQUIVOS USANDO TORRENT

 

sudo dnf install qbittorrent deluge

 

.

VIRTUALBOX

TESTAR, TRABALHAR USAR SISTEMAS OPERACIONAIS EM MÁQUINAS VIRTUAIS.

ANTES DE INSTALAR O VIRTUALBOX…
gedit /etc/yum.repos.d/virtualbox.repo
COLE O TEXTO ABAIXO NO ARQUIVO QUE SE ABRIR, SALVE E FECHE.
[virtualbox]
name=Fedora $releasever – $basearch – VirtualBox
baseurl=http://download.virtualbox.org/virtualbox/rpm/fedora/$releasever/$basearch
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://www.virtualbox.org/download/oracle_vbox.asc

 

.

AGORA PODE INSTALAR O VIRTUALBOX COM O COMANDO ABAIXO.
sudo dnf install Virtualbox

 

.

TALVEZ NEM TODOS OS GAMES SEJAM ADEQUADOS A TODOS OS AMBIENTES DE TRABALHO, ENTÃO REMOVA OS NOMES QUE O TERMINAL NÃO ACEITAR E INSTALE O QUE O AMBIENTE DE TRABALHO ACEITA. O VOLUME DE DOWNLOAD PODE SER GRANDE, ENTÃO PODE INSTALAR UM A UM E VERIFICAR O TAMANHO DE CADA GAME ANTES DE CONFIRMAR A INSTALAÇÃO. ESTES GAMES SELECIONADOS ABAIXO SE FOREM INSTALADOS TODOS DARÃO MAIS DE 1GB DE DOWNLOAD. O OPENARENA CREIO SER O MAIOR. TENDO POUCA VELOCIDADE DE INTERNET INSTALE OS JOGOS MENORES.

 

.

sudo dnf install btanks wormux warmux bzflag openarena tremulous xonotic freedink scummvm bsd-games freedroid scorched3d xscorch tecnoballz neverball crossfire freeciv gnugo qascade netpanzer gweled pacman pychess gnome-chess

.
sudo dnf install sugar-castle scratch childsplay scummvm sdlhack bsd-games

.
STEAM

.

# dnf config-manager –add-repo=http://negativo17.org/repos/fedora-steam.repo

 

# dnf install steam

.
ENDLESS SKY

.

# dnf install endless

.

Certifique-se de usar o manual do jogador e bom vôo!

.

 

DROPBOX

 

sudo dnf install dropbox

 

.
NOMES DE APLICATIVOS QUE TALVEZ POSSAM SER INSTALADOS. É INTERESSANTE SABER O QUE CADA UM FAZ. SE QUISER PESQUISE.

.

inkscape deluge qbittorrent uget calibre gimp pinta thunderbird firefox libreoffice enigmail filezilla neverball dreamchess cheese audacity smplayer k3b xfburn minitube xboard pyches gnome-chess brutalchess dreamchess gparted vim shutter scribus youtube-dl pavucontrol winff gparted wps-office libreoffice synaptic cheese guvcview tlp conky-manager vlc smplayer musique gedit pluma mousepad leafpad preload

.
MUSIC PLAYER – TOMAHAWK

REPRODUTOR DE MÚSICA TOMAHAWK

.

$ sudo dnf update ; sudo dnf install tomahawk

.

O KORORA JÁ VEM CONFIGURADO PARA A LINGUAGEM ESCOLHIDA. MAS SE EU FOSSE RECONFIGURAR O SISTEMA EM PORTUGÊS DO BRASIL.

 

$ sudo dnf install system-config-language && system-config-language

.
VAI ABRIR UMA JANELA PARA ESCOLHER O IDIOMA. ESCOLHO:

 

PORTUGUESE (BRASIL)

.

PODE SER QUE O SISTEMA PEÇA DOWNLOAD DA LÍNGUA, CLICA EM OK .

INSTALANDO O SPOTIFY NO KORORA

.
HABILITO REPOSITÓRIO
sudo dnf config-manager –add-repo=http://negativo17.org/repos/fedora-spotify.repo

.
INSTALO:
sudo dnf install spotify-client

.

RESOLVENDO ESCALA DO SPOTIFY:
sudo gedit /usr/share/applications/spotify.desktop

.
PROCURO PELA LINHA QUE COMEÇA COM “Exec=” MUDANDO O SEGUINTE:
Exec=spotify –force-device-scale-factor=1.5 %U

.

FECHO TUDO E REINICIO A MÁQUINA.

.

INSTALO ATOM – EDITOR DE TEXTO – IDE
sudo dnf copr -y enable mosquito/atom

sudo dnf install atom

 

.

O KORORA JÁ VEM COM WEB PLUGINS JAVA MAS SE DESINSTALASSE E FOSSE REINSTALAR, FARIA ASSIM:
sudo dnf install java-openjdk icedtea-web

 

.

O Korora é um ótimo sistema para se utilizar no dia a dia. Quem gostaria de conhecer o Fedora sem complicações, pode tem uma ótima experiência usando o Korora 25.

.

VIRTUALBOX – DICA TESTADA NO FEDORA 24 E FEDORA 25 WORKSTATION COM DESKTOP GNOME 3, AMBOS DE 64 BITS.

.

ANTES DE INSTALAR O VIRTUALBOX… ABRO O TERMINAL E:
gedit /etc/yum.repos.d/virtualbox.repo

.
COLO O TEXTO ABAIXO NO ARQUIVO QUE SE ABRIR, SALVO E FECHO.
[virtualbox]
name=Fedora $releasever – $basearch – VirtualBox
baseurl=http://download.virtualbox.org/virtualbox/rpm/fedora/$releasever/$basearch
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://www.virtualbox.org/download/oracle_vbox.asc

 

.

ATUALIZO O SISTEMA, ABRO UM TERMINAL E TECLO:

$ sudo dnf update

$ sudo dnf install binutils gcc make patch libgomp glibc-headers glibc-devel kernel-headers kernel-devel dkms

.

IMPORTO A CHAVE PÚBLICA DA ORACLE COM:

$ wget https://www.virtualbox.org/download/oracle_vbox.asc && sudo rpm –import oracle_vbox.asc

$ wget http://download.virtualbox.org/virtu…irtualbox.repo && sudo mv virtualbox.repo /etc/yum.repos.d/

$ sudo dnf update

.

* SERÁ PERGUNTADO SE A CHAVE GPG DO REPOSITÓRIO DO VIRTUALBOX ESTÁ CORRETA, CONFIRME PRESSIONANDO S:

.

INSTALO A VERSÃO MAIS RECENTE DO VIRTUALBOX COM:

sudo dnf install VirtualBox-5.1

.
ADICIONO SEU USUÁRIO AO GRUPO VBOXUSERS COM:

$ sudo gpasswd -a $USER vboxusers

.

INSTALO O VIRTUALBOX 5 PARA TER SUPORTE A DISPOSITIVOS USB NAS SUAS MÁQUINAS VIRTUAIS. FAÇA O DOWNLOAD DO PACOTE CORRESPONDENTE COM A VERSÃO DO VIRTUALBOX QUE INSTALOU EM:

https://www.virtualbox.org/wiki/Downloads

http://www.oracle.com/technetwork/se…ads/index.html

.

APÓS, INSTALO COM:

$ VBoxManage extpack install –replace /onde/está/o/pacote/Oracle_VM_VirtualBox_Extension_Pack.vbox-extpack

.

NO MEU CASO FICOU ASSIM:

VBoxManage extpack install –replace /home/sandro/Downloads/Oracle_VM_VirtualBox_Extension_Pack-5.0.16-105871.vbox-extpack

.

CASO APAREÇA UMA MENSAGEM DE ERRO “KERNEL DRIVER NOT INSTALLED (RC=-1908)”, COMO NA IMAGEM ABAIXO APÓS TENTAR EXECUTAR UMA MÁQUINA VIRTUAL (NO CASO DE UMA ATUALIZAÇÃO DO KERNEL.

.

BASTA EXECUTAR NO TERMINAL (COMO A PRÓPRIA MENSAGEM DIZ):

sudo /sbin/rcvboxdrv setup

.

OU, DEPENDENDO DA VERSÃO INSTALADA:

sudo /etc/init.d/vboxdrv setup

.

USANDO O TERMINAL DO LINUX NO KORORA:

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

.

Quero saber um quadro atual, porém estático dos processos que estão sendo executados no sistema. Digito ps 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.

.

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.

.

Para mudar o swap apenas temporariamente para ver se funciona, digite (copie e cole):

$ sudo sysctl vm.swappiness=10
Depois verifique com:
$ cat /proc/sys/vm/swappiness

 

.
Alterando o swap permanentemente.
Swap

$ cat /proc/sys/vm/swappiness

resultado:
60
Para ficar igual a 10.
Execute o comando:

$ sudo bash -c “echo ‘vm.swappiness = 10’ >> /etc/sysctl.conf”

$ sudo shutdown -r now

 

COMENTE, MANTENHA-SE ONLINE, DEIXE DICAS E SUGESTÕES E DOE DA MANEIRA QUE PUDER.

 

.

Até Breve.

Notas-aprendendo-comando-grep-linux-artigo-tutorial

 

Maio-2017
command-grep

 

SOBRE O COMANDO GREP DO LINUX

Como sempre, pesquisei na internet encontrei informações. Separei as que achei mais interessantes para mim e montei esta anotação para eu usar. Dá para eu ter pelo menos uma noção do que é o comando grep. Espero que minha anotação lhe seja util. Ela é útil para mim.

 
O significado do nome é (Globally Search a Regular Expression and Print)

 

O Grep procura texto em uma string ou dentro de arquivos e mostra linhas, ocorrências. O Grep usa combinações para pesquisar e o resultado da pesquisa pode ser mostrado na tela.

 
O grep já vem instalado no Linux.

 
Digitando apenas o comando e dando enter ele não faz nada, mas se digito um parâmetro tipo -V já posso saber a versão do grep que tenho instalado no meu Linux.

 

$ grep -V
grep (GNU grep) 3.0
Copyright (C) 2017 Free Software Foundation, Inc.
Licença GPLv3+: GNU GPL versão 3 ou superior <http://gnu.org/licenses/gpl.html&gt;.
Este é um software livre: você é livre para alterá-lo e redistribuí-lo.
NÃO HÁ GARANTIAS, na máxima extensão permitida por lei.

Escrito por Mike Haertel e outros, veja <http://git.sv.gnu.org/cgit/grep.git/tree/AUTHORS&gt;

 
Alguns parâmetros que posso usar e suas respectivas funções:

 

PARÂMETROS E SUAS FUNÇÕES:

 

 

-c
Conta quantas vezes apareceu a string que esta pesquisando

-v
Mostra na tela “tudo” menos onde houver a ocorrência da string pesquisada

-i
Realiza uma busca pela string ignorando o case, sendo case-insensitive

-o
Ira mostrar na tela apenas as ocorrências da string pesquisada ignorando o resto

-n
Ira mostrar na tela na primeira coluna a linha onde encontrou a string pesquisada

-B
Numero de linhas a serem impressas antes da linha que contem a string pesquisada [BEFORE]

-A
Numero de linhas a serem impressas na tela depois da encontrar a linha com a string [AFTER]

-C
Quantidade de linhas antes e depois da linha que contem a string [CONTEXT]

-q
Ira procurar pela string informada, porém estará em modo silencioso, nada sera impresso na tela, porém caso encontre o comando encerra com 0, caso não encontre nada será 1

-E
Extende o uso de Regex no padrão e combinação, usando logica AND e OR por exemplo

-f
Um arquivo com combinações de padrões com Regex, podendo usar varias combinações

-l
Mostra somente o nome do arquivo onde foi encontrado a string pesquisada

-L
Semelhante ao -v, porque mostra apenas os arquivo que não contem a string informada

-h
Pesquisa varias arquivos, diretórios se com -r mas não mostra o nome dos arquivos

-r
Ira realizar uma pesquisa recursiva em todos os diretórios a partir do informado

–color
Deve-se passar o parâmetro ‘never’ caso não queira que a saída marque com cor a string ou ‘auto’ e ‘always’ para operar conforme necessite. Pode mudar a cor alterando GREP_COLOR, GREP_COLORS no environment

 

 

Crio um arquivo chamado palavras.txt coloco um texto dentro e brinco com o grep.

 

echo -ne “amor\ncasa\nCasa\nCASA\nRaspberryPI\nRaspberry PI\nRaspberry B PI\nArduino\narduino\nARDUINO\nIDEArduino\nLinux é o poder\nEu programo Python e você?\n” > palavras.txt

 

Visualizo o arquivo que criei:

 

$ cat palavras.txt
amor
casa
Casa
CASA
RaspberryPI
Raspberry PI
Raspberry B PI
Arduino
arduino
ARDUINO
IDEArduino
Linux é o poder
Eu programo Python e você?

 
Uso o grep para pesquisar pela string “Raspberry“, posso usar de duas maneiras:

 
Com o cat um pipe e logo em seguida um grep ou diretamente com o comando.

 

A primeira opção é muito utilizada, porém perde performance caso eu realize pesquisa em muitos arquivo ou em um arquivo longo.

 
$ cat palavras.txt | grep “Raspberry”
RaspberryPI
Raspberry PI
Raspberry B PI

$ grep “Raspberry” palavras.txt
RaspberryPI
Raspberry PI
Raspberry B PI

 

Caso eu queira contar o numero de ocorrências da string “Raspberry”:

$ grep -c “Raspberry” palavras.txt
3

 

Se eu quiser ver tudo menos a string que contenham “Raspberry”:

$ grep -v “Raspberry” palavras.txt
amor
casa
Casa
CASA
Arduino
arduino
ARDUINO
IDEArduino
Linux é o poder
Eu programo Python e você?

 

Agora quero pesquisar pela string “arduino”.

$ grep “arduino” palavras.txt
arduino
$ grep “arduino” palavras.txt
arduino

 

Tenho Arduino escrito de diversas maneiras, então vou executar o grep para ser case-insensitive.

$ grep -i “arduino” palavras.txt
Arduino
arduino
ARDUINO
IDEArduino

 

E se no lugar de mostrar a linha inteira ou o que estiver junto eu mostrar apenas a string procurada.

$ grep -o “arduino” palavras.txt
arduino
$ grep -oi “arduino” palavras.txt
Arduino
arduino
ARDUINO
Arduino
$ grep -oi “Raspberry” palavras.txt
Raspberry
Raspberry
Raspberry

 

Se eu precisar saber o numero da linha onde foi encontrada a string.

$ grep -n “Raspberry” palavras.txt
5:RaspberryPI
6:Raspberry PI
7:Raspberry B PI
$ grep -n “duino” palavras.txt
8:Arduino
9:arduino
11:IDEArduino

 

Agora vou pesquisar pela string “arduino” e obter também as 2 linhas antes da string encontrada.

$ grep “arduino” -B 2 palavras.txt
Raspberry B PI
Arduino
arduino

 

O mesmo posso fazer obtendo as linhas depois da linha com a string pesquisada.

$ grep “arduino” -A 2 palavras.txt
arduino
ARDUINO
IDEArduino

 

Posso unir as duas opções, pegando e imprimindo linhas antes e depois da linha que contem a string pesquisada.

$ grep “arduino” -C 2 palavras.txt
Raspberry B PI
Arduino
arduino
ARDUINO
IDEArduino

 

Caso eu não queira mostrar nada na tela, só saber se teve sucesso ou não na pesquisa.

$ grep -q “arduino” palavras.txt
$ echo $?
0

$ grep -q “Beaglebone” palavras.txt
$ echo $?
1

 

No exemplo acima pesquisei a string “arduino” com o parâmetro -q (modo silencioso) e peguei a saída do ultimo comando executado com (echo $?), logo em seguida pesquisei por “Beaglebone” como não existe a saída foi 1.

 

Vou brincar com outros parâmetros. Desta vez vou criar mais 2 arquivos sistema.txt e hardware.txt, e também copiar a saída do dmesg para dmesg.log e brincar com estes caras.

 

 

Preparo os arquivos:

 
$ echo -ne “Linux Ubuntu\nLinux Debian\nLinux Mint\nLinux CentOS\nRaspbian\nYocto RaspberryPI\nBuildroot RaspberryPI\n” > sistema.txt

$ echo -ne “ARM 1176JZF\mARM Cortex-A7\nBCM2835\nBCM2836\nBeaglebone Black\nAM3358\n” > hardware.txt

$ dmesg > dmesg.log

 

 

Eu criei sistema.txt e hardware.txt com palavras aleatórias.

 

Agora eu quero pesquisar em qualquer arquivo e que contenha a string “Raspberry”.

 

$ grep “Raspberry” *
palavras.txt:RaspberryPI
palavras.txt:Raspberry PI
palavras.txt:Raspberry B PI
sistema.txt:Yocto RaspberryPI
sistema.txt:Buildroot RaspberryPI

$ grep “Raspberry” ./*
./palavras.txt:RaspberryPI
./palavras.txt:Raspberry PI
./palavras.txt:Raspberry B PI
./sistema.txt:Yocto RaspberryPI
./sistema.txt:Buildroot RaspberryPI

 

Os demais parâmetros anteriores se aplicam aqui também.

 

$ grep -n “Raspberry” *
palavras.txt:5:RaspberryPI
palavras.txt:6:Raspberry PI
palavras.txt:7:Raspberry B PI
sistema.txt:6:Yocto RaspberryPI
sistema.txt:7:Buildroot RaspberryPI

 

 

Agora se eu criar um diretório exemplo/ e mover o palavras.txt para ele será que vai encontrar a string “Raspberry” nele ainda?

 

$ mkdir exemplo && mv palavras.txt exemplo/
$ grep “Raspberry” *
grep: exemplo: Is a directory
sistema.txt:Yocto RaspberryPI
sistema.txt:Buildroot RaspberryPI

 

 

Ele avisa que existe um diretório onde esta sendo feita a pesquisa, para que ele acesse o(s) diretório(s) deve-se passar o parâmetro -r para recursividade.

 

$ grep -r “Raspberry” *
exemplo/palavras.txt:RaspberryPI
exemplo/palavras.txt:Raspberry PI
exemplo/palavras.txt:Raspberry B PI
sistema.txt:Yocto RaspberryPI
sistema.txt:Buildroot RaspberryPI

 

 

As vezes só interessa saber a ocorrências mas não o arquivo.

$ grep -hr “Raspberry” *
RaspberryPI
Raspberry PI
Raspberry B PI
Yocto RaspberryPI
Buildroot RaspberryPI

 

 

Caso eu queira apenas saber qual arquivo contem a string mas não precisa mostrar ela.

$ grep -lr “Raspberry” *
exemplo/palavras.txt
sistema.txt

 

 

E se quiser saber os arquivos que não possuem a string pesquisada.

$ grep -Lr “Raspberry” *
dmesg.log
hardware.txt

 

 

Habilitando ou não o uso da saída colorida.

$ grep -r –color=always “Raspberry” *
exemplo/palavras.txt:RaspberryPI
exemplo/palavras.txt:Raspberry PI
exemplo/palavras.txt:Raspberry B PI
sistema.txt:Yocto RaspberryPI
sistema.txt:Buildroot RaspberryPI

$ grep -r –color=never “Raspberry” *
exemplo/palavras.txt:RaspberryPI
exemplo/palavras.txt:Raspberry PI
exemplo/palavras.txt:Raspberry B PI
sistema.txt:Yocto RaspberryPI
sistema.txt:Buildroot RaspberryPI

 

 

Agora com o básico de Expressões Regulares, e como exemplo usarei o dmesg.log gerado acima.

 

 

Fazendo uma busca simples pela string “usb”.

 

$ grep “usb” dmesg.log
[ 0.668550] usbcore: registered new interface driver usbfs
[ 0.668558] usbcore: registered new interface driver hub
[ 0.668582] usbcore: registered new device driver usb
[ 1.996732] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002
[ 1.996735] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[ 1.996737] usb usb1: Product: EHCI Host Controller
[ 1.996739] usb usb1: Manufacturer: Linux 3.13.0-37-generic ehci_hcd
[ 1.996741] usb usb1: SerialNumber: 0000:00:1d.0
[ 1.997338] usb usb2: New USB device found, idVendor=1d6b, idProduct=0002
[ 1.997340] usb usb2: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[ 1.997342] usb usb2: Product: xHCI Host Controller
[ 1.997344] usb usb2: Manufacturer: Linux 3.13.0-37-generic xhci_hcd
[ 1.997346] usb usb2: SerialNumber: 0000:00:14.0
[ 2.000099] usb usb3: New USB device found, idVendor=1d6b, idProduct=0003
[ 2.000101] usb usb3: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[ 2.000103] usb usb3: Product: xHCI Host Controller
[ 2.000105] usb usb3: Manufacturer: Linux 3.13.0-37-generic xhci_hcd
[ 2.000107] usb usb3: SerialNumber: 0000:00:14.0
[ 2.308561] usb 1-1: new high-speed USB device number 2 using ehci-pci
[ 2.440791] usb 1-1: New USB device found, idVendor=8087, idProduct=8000
[ 2.440794] usb 1-1: New USB device strings: Mfr=0, Product=0, SerialNumber=0
[ 2.712387] usb 1-1.5: new full-speed USB device number 3 using ehci-pci
[ 2.805614] usb 1-1.5: New USB device found, idVendor=0cf3, idProduct=0036
[ 2.805616] usb 1-1.5: New USB device strings: Mfr=0, Product=0, SerialNumber=0
[ 2.880293] usb 1-1.7: new high-speed USB device number 4 using ehci-pci
[ 2.972951] usb 1-1.7: New USB device found, idVendor=0bda, idProduct=0129
[ 2.972954] usb 1-1.7: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 2.972956] usb 1-1.7: Product: USB2.0-CRW
[ 2.972958] usb 1-1.7: Manufacturer: Generic
[ 2.972959] usb 1-1.7: SerialNumber: 20100201396000000
[ 3.044205] usb 1-1.8: new high-speed USB device number 5 using ehci-pci
[ 3.201201] usb 1-1.8: New USB device found, idVendor=0c45, idProduct=64af
[ 3.201203] usb 1-1.8: New USB device strings: Mfr=2, Product=1, SerialNumber=0
[ 3.201205] usb 1-1.8: Product: Laptop_Integrated_Webcam_HD
[ 3.201206] usb 1-1.8: Manufacturer: CN0Y3PX8724873AGB17FA01
[ 14.243360] usbcore: registered new interface driver btusb
[ 14.274681] usbcore: registered new interface driver rts5139
[ 14.624063] input: Laptop_Integrated_Webcam_HD as /devices/pci0000:00/0000:00:1d.0/usb1/1-1/1-1.8/1-1.8:1.0/input/input13
[ 14.624169] usbcore: registered new interface driver uvcvideo
[ 14.761434] usbcore: registered new interface driver ath3k
[ 14.781788] usb 1-1.5: USB disconnect, device number 3
[ 14.981529] usb 1-1.5: new full-speed USB device number 6 using ehci-pci
[ 20.075906] usb 1-1.5: New USB device found, idVendor=0cf3, idProduct=0036
[ 20.075911] usb 1-1.5: New USB device strings: Mfr=0, Product=0, SerialNumber=0

 

Bastante coisa. Vou trabalhar em cima extendendo os recursos de Regex da expressão, por exemplo quero somente as linhas que contenham usb2 OU usb3, aplicando a lógica OR.

 
$ grep -E “usb2|usb3” dmesg.log
[ 1.997338] usb usb2: New USB device found, idVendor=1d6b, idProduct=0002
[ 1.997340] usb usb2: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[ 1.997342] usb usb2: Product: xHCI Host Controller
[ 1.997344] usb usb2: Manufacturer: Linux 3.13.0-37-generic xhci_hcd
[ 1.997346] usb usb2: SerialNumber: 0000:00:14.0
[ 2.000099] usb usb3: New USB device found, idVendor=1d6b, idProduct=0003
[ 2.000101] usb usb3: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[ 2.000103] usb usb3: Product: xHCI Host Controller
[ 2.000105] usb usb3: Manufacturer: Linux 3.13.0-37-generic xhci_hcd
[ 2.000107] usb usb3: SerialNumber: 0000:00:14.0

 

 

Vou pesquisar por uma linha que contenha “usb” E tambem “Product:”, vou aplicar a logica AND.

 

$ grep -E “usb.*Product:” dmesg.log
[ 1.996737] usb usb1: Product: EHCI Host Controller
[ 1.997342] usb usb2: Product: xHCI Host Controller
[ 2.000103] usb usb3: Product: xHCI Host Controller
[ 2.972956] usb 1-1.7: Product: USB2.0-CRW
[ 3.201205] usb 1-1.8: Product: Laptop_Integrated_Webcam_HD

 

 

Mas eu quero só com “usb2” ou “usb3” casando com “Product:”.

 

$ grep -E “usb(2|3).*Product:” dmesg.log
[ 1.997342] usb usb2: Product: xHCI Host Controller
[ 2.000103] usb usb3: Product: xHCI Host Controller

 

 

Posso aplicar varias combinações com Expressões Regulares.

 

 

Posso criar um arquivo com o meu Regex e usar ele como padrão, alias, podemos colocar varias combinações neste arquivo.

 

 

$ echo “usb(2|3).*Product:” > meu_regex
$ cat meu_regex
usb(2|3).*Product:
$ grep -f meu_regex -E dmesg.log
[ 1.997342] usb usb2: Product: xHCI Host Controller
[ 2.000103] usb usb3: Product: xHCI Host Controller

 

 

Vou usar o grep direto e usar ele com qualquer comando um pipe e logo em seguida o grep.

 

Vou fazer uma pesquisa no /var/log/syslog.1 por quantas ocorrências da string “info” usando cat e o grep direto.

 

$ time cat /var/log/syslog.1 | grep -c “info”
1027

real 0m0.011s
user 0m0.005s
sys 0m0.008s
$ time grep -c “info” /var/log/syslog.1
1027

real 0m0.009s
user 0m0.009s
sys 0m0.000s

 

 

Para desempenho de uso em grande escala do grep é setar LC_ALL=C antes:

$ strace -c grep -c “info” /var/log/syslog.1
187
% time seconds usecs/call calls errors syscall
—— ———– ———– ——— ——— —————-
27.03 0.000160 11 14 mmap
14.19 0.000084 8 10 read
13.18 0.000078 13 6 open
11.15 0.000066 8 8 mprotect
9.63 0.000057 11 5 5 access
5.57 0.000033 4 9 fstat
4.56 0.000027 3 9 close
3.55 0.000021 11 2 munmap
3.55 0.000021 7 3 brk
3.04 0.000018 18 1 execve
1.52 0.000009 9 1 write
1.35 0.000008 4 2 1 ioctl
1.35 0.000008 8 1 openat
0.34 0.000002 2 1 arch_prctl
—— ———– ———– ——— ——— —————-
100.00 0.000592 72 6 total

$ export LC_ALL=C

$ strace -c grep -c “info” /var/log/syslog.1
187
% time seconds usecs/call calls errors syscall
—— ———– ———– ——— ——— —————-
20.07 0.000114 11 10 read
16.73 0.000095 8 12 mmap
16.20 0.000092 12 8 mprotect
6.87 0.000039 8 5 5 access
6.16 0.000035 9 4 open
6.16 0.000035 18 2 munmap
5.99 0.000034 34 1 execve
5.46 0.000031 10 3 brk
4.40 0.000025 4 7 close
3.87 0.000022 3 7 fstat
2.99 0.000017 17 1 write
2.64 0.000015 15 1 openat
1.94 0.000011 6 2 1 ioctl
0.53 0.000003 3 1 arch_prctl
—— ———– ———– ——— ——— —————-
100.00 0.000568 64 6 total

 

 

Novamente verificando o tempo apos setar LC_ALL=C.

$ time grep -c “info” /var/log/syslog.1
187

real 0m0.003s
user 0m0.003s
sys 0m0.000s
$ time cat /var/log/syslog.1 | grep -c “info”
187

real 0m0.005s
user 0m0.000s
sys 0m0.009s

 

 

No meu syslog.1 não deu tanta diferença, mas fazer essa varredura em um aquivo de 500M você notará uma grande diferença.

 

 

Até Breve.

 

command-cli

 

Fonte

Fonte2

 

linha-de-comando
.

ANOTAÇÕES-GUIA-PÓS-INSTALAÇÃO-SPARKYLINUX-MAIO-2017

 

sparky-linux

 

2017-Maio

GUIA-PÓS-INSTALAÇÃO-SPARKYLINUX

SparkyLinux é uma distro super leve, rápida e simples projetada para computadores novos e também velhos.

Usa Enlightenment, KDE Plasma, LXQT, Xfce, MATE e LXDE em seus desktops, mas oferece também a instalação fácil de vários outros tipos de Desktops através do APTus.

 

 

O SparkyLinux é contruido sobre o Debian GNU/Linux ramo de teste.

Eu acho o Sparky Linux nota 9 faltando apenas um ponto para nota 10 e para mim nenhuma distro Linux atingiu ainda a nota dez.

A nota 10 seria talvez o fim, pois os sistemas chegariam a um ponto que parariam de se desenvolver e quem iria desejar isto?

Só coisas mortas, penso eu, cessam o processo de transformação e desenvolvimento.

E digo que se a morte é perfeita, eu adoro mesmo é o imperfeito.

O Sparky Linux apoia-se nos ombros de gigantes. É baseado no Debian, usa o gerenciador de janelas openbox e o gerenciador de arquivos PCmanFM 1.2.5. É muito veloz e leve. Não exige limpeza do sistema, não pode ser contaminado por virus, trojans e outras coisas ruins. É exelente para notebooks modestos com até 4GB de RAM ou menos. Aceita bem multiplos monitores e está sempre bem atualizado. Fora isto, não é necessário configurar sudo para o usuário, não é necessário editar source.list, não há problemas com chaves públicas e posso atualizar o kernel facilmente de modo gráfico com o APTus.

 

PARA MAIS INFORMAÇÃO SOBRE E ONDE BAIXAR VISITE:
https://distrowatch.com/table.php?distribution=sparky

 

 

As distribuições Linux em 2017, sempre tem uma coisa que deve ser feita em primeiro lugar antes de qualquer outra coisa:

 

Atualizar repositórios e fazer update do sistema.

 
Eu gosto de fazer isto usando o terminal porém pelo menu existe opção grafica para se fazer isto também. O Sparky Linux é baseado no Debian, então os comandos do Debian todos eles; podem ser usados no Sparky Linux sem problema nenhum.
Executo o primeiro comando abaixo abrindo o terminal com o mouse:

sudo sh -c ‘apt update && apt -y full-upgrade’

Digito a senha, ele não é para ser vista. É um lance entre o teclado e o terminal apenas. Aperto a tecla enter e começamos os trabalhos.

Aguardo pacientemente. Mas abro outro terminal para verificar informações sobre o SparkyLinux com o comando lsb_release -a. Então:

 

~ $ lsb_release -a
No LSB modules are available.
Distributor ID: Sparky
Description: SparkyLinux
Release: 4
Codename: Tyche

 
O Sparky Linux vem com a opção de instalar codecs de Multimidia e suites de office no menu Office e Audio & Vídeo. Vem com o instalador de pacotes Synaptic, Gdebi e com o APTus então; não é necessário usar o terminal para instalar/desinstalar programas, mas eu gosto de usar o terminal então vou instalar alguns programapor ele.

 

Para executar comandos posso seguir a seguinte fórmula que serve também para o Debian/Ubuntu:

 

sudo sh -c ‘comando1 && comando2’

 

 

Com esta formação, eu também posso usar o bash, se quiser:

sudo bash -c ‘comando1 && comando2’

 
Pode ser útil usar esta técnica quando eu quiser deixar o sistema sendo atualizado — tarefa na qual, comumente, uso 2 comandos (no Debian/Ubuntu):

 

sudo sh -c ‘apt update && apt -y full-upgrade’

 
O que este comando faz:

 

sudo — como eu já sei, 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.

 
Ainda, 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’

 
Quero saber o espaço em disco do sistema de arquivos usado por todas as partições. “df”, “df -h” digito e recebo a resposta sobre a quantidade de disco rígido HD no meu computador usando df -h. Então:

 

~$ df -h
Sist. Arq. Tam. Usado Disp. Uso% Montado em
udev 1,3G 0 1,3G 0% /dev
tmpfs 259M 4,6M 254M 2% /run
/dev/sda2 137G 6,4G 124G 5% /
tmpfs 1,3G 0 1,3G 0% /dev/shm
tmpfs 5,0M 4,0K 5,0M 1% /run/lock
tmpfs 1,3G 0 1,3G 0% /sys/fs/cgroup
tmpfs 259M 4,0K 259M 1% /run/user/106
tmpfs 259M 24K 259M 1% /run/user/1000

 

 
Eu vou no menu e ativo o Firewall do SparkyLinux.

 

 

Agora é só instalar os programas que eu quero. E abaixo alguns deles:

firejail e firetools – sandbox

sigil – editor de pdf

fbreader – leitor de epub, pdf e diversos outros formatos
calibre – gerenciador/conversor de ebooks
vlc, smplayer – reprodutores de audio e video
musique, clementine – reprodutores de audio
subdownloader – encontra e baixa subtitulos
seahorse – gerenciador de senhas

 

 

Faço como neste exemplo abaixo:

 

sudo — sh -c ‘apt update && apt install -y clementine subdownloader seahorse gaupol uget firejail firetools sigil’ ; sudo apt-get update ; 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 sh -c ‘apt update && apt -y full-upgrade’

 

 

Eu uso a sequencia de comandos abaixo para colocar aplicativos que tem contato com a internet no FIREJAIL para poderem ser abertos usando o FIRETOOLS:

 

sudo apt-get update ; 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 sh -c ‘apt update && apt -y full-upgrade’

 

 

Quero ver o que acontece no meu sistema na tela do meu desktop. Para isto eu devo instalar o Conky-Manager para Debian no meu caso 32bits. No site:

 

https://launchpad.net/~teejee2008/+archive/ubuntu/ppa/+packages

 

 
Eu baixo algo parecido com isto:

 

conky-manager_2.4~136~ubuntu16.04.1_i386.deb (762.3 KiB)

 

 
E instalo com o Gdebi que já está pré-instalado no Sparky-Linux.

 

 

Eu que estou entrando no mundo Linux tem pouco tempo, sei que existem milhares de programas prontinhos esperando por mim para eu usar, mas, não sei o nome deles todos. Para ficar atualizado sobre isto; eu visito sites que oferecem esta informação. Por exemplo:

 

 

https://elias.praciano.com/

http://www.edivaldobrito.com.br/

http://www.tocadacoruja.net/forum/forum.php

http://ubuntuhandbook.org/

http://www.ubuntudicas.com.br/

http://www.linuxtotal.org/

https://itsfoss.com/

 

 

VOU EM FRENTE.

 

 
Mudo o SWAP para 10 com o comando abaixo:

 

sudo bash -c “echo ‘vm.swappiness = 10’ >> /etc/sysctl.conf” ; sudo shutdown -r now

 

 
A máquina vai reiniciar. Aí eu confiro o swap com o comando abaixo:

 

cat /proc/sys/vm/swappiness

 

 
O resultado deverá ser:
10

 

 

Aí tudo ok para mim. Não uso linux como servidor então swap 10 eu gosto.

 

 

 

INSTALO

 
Administradores de pacotes;

 

sudo apt-get update ; sudo apt-get install synaptic apt-xapian-index gdebi gksu ; sudo sh -c ‘apt update && apt -y full-upgrade’

 

 
Então, chego a este ponto… Antes de instalar mais coisas eu devo me lembrar como é que se instala arquivos tar.gz e arquivos tar.bz2 ou tar.xz. porque eu desejo instalar programas que não vem por padrão na distribuição.

 

Tem como instalar, mas eles podem alguma vez, como disse, ser arquivos tar.

 

Pacotes do tipo .tar.gz ou .tar.bz2 contém os fontes do programa prontos para compilação (transformar fontes em executáveis).

 
Sua instalação não depende da distribuição usada. Tente instalar tar.gz no Solus Linux por exemplo… é possivel, e é um esquema parecido com o abaixo.

 
O .tar significa que dentro desse arquivo existem outros arquivos e sub-pastas e o .gz ou .bz2 é o tipo de compactação que foi usada na criação do pacote.

 

 
Abro o terminal e digito os seguintes comandos nessa ordem:

 

 

$ cd /home/usuário (entro no diretório onde está o pacote)

 

$ ls (só para eu ver o pacote que eu baixei)

 

$ tar -jxvf nome_do_pacote.tar.bz2

 

 

Para extrair os arquivos de um pacote .tar.bz2 uso o comando listado acima, caso fosse um .tar.gz o comando seria bastante semelhante:

 

 
$ tar -zxvf nome_do_pacote.tar.gz

 

 

Ou seja, muda apenas em uma letra de “j” para “z” ou vice-versa. Procuro saber o que significa cada uma dessas letras, para isso uso o comando:

 

 
$ man tar

 

 

Agora posso notar que foi criado um novo diretório:

 

 

$ ls

 
$ cd nome_do_diretório_criado

 
$ ls

 

 

Estou vendo um arquivo chamado “configure”.

 

Esse arquivo ‘prepara’ o Linux para instalar o programa, checando dependências, entre outras coisas.

 

Se encontrar problemas na etapa seguinte, leio o INSTALL ou o README, eles informam tudo que preciso ter e/ou fazer para ter o programa funcionando perfeitamente.

 

 

$ ./configure

 

(o ./ significa que quero executar esse arquivo)

 

 

Serão verificadas variáveis de ambiente e dependências de bibliotecas.

 

 

Essa etapa demora um pouco, caso o configure encontre algum erro, anoto, vou no install e vejo se fala algo sobre.

 

 

$ make

 
$ make install (instala o programa no Linux)

 

 

LISTINHA DE COMANDOS:

 

 

tar -zxvf nome-do-arquivo.tar.gz – desempacota o arquivo de extensão .tar.gz;

tar -jxvf nome-do-arquivo.tar.bz2 – desempacota o arquivo de extensão .tar.bz2.

 

 
Tem pacote que nem é preciso executar:

 

configure

make

make install.

 

 

Ao desempacotar o ‘tar’ dentro da pasta já está o executável prontinho para ser executado, ou existe um arquivo de instalação próprio do programa, como é o caso de pacotes para office e as vezes, o popcorn.

 

 

Instalo mais programas que eu gosto:

 

 

sudo — sh -c ‘apt update && apt install -y bleachbit gimp shotwell gparted gnome-disk-utility scratch geany pinta liferea thunderbird enigmail gedit mousepad dreamchess comix mcomix youtube-dl fortune fortunes-br cowsay p7zip unrar rar audacity tlp lm-sensors gconjugue inkscape pinta’ ; sudo sh -c ‘apt update && apt -y full-upgrade’

 

 

Abaixo é um lembrete para mim, de como eu posso instalar vários programas que eu gosto que estão empacotados em .tar alguma coisa:

 

 

 

INSTALAR O POPCORN-TIME NO LINUX

 

 

sudo rm -Rf /opt/popcorntime

sudo rm -Rf /usr/bin/Popcorn-Time

sudo rm -Rf /usr/share/applications/popcorntime.desktop

 

 

wget https://get.popcorntime.sh/build/Popcorn-Time-0.3.10-Linux-64.tar.xz -O popcorntime.tar.xz

 

 

sudo mkdir /opt/popcorntime

 

sudo tar Jxf popcorntime.tar.xz -C /opt/popcorntime/

sudo ln -sf /opt/popcorntime/Popcorn-Time /usr/bin/Popcorn-Time

 

 

echo -e ‘[Desktop Entry]\n Version=1.0\n Name=popcorntime\n Exec=/opt/popcorntime/Popcorn-Time\n Icon=/opt/popcorntime/src/app/images/icon.png\n Type=Application\n Categories=Application’ | sudo tee /usr/share/applications/popcorntime.desktop

 

 

Agora é digitar:

/opt/popcorntime/Popcorn-Time

E apertar a tecla TAB

Posso tentar:

sudo chmod +x /usr/share/applications/popcorntime.desktop

cp /usr/share/applications/popcorntime.desktop  ~/Área\ de\ Trabalho/

 

 

 

COMO INSTALAR O TOR-BROWSER NO LINUX

 

 

sudo rm -Rf /opt/tor-browser*

sudo rm -Rf /usr/bin/tor-browser

sudo rm -Rf /usr/share/applications/torbrowser.desktop

 

 

wget https://dist.torproject.org/torbrowser/6.5.1/tor-browser-linux64-6.5.1_pt-BR.tar.xz -O tor-browser.tar.xz

sudo tar -xvJf tor-browser.tar.xz -C /opt/

sudo mv /opt/tor-browser*/ /opt/tor-browser

 

sudo ln -sf /opt/tor-browser/Browser/start-tor-browser /usr/bin/torbrowser

echo -e ‘[Desktop Entry]\n Version=1.0\n Name=torbrowser\n Exec=/opt/tor-browser/Browser/start-tor-browser\n Icon=/opt/tor-browser/Browser/icons/updater.png\n Type=Application\n Categories=Application’ | sudo tee /usr/share/applications/torbrowser.desktop

 

 

 

COMO INSTALAR O TELEGRAM NO LINUX

 
sudo rm -Rf /opt/telegram*

sudo rm -Rf /usr/bin/telegram

sudo rm -Rf /usr/share/applications/telegram.desktop

 

 

wget “https://telegram.org/dl/desktop/linux&#8221; -O telegram.tar.xz

sudo tar Jxf telegram.tar.xz -C /opt/

sudo mv /opt/Telegram*/ /opt/telegram

sudo ln -sf /opt/telegram/Telegram /usr/bin/telegram

 

 

 

echo -e ‘[Desktop Entry]\n Version=1.0\n Exec=/opt/telegram/Telegram\n Icon=Telegram\n Type=Application\n Categories=Application;Network;’ | sudo tee /usr/share/applications/telegram.desktop

 

 

sudo chmod +x /usr/share/applications/telegram.desktop

 

cp /usr/share/applications/telegram.desktop ~/Área\ de\ Trabalho/

 

 

 

Vou instalar:

ICONES NUMIX

$ sudo su –

senha e enter copio e colo:

# apt-get update ; apt-get install git ; mkdir numix; cd numix && git clone https://github.com/cldx/numix-gtk-theme && git clone https://github.com/numixproject/numix-icon-theme && git clone https://github.com/numixproject/numix-icon-theme-circle && mv numix-gtk-theme /usr/share/themes && mv numix-icon-theme/Numix/ /usr/share/icons && mv numix-icon-theme-circle/Numix-Circle/ /usr/share/icons; cd – && rm numix -rf

 

 

 

Bom, fico por aqui hoje. Espero que estas anotações te ajudem o tanto quando são úteis para mim.

Até Breve

.

Aprenda a Trabalhar com o Terminal do Linux

 

um-idealista

 

Fev – 2017

Ubuntu Aprenda a Trabalhar com o Terminal do Linux (Português do Brasil)

Trabalhar com a linha de comando não é uma tarefa tão assustadora assim. Não tem nenhum conhecimento especial necessário para usar a linha de comando no terminal, porque o terminal é um programa como qualquer outro.

A maioria das coisas em Linux podem ser feitas usando o terminal. Tem ferramentas gráficas para a maioria dos programas, mas, às vezes eles não são suficientes. Aí que o terminal é útil.

Este artigo foi elaborado em máquina virtual usando Ubuntu Mate, um dos melhores sistemas da atualidade.

Para este artigo funcionar direito, deve-se ir lendo e executando imediatamente no terminal.

Depois descanse a mente saia do navegador então volte aqui e faça novamente. Sempre que achar necessário, volte e refaça o caminho. É como na vida.

##

Começando

Primeiro de tudo, é bom criar um usuário que não seja administrador e assim brincar com o terminal sem medo de danificar o sistema.

Vá em configurações > Administração > usuários e grupos (users and groups).

Na janela configuração de usuários clique no botão adicionar, digite tua senha e escreva um novo nome de usuário por exemplo:

alunox

Crie uma senha para alunox, salve feche e faça logout.
Procure o nome alunox fazendo login como alunox usando a nova senha.
Este usuário terá direitos restritos e quando você voltar a usar seu usuário login oficial tudo estará bem.

Não esqueça:

O terminal diferencia letras maiúsculas de minúsculas.

Nome de alguns símbolos

# – O nome deste símbolo é Cerquilha ou Cardinal
´ – Acento agudo
^ – Acento circunflexo
~ – Til
” – Aspas
/ – Barra
\ – Barra invertida
– Traço

Comando de teclado
Abrir aplicativos
alt + F2

Abrir o terminal
crtl+alt+t

Sair do terminal digite:
exit

Aperte enter

###

Trabalhando com o terminal

Abra o terminal
ctrl+alt+t

Vamos saber que dia é hoje. Digite:
date

Aperte Enter.

Agora vamos ver o calendário. Digite:
cal

Aperte enter. O resultado será parecido com isto:

:~$ cal
Fevereiro 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

Abrir uma pasta
cd

Aperte Enter

finger usuário: exibe informações sobre o usuário indicado. Digite:

finger

Aperte Enter.

O comando cd:

Sintaxe de uso cd:
cd [-L|[-P [-e]]] [dir]

cd é um comando para acessar/navegar entre diretórios.

cd .. é para sair de diretório, note que os dois pontos estão separados do comando.

Normalmente vai utilizá-lo assim:
cd caminho_da_pasta/

Exercício:

Abra o terminal com ctrl+alt+t escreva:
pwd

O resultado será:

~$ pwd
/home/dt

Então usando pwd você nunca se perde. O pwd te diz aonde você está. Mas, o que existe em /home/dt ? O que procuro está em /home/dt/ ?
Para saber o que existe em /home/dt/ usa-se ls.

digite:
ls

O resultado será parecido com este abaixo:

$ ls
Área de Trabalho Música
deja-dup Público
Documentos Vídeos
Downloads
Imagens
Modelos

Sabendo onde estamos e o que existe lá vamos para a Área de Trabalho. Digite:
cd Área\ de\ Trabalho

Aperte enter e você estará na Área de Trabalho.

Agora digite:
cd ..

Aperte enter e você volta a pasta anterior.

Na pasta onde você está, a pasta home, crie um arquivo de texto chamado leitura-semanal com o comando touch. Digite:
touch leitura-semanal.txt

Escreva neste arquivo pelo terminal. Digite:

echo “minha primeira linha” > leitura-semanal.txt
echo “minha segunda linha” >> leitura-semanal.txt
echo “minha terceira linha” >> leitura-semanal.txt

Agora usando mouse vai lá e abre o arquivo com dois cliques e veja se funcionou. 🙂

Agora vamos ver o que está escrito no arquivo de texto sem precisar abrir digite:
cat leitura-semanal.txt

Legal não é?

Agora faça uma cópia do arquivo leitura-semanal. Digite:

cp leitura-semanal.txt leitura-semanal_copia.txt

Abra a cópia para ver se o que está escrito na cópia confere com o arquivo original.

cat leitura-semanal_copia.txt

Pois bem, agora vá com o mouse no arquivo e dê dois cliques e confira novamente.

Agora remova o arquivo leitura-semanal.txt

rm leitura-semanal.txt

Vamos remover também a cópia que criamos

rm leitura-semanal_copia.txt

###

Caminho das Pastas – Normalmente quando você está acessando uma pasta via linha de comando, o caminho é exibido da seguinte maneira:

nome_usuario@nome_do_computador ~/caminho_da_pasta $

Quando abre o terminal, com ctrl+alt+t o caminho padrão é:

cd /home/$USERNAME/

Quando abre o terminal, com o mouse o caminho padrão é:
cd Área\ de\ Trabalho

$USERNAME representa o nome do seu usuário.

Perceba no caminho acima, que existe um ~/ antes do caminho da pasta, isso significa que você está na pasta /home/$USERNAME/ que é resumido em ~/.

Se não souber o caminho real da pasta, basta digitar cd, dar um espaço e pressionar “TAB” duas vezes rapidamente, com isso será possível visualizar todas as pastas disponíveis para acesso dentro da pasta em que você está.

Exercício:

Abra o terminal crtl+alt+t digite cd dê um espaço e aperte rapido a tecla “Tab” duas vezes.

As pastas são delimitadas por barras (/), por exemplo:

Acessa a pasta raiz do sistema, ou seja, a primeira pasta que pode ser acessada por linha de comando dentro do seu Ubuntu.

cd /

Tentando acessar a pasta “etc” que está dentro da “/” (raiz). Digite:

cd /etc/

Seguindo em frente, acesse a pasta “seu usuário” que está dentro da pasta “home” que está dentro da “/” (Raiz) digite:

cd /home/”seu usuário” /

Note as duas aspas no caminho da pasta “seu usuário”, isso serve para escapar os caracteres inválidos que possam existir no nome da pasta, por exemplo: O espaço. Mais explicações adiante mas antes vamos criar uma pasta.

Crie uma pasta chamada “conto” na Área de Trabalho, abra o terminal (ctrl+alt+t) e digite:

cd Área\ de\ Trabalho

Agora crie a pasta conto. Digite:

mkdir conto

Aperte enter

Vamos entrar na pasta conto? Então digite:

cd conto

Aperte enter.

Agora que estamos na pasta contos da Área de Trabalho, iremos criar um arquivo de texto dentro dela. Digite:

touch conto-semanal.txt

Agora vai lá com o mouse mesmo e clica duas vezes na pasta. E aí? 😉

Vamos em frente. Como excluir esta pasta conto? Digite:

cd – (volta uma pasta)

Voltamos uma pasta “cd -“, então estamos na Área de Trabalhos. Assim informa o terminal. Para apagar a pasta conto digite:

rm -r conto

Desta forma “rm -r”, excluimos a pasta e o texto que criamos. Note que não vai nada para a lixeira. Excluir é diferente de apagar. Os apagados ainda existem na lixeira mas, os excluídos, não existem em lugar nenhum.

Profunda filosofia.

ESCAPANDO de CARACTERES INVÁLIDOS

Existem duas formas de fazer isso, uma é com barras invertidas e a outra colocando o nome da pasta entre aspas, veja outro exemplo:

cd /home/conto/Área\ de\ trabalho/

Antes de cada espaço coloco uma barra invertida (\), assim consigo escapar os espaços para que o terminal entenda.

Para voltar para a pasta anterior basta digitar “cd ..” e pressionar “Enter”, por exemplo, se você estiver na pasta:

seu_usuario@seu_computador ~/Área de trabalho $

(Área de trabalho) Basta digitar:

cd ..

E aperte enter, para voltar na pasta “~/” (/home/seu_usuario/).

ls Lista aquivos ou pasta de um determinado diretórios.

lsusb Lista os periféricos que estão conectados na porta usb.

clear Limpa a “tela” do terminal

cp Comando para copiar um arquivo ou diretório para um outro local

sudo O comando sudo é um dos mais utilizados, faz requerimento de superusuário e requer senha. Digite:

sudo apt update && sudo apt upgrade

sudo su Após digitar a senha todas as funções realizadas no terminal estará sendo feita como superusuário, prática não muito recomendada.

shutdown Desliga o computador com intervalo de tempo.

shutdown -h now Desliga o computador imediatamente.

sudo groupadd -g 10 escritorio Cria um grupo chamado escritório com um número de identificação 10.

sudo groupdel escritorio Deleta o grupo denominado escritório.

groupdel Deleta um determinado grupo.

userdell Exclui um determinado usuário

sudo userdell -r nome_do_usuario A opção -r exclui o diretório do usuário

Sempre que você precisar de ajuda para saber a sintaxe de um comando no seu Ubuntu, basta digitar — help na frente do mesmo, exemplo uma ajuda para executar o comando ls (que faz a listagem de pastas dentro de um diretório) vai retornar vários exemplos de utilização do comando, além da sintaxe e tudo mais, .

ls –help

Além da ajuda acima, você também pode digitar:

man comando

Listando comandos

Agora que você já sabe abrir pastas no terminal do seu Ubuntu, saiba o Ubuntu é seu amigo e quer que você digite o comando da maneira mais fácil possível. Se você começar a digitar o nome do comando e esquecer o restante, basta pressionar a tecla “TAB” duas vezes rapidamente e o Ubuntu irá listar todas as possibilidades que iniciam com aquele termo.

LS (Listando pastas)

o comando ls lista as tudo que está dentro das pastas que você está. Ao abrir o terminal e digitar ls e ver o que será apresentado.

Com isso fica muito difícil não descobrir o nome de uma pasta ou arquivo que está dentro da pasta na qual você está. Note que também é possível listar o nome de pastas especificando um caminho, para isso basta digitar:

ls /caminho/que/deseja/

GREP (filtrando os valores)

“grep” ajuda a buscar um resultado quando estes são muito extensos.

Se você está procurando o nome de um arquivo chamado “xyz” dentro de uma pasta com 14.000 arquivos, para isso basta digitar:

ls /caminho/que/deseja/ | grep xyz

Mais um exemplo, digite:

ls /etc/ | grep ini

o grep lista todas as pastas que contém “ini”, ele ainda adiciona uma cor diferenciada no termo pesquisado.

Se você tiver apenas uma idéia sobre o nome do arquivo, como pesquisar?
O comando grep também aceita expressões regulares, veja o exemplo:

ls /etc/ | grep -P “[A-Za-z0-9]_.*?”

O comando acima diz:

“Grep, encontre as palavras que tenham qualquer caracter de A até Z, 0 até 9 e que sejam seguidas por um underline (_) que estão dentro da lista da pasta /etc/ retornada pelo ls”.

Du (Resumindo o uso do disco de cada arquivo)

Se você quiser saber o tamanho que uma pasta tem, da certo? É claro, basta utilizar o comando du seguido das opções s (mostra somente o tamanho) e h (tamanho legível para humanos).

Exemplo:

du -sh /home/

Retorna o tamanho da pasta home do seu Ubuntu.

Para maiores informações sobre o comando “du”, digite “du –help”.

Find (Localizar arquivos e pastas)

Pode-se pesquisar por arquivos e pastas abaixo do diretório atual que você está, veja como:

find -name “*.php”

O comando acima diz:

“find encontre qualquer arquivo (*) com nome (-name) que termine com “.php”

Pode também fazer assim:

find -name “*jpg*”

O find vai achar qualquer arquivo que tenha “jpg” independente do que estiver antes ou depois.

find -name “txt”

O arquivo precisa ter a palavra “txt”.

RM (Apagar arquivos)

Para apagar um arquivo basta digitar:

rm nome_do_arquivo

Para apagar completamente uma pasta, basta digitar:

rm -R nome_da_pasta/

Um comando perigoso é este abaixo, força o Ubuntu a apagar uma pasta, pois se você apagar uma pasta que faz parte do sistema e aí acabou. Prepare-se para reinstalar tudo. Por isto, sempre mantenha o backup de tudo que lhe for importante guardado em um periférico externo ao sistema e ao hardware do teu computador.

rm -R nome_da_pasta/

Ou:

rm -r nome_da_pasta/

Atenção Perigo!

Se for na tua Área de Trabalho e você sem querer criou uma pasta com cadeado para remover pode ser que tenha de remover forçado e este é um comando perigoso. Mas dá para executar fora das pastas e arquivos do sistema. Digite:

rm -Rf nome_da_pasta

Antes de usar o comando acima, tente este comando abaixo:

rm -f nome_da_pasta

###

PS (Visualizando processos)

Para visualizar processos no Ubuntu basta digitar:

ps -aux

Criando pastas na Área de Trabalho – Vamos criar duas pastas, pasta-teste1 e pasta-teste2. Execute o comando “mkdir”

Abra o terminal com ctrl+alt+t

O terminal vai abrir em home.

Escreva no terminal:

cd Área\ de\ Trabalho

Agora, estando na Área de Trabalho, digite:

mkdir pasta-teste1 pasta-teste2

Para remover as pastas digite:

rmdir pasta-teste1 pasta-teste2

Criando usuários por linha de comando

Basta utilizar a sequência:

sudo useradd nome_do_novo_usuario (Usuário)

sudo passwd nome_do_novo_usuario (Senha)

sudo mkdir /home/nome_do_novo_usuario (Diretório)

sudo chown newuser /home/nome_do_novo_usuario (Altera o dono do diretório)

sudo chgrp newuser /home/nome_do_novo_usuario (Altera o grupo)

Apt (Instalando programas)

Para instalar programas no seu Ubuntu basta utilizar o comando ”
APT

sudo apt install (nome[s]_do[s]_programa[s])

Para remover programas

sudo apt remove (nome[s]_do[s]_programa[s]) ; sudo apt autoremove

Este é o básico para começar a brincar com o terminal. Poupa muito tempo de pesquisa na internet.

Mantenha-se conectado. Critique. Corrija. De dicas e faça doações.

Finalizando, vamos relembrar:

~$ date # informa a data atual.

~$ cal # informa o dia atual em um calendário.

~$ pwd # nos informa onde estamos quando usamos o terminal.

~$ ls # lista o que existe onde estamos (pastas, arquivos, etc…)

~$ cd # comando para acessar/navegar entre diretórios.

~$ cd .. # para sair de diretório, note que os dois pontos estão separados do comando.

~$ ls # aquivos ou pasta de um determinado diretórios.

~$ lsusb # lista os periféricos que estão conectados na porta usb.

~$ mkdir # cria uma pasta.

~$ rmdir # remove um diretório.

~$ sudo # o comando sudo é um dos mais utilizados, faz requerimento de superusuário. Requer senha.

~$ sudo su # após digitar a senha todas as funções realizadas no terminal estará sendo feita como superusuário, prática não muito recomendada.

~$ clear # limpa a “tela” do terminal.

~$ top # exibe todos os processos que estão sendo executados, utilizando para “matar” um processo que está “travado”

~$ ps # assim como o top também lista os processos que estão sendo executados, porém para “matar” o processo necessita pegar o número do PID e utilizar o comando kill.

~$ kill # comando para “mata” um processo travado por meio do PID que pode ser adquirido por meio do comando ps.

~$ xkill # Digitando e dando enter a seta do mouse vira um X que pode ser movimentado e clicado sobre uma janela do sitema que esteja travada.

~$ cp # comando para copiar um arquivo ou diretório para um outro local

~$ mv # comando para mover um arquivo ou diretório para um outro local

~$ exit # sair do terminal, fechar o terminal

~$ shutdown #Desligar o computador

~$ shutdown -h now #desligar o computador agora

TECLAS DE ATALHO DO TERMINAL

As teclas de atalho podem ajudar muito na sua produtividade. Abaixo temos algumas teclas de atalho que podem ser utilizadas em qualquer distro Linux que use. O exercício pa usar estas teclas é o seguinte copie e cole o texto abaixo no terminal e use as teclas de atalho para percorrer, apagar, repor…

“Este texto um teste para saber como usar as teclas de atalho no terminal. Algumas palavras vamos copiar. Outras vamos colar. Outras vamos percorrer. Vamoso ao inicio do texto com ctrl+a e vamos ao fim do texto com ctrl+e. Existem vários atalhos. Ctrl+a, crtl+e, ctrl+b, etc…”

Ctrl-A: Leva o Cursor ao início de linha

Ctrl-E: Leva o cursor ao fim da linha.

Ctrl-B: Volta um caractere.

Alt-B: Uma palavra para trás.

Ctrl-F: Avança um caractere.

Alt-F: Avançar uma palavra.

Ctrl-U: Apaga todos os caracteres da posição do cursos para trás.

Ctrl-K: Apaga todos os caracteres da posição do cursor para frente.

Ctrl-Shift-V: Colar o texto da área de transferência .

Ctrl-Shift-C: Copie o texto para área de transferência.

Ctrl-L: Limpa a tela.

TAB: Completa os comandos e nomes de arquivos e diretórios.

Att Breve.