Como copiar, recortar e colar no editor Vim

Copiar uma parte do texto em um arquivo, para usar em outros locais ajuda a poupar tempo e digitação.
Copiar/colar ou recortar/colar são funções existentes no Vim, que muitos novatos desconhecem.

Ambas estão ali, presentes, e são fáceis de usar.
Abra o Vim, com um texto qualquer, que você possa usar para fazer testes e experimente os exemplos que seguem.

Como recortar e colar texto no Vim

Esta função faz (re)uso de outras 2 funções do editor:

  1. os comandos de apagar uma linha, uma palavra, um caractere e
  2. o buffer (memória intermediária) do Vim, onde é guardado o conteúdo descartado.

Basicamente, a operação de recortar/colar consiste de “apagar” primeiro e, depois, recuperar o texto do buffer.

Veja 3 exemplos básicos de como apagar (recortar, neste caso) texto, no modo comando do Vim:

  • ‘dd’, recorta a linha (atual) em que o cursor se encontra
  • ‘dw’, recorta a palavra que se encontra à direita do cursor ou ‘db’, recorta a palavra à esquerda
  • ‘3d’, recorta 3 linhas inteiras

O comando ‘p’ é usado para inserir o conteúdo do buffer no texto.
Depois de recortar o que queria, 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.

copiar e colar com o editor Vim

Como copiar e colar no editor Vim

Para copiar conteúdo, use o comando ‘y’ (yank).
Veja alguns exemplos:

  • ‘yy’, para copiar a linha atual
  • ‘yw’, para copiar a próxima palavra. Se quiser copiar as próximas 3 palavras, use ‘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 deseja inserir o conteúdo do buffer e teclar ‘p’.

Introdução ao Bash scripting

Este post explora conceitos básicos necessários para criar seus primeiros scripts no Bourne-Again SHell (também conhecido como BASH).
Trata-se de um padrão bem estabelecido da indústria, presente em todas as grandes distribuições GNU/Linux, em vários sistemas operacionais UNIX-like e, recentemente, adotado no Windows.

Antes de nos debruçarmos sobre como criar variáveis, funções, fazer operações aritméticas e estruturas de controle, vamos ver alguns conceitos preliminares para rodar scripts em Bash.

Qual shell está em uso no meu sistema?

Abra um terminal.
Se você pretende dar algum comando, é a shell quem irá interpretar e executar as suas instruções.
O Bash é apenas uma das várias opções possíveis.
É padrão, mas as distribuições Linux oferecem outras opções.
Use o comando apropos para descobrir mais opções neste sentido:


apropos shell

Para saber qual a shell em uso no momento, use o comando echo:


echo $SHELL

/bin/bash

Tecnicamente, o comando exibiu a localização do aplicativo da shell e não “o nome” dela.
Isto quer dizer que é possível usar outra shell (como a csh, por exemplo) ou, ainda instalar uma nova, que seja mais adequada para você.
Caso você não esteja usando o Bash, basta rodar ele, da linha de comando:


bash

Chega o momento em que você precisa aprender a criar um ou outro script.
O principal objetivo é automatizar tarefas repetitivas.

Introdução ao shell scripting

Vamos começar com o tradicional hello world!
Abra o seu editor favorito. Sugiro o nano ou o vim — mas você pode usar qualquer outro com que se sinta mais confortável.
O importante é manter o terminal aberto para executar os scripts criados.
Crie um arquivo chamado hello.sh, com o seguinte conteúdo:

echo "Hello world!"

grave e saia do editor.
Agora execute as instruções contidas no arquivo hello.sh:


bash hello.sh

Hello world!

O bash é um interpretador e nós o usamos para ler e rodar as instruções em hello.sh.
Contudo, é comum indicar explicitamente o interpretador que queremos usar, no início do arquivo de script, assim:

#!/bin/bash
echo "Hello world!"

Esta é uma boa prática de programação, que vale a pena observar sempre.
Como curiosidade, esta primeira linha é tradicionalmente chamada (em inglês) de “shebang line” ou apenas “shebang” (#!).
Se tivéssemos um script com código na linguagem Python, a shebang seria

#!/usr/bin/python

Use o comando whereis para localizar o interpretador desejado:


whereis perl

perl: /usr/bin/perl5.24-x86_64-linux-gnu /usr/bin/perl
 /etc/perl /usr/share/perl /usr/share/man/man1/perl.1.gz

Como tornar um script executável

Ao tentar executar o nosso script, do jeito que ele se encontra, no terminal, sem usar o bash, como interpretador, vai retornar um erro:


./hello.sh

bash: ./hello.sh: Permissão negada

O sistema sabe que deve interpretar as instruções através do bash… mas não há permissões para isto.
Este é um dos motivos pelos quais se afirma que o Linux/UNIX é ambiente hostil para vírus, enquanto arquivos de instruções autoexecutáveis.
Para que um arquivo seja executável, ele precisa ter permissão para isso.
O comando chmod (change mode) é o que pode realizar esta tarefa:


chmod +x hello.sh
./hello.sh

Hello world!

Leia mais sobre por que precisamos usar ./ no início do nome dos scripts para executá-los.

A extensão do nome do arquivo de script

Diferente do ambiente DOS/Windows, no Linux não é necessário usar extensões, para indicar ao sistema qual é o tipo de arquivo.
É opcional e é útil para sabermos sobre o tipo, contudo.
Você pode, se quiser, alterar o nome do seu arquivo de script para apenas ‘hello’.
Pessoalmente, prefiro usar os nomes dos meus arquivos de script sempre com uma extensão indicadora da linguagem de interpretação de cada um.

Este é o básico para começar a escrever scripts.
Daqui para frente, seu arquivo de script só precisa ser preenchido com comandos úteis.

Entenda porque você deveria mudar seu site para HTTPS

Se você tem um blog ou um site de comércio eletrônico, deveria começar a pensar seriamente em adotar o recurso de conexão segura para você e seus leitores.
Há vários motivos para isto.

O motivo mais banal e não menos importante é que o Google irá (cada vez mais) priorizar sites seguros na sua indexação.

A audiência, para quem tem um site sério, não é a principal preocupação, mas é um fator a se levar em consideração, convenhamos.

O motivo desta política do Google é a segurança. E este deveria ser o seu motivo também.
Já discutimos o assunto antes, no artigo É hora de criptografar toda a Internet.
Desta vez, quero reforçar e acrescentar argumentos.

Os protocolos de criptografia

Neste tópico, vou repassar alguns dos aspectos técnicos. Se você detesta isto, pule para o próximo. Sem mágoas. 😉
Sites HTTPS são os que possuem certificados SSL/TLS.
O TLS é abreviatura para Transport Layer Security (ou camada de segurança de transporte) e o SSL, Secure Sockets Layer (ou camada de soquetes de segurança).
Ambos são protocolos criptográficos que oferecem proteção aos dados durante o tráfego em uma rede de computadores.
Sites seguros oferecem suporte a este tipo de proteção entre o servidor e o navegador do visitante.
O principal objetivo do TLS é dar privacidade e garantir a integridade dos dados entre duas aplicações de computador.
Uma vez que o cliente e o servidor estabelecem a primeira conexão e concordam em usar o TLS, negociam uma conexão a partir de um procedimento conhecido como handshaking (aperto de mãos).
Durante o aperto de mãos, as duas pontas concordam com certos parâmetros, usados para estabelecer a segurança da conexão.
O procedimento tem por objetivo trafegar dados de forma privada (ou segura) com uso de um sistema de criptografa simétrica.

Por que criptografar os dados é importante para o seu site

É importante deixar claro que o protocolo SSL/TLS não criptografa dados armazenados, mas apenas os que estiverem em tráfego entre o servidor e o visitante.

Com este procedimento, você aumenta as condições de segurança e privacidade dos seus leitores.

Em vez de acessar o site em HTTP, seus leitores passam a acessá-lo via HTTPS, uma versão mais segura do protocolo padrão da web.
Entre os dados que passarão a ser melhor protegidos, constam:

  • o conteúdo do site enquanto ele estiver em tráfego
  • dados que o visitante deseja enviar para o servidor, documentos, cartão de crédito etc.
  • senhas de acesso ao site, de administradores(as), editoras(es) etc.

Se você é blogueiro(a) e realiza atividades administrativas no seu site, fora da sua casa, usando o wi-fi de outros locais, certamente, deveria considerar o uso desta camada adicional de proteção.
Se você tem um site de e-commerce ou comércio eletrônico, provavelmente está perdendo clientes que se preocupam com a segurança.
Obviamente, adotar o HTTPS, somente, não resolve todos os seus problemas de segurança.
Mas é um dos procedimentos mais simples e (atualmente) é gratuito (só custa o seu tempo).

É um primeiro passo de um conjunto de ações que compõem uma necessária política de segurança.

Se as informações forem interceptadas durante o tráfego, elas estarão “embaralhadas” aos olhos do intruso.

Como proceder para começar a usar o HTTPS no site

Atualmente, a maioria dos provedores de hospedagem oferecem a opções pagas e gratuitas de certificação SSL/TLS.
Se estiver disponível, use a gratuita.
Provedores, como o Dreamhost, oferecem a opção “Let’s Encrypt“, que é grátis, confiável e implementa a mudança automaticamente.
dreamhost ssl tls encryption
Existe também a opção “Self-signed“, voltada para sites em teste ou para uso de um grupo restrito — em resumo, só serve para quem sabe o que está fazendo.
Se você tiver dúvidas, contate o suporte da hospedagem ou consulte um usuário mais experiente.

Referências

Link para o site de hospedagem web do DreamHost.

Os primeiros passos com o QEMU

O QEMU é uma plataforma de emulação ou virtualização de diversas outras plataformas.
Desenvolvedores podem usar a aplicação para verificar o comportamento de seus softwares em arquiteturas diferentes.

Um servidor, com hardware poderoso, pode hospedar dezenas de outros servidores virtuais, permitindo que diversas empresas ou usuários rodem aplicações independentes (servidores web, armazenamento de arquivos etc.)
O avanço da tecnologia de virtualização ajudou a reduzir os custos de hospedagem de sites, por exemplo.
Neste texto, vou mostrar como criar um espaço (drive) virtual para armazenar arquivos, como erguer uma máquina virtual e rodar um sistema operacional nela.
Na minha máquina física, eu rodo o Debian 10 testing (Buster).
O sistema operacional hospedeiro, usado no exemplo será o Ubuntu 17.10 (Artful Aardvark) 64 bit.
Você pode ir até o site https://ubuntu.com e baixar outra versão (provavelmente mais atual que a minha) ou usar qualquer outra imagem ISO de sistema operacional.
Os princípios explicados neste texto são os mesmos para qualquer distro Linux ou outro sistema operacional.
Se quiser, veja outros exemplos de virtualização com o QEMU, neste mesmo site.
E sempre clique nos links para obter mais informações importantes sobre algum tema.

Como montar uma máquina virtual

É bem fácil pôr no ar um PC ou servidor virtual completo, usando o QEMU.
Na verdade, é possível fazer isto em 5 minutos.
Mas, se você pretende experimentar um sistema operacional (uma distro GNU/Linux, por exemplo), baixada da Internet, em um arquivo ISO, é possível indicar em que máquina, especificamente, você deseja rodar o seu sistema operacional.
A minha ISO do Ubuntu pode ser experimentada com o seguinte comando:


qemu-system-x86_64 ubuntu-17.10-desktop-amd64.iso

Se você pretende usar outras vezes esta distribuição e gostaria que as mudanças feitas nela fossem persistentes, crie um espaço de armazenamento específico para ela, com o qemu-img:


 qemu-img create -f qcow2 ubuntu17.qcow2 50G

Formatting 'ubuntu17.qcow2', fmt=qcow2 size=53687091200 encryption=off cluster_size=65536 lazy_refcounts=off refcount_bits=16

O comando, acima, cria uma imagem no formato qcow2, com o nome ‘ubuntu17.10.qcow2’ e com espaço de armazenamento de 50 Gigabytes.
Sinta-se à vontade para usar outros valores, mais adequados para você.
Se quiser obter informações sobre a imagem recém criada, use a opção ‘info’:


qemu-img info ubuntu17.qcow2 

image: ubuntu17.qcow2
file format: qcow2
virtual size: 50G (53687091200 bytes)
disk size: 324K
cluster_size: 65536
Format specific information:
    compat: 1.1
    lazy refcounts: false
    refcount bits: 16
    corrupt: false

No comando, abaixo, vou acionar a recém-criada unidade (ubuntu17.qcow2) e rodar a imagem ISO, baixada, do Ubuntu 17.10, como se fosse de um CD-ROM:


qemu-system-x86_64 -hda ubuntu17.qcow2 -cdrom ubuntu-17.10-desktop-amd64.iso -boot d

Ao final da linha, a opção ‘-boot d’, informa que o meu sistema virtual deve iniciar a partir da unidade ótica (CD-ROM).
Vamos melhorar isto?!
A seguir, vou adicionar opções que (respectivamente) habilitam o kvm, estabelecem uma quantidade de memória de 2048 MB e inscreve o nome da distro no título da janela do QEMU:


qemu-system-x86_64 -enable-kvm -m 2048 -name 'UBUNTU 17.10' -boot d -hda ubuntu17.qcow2 -cdrom ubuntu-17.10-desktop-amd64.iso

Ubuntu 17.10 tela inicial
Se você decidir continuar a instalação, o sistema irá sugerir o unidade virtual, criada com o qemu-img.
Observe a imagem abaixo:
Instalação do Ubuntu 17.10
Depois de instalado, você pode dispensar o arquivo de imagem ISO e rodar o sistema operacional apenas da unidade de armazenamento virtual. Para mim, o comando é o seguinte:


qemu-system-x86_64 -enable-kvm -m 2048 -name 'UBUNTU 17.10' -hda ubuntu17.qcow2

Leia mais sobre o uso do QEMU, no Linux.

Criptografe arquivos usando uma chave pública GPG

Antes de armazenar um arquivo com conteúdo sensível, convém protegê-lo com uma camada de criptografia forte.
Se você não precisa de recursos criptográficos muito fortes e se sente melhor usando a interface gráfica (GUI) do Linux, experimente usar o Xarchiver.

Neste texto vou mostrar como criptografar um arquivo (ou vários), usando uma chave pública, na linha de comando (CLI) do Linux, usando o gpg.
Depois de seguro, o arquivo pode ser armazenado em CD/DVD, em flash drive (pendrive), na nuvem etc.
É claro que você ou o destinatário precisa ter criado uma chave pública antes, a ser usada no procedimento.
No artigo como encriptar seus arquivos com gpg, ensinei uma maneira um pouquinho mais simplificada de aplicar a criptografia a arquivos, usando apenas uma senha criada na hora.
Neste texto, vamos abordar um método mais sofisticado — sob o ponto de vista da segurança.
É necessário saber o nome do arquivo e o email usado para registrar a chave pública, em questão, além da sua própria chave privada.


Tá confuso? Então leia mais sobre o gpg.

O comando para criptografar um arquivo, com o uso da sua chave pública é o seguinte:

gpg -e -r email seu-arquivo

Troque, no comando acima, “email”, pela conta de email usada para definir a public key.
No lugar de “seu-arquivo”, use o nome do arquivo a ser criptografado.
Veja um comando real:


gpg -e -r justincase@gmail.com texto.txt

Será gerado um segundo arquivo criptografado ‘texto.txt.gpg’.
Por segurança, remova o original e mantenha apenas a versão segura — com extensão .gpg.
Este arquivo pode ser guardado em segurança.

Se você deseja enviar este arquivo para alguém, deve usar a chave pública do destinatário, ou seja, informar a conta de email que este usou pra registrar sua public key.
O destinatário do arquivo poderá abri-lo usando o gpg:


gpg texto.txt.gpg

Novamente será criado um arquivo ‘texto.txt’, descriptografado.
Se for texto puro, pode ser lido com o comando cat:


cat texto.txt