Linux é mais fácil que muita gente imagina. E essa simplicidade se torna uma ferramenta poderosa quando usada da forma certa.
Assim que comecei a usar o Linux, confesso, que usava essa simplicidade de forma não tão produtiva, pois dava certo, mas achava algumas coisas muito trabalhosas. Com o passar do tempo, fui aprendendo algumas formas mais efetivas de usar essas ferramentas.

O intuito desse post é passar algumas dicas que me ajudaram a melhorar a minha produtividade com o Linux. Todas as dicas são básicas, mas que economizam tempo e paciência.

Programas Básicos:

apt

Sei que muita gente é acostumada ao “apt-get” e acha que o “apt” é a mesma coisa, porém o “apt” vem com mais melhorias em seu código e é muito mais organizado para o usuário.

vim

Assim que você começa a usá-lo, não entende o porque as pessoas usam tanto. Até pra sair é “complicado”, tendo que digitar “:wq” para sair e salvar. Porém, algumas funcionalidades o fazem ser “amado” por tantos. Mais a frente vou colocar alguns comandos.

sl

Apenas instalem e nunca mais errem um list! Ou não!

htop

O caso do “htop” é semelhante ao “apt x apt-get”, onde seria “top x htop”. Nesse caso, a diferença é mais visível, pois a organização e as cores do htop dão uma organização melhor que a do “top”

iftop

É o “htop” para placas de redes.

iotop

É o “htop” de I/O de disco.

locate (ou mlocate)

O locate serve para pesquisar um arquivo dentro do sistema. Sim, já existe o “find”, que abordo mais a frente também, mas o locate torna a busca mais rápida, pois ele armazena a busca em um arquivo. Estando tudo indexado em um arquivo, o locate vai fazer a busca nesse arquivo e não no Hd todo, assim sendo mais rápido. Para atualizar esse arquivo basta usar o comando “updatedb”. Ele já vem por padrão no RHEL/Centos, mas na família Debian basta um “apt install mlocate”.

terminator

Depois que descobri esse emulador de terminal, consigo ter uma organização das telas dos terminais muito melhor. A forma que ele divide as telas ajuda bastante para deixar o trabalho mais efetivo, fora a sua customização.

Comandos Básicos:

Passado os programas básico (sim, lista pequena e quase óbvia), dicas de como costumo usar alguns comandos.

ps fuxa

Essa dica aprendi com o Mestre Pedro Veríssimo. O “fuxa” mostra o ps com usuário, PID, %cpu, %mem, TTY, horário do início do processo, o tempo desse processo e o comando no formato de árvore. Para saber o que cada argumento faz, leia o manual (man ps). Tente combinações que você consiga gerenciar melhor os processos rodando nos seus sistemas.

ss -a

O netstat está obsoleto a alguns anos, então essa dica é mais uma atualização. Você pode ler sobre isso nessa reportagem do site Linux Descomplicado. Sobre o assunto, estou criando coragem (e amadurecendo as ideias) para abordar isso de uma forma mais completa. “Manter velhos hábitos, mas que eu sei o que estou fazendo e meu sistemas fica estável” x “Me atualizar, utilizando novas ferramentas, aprendendo novas maneiras de gerir os sistemas, mas que não sei como é o comportamento a longo prazo”.

cd –

Comando básico que muita (mesmo) gente ignora. Serve para voltar ao diretório anterior que você estava. Favor não confundir com o “cd ..” que sobe um diretório. Exemplo: se vocês estava em “/etc/network/interfaces.d/” e foi para “/var/log/”, ao digitar “cd -” você “volta” para “/etc/network/interfaces.d/”. Caso o comando fosse “cd ..” você subiria um nível, indo para “/var/”.

cd ~

Comando que faz você voltar para o home do atual usuário. Se estiver em “/etc/network/interfaces.d/” e digitar “cd ~”, vou para “/home/bruno/”

sudo !!

Já aconteceu de você usar um comando “gigante” e quando apertou “Enter” viu que esqueceu o “sudo” no começo? Eu sei a raiva que isso gera. Aí você, no modo mais “prático”, usa a seta para cima, depois home, depois digita sudo e enter novamente. Não é isso? Era! Basta “sudo !!” e o último comando será executado como se o sudo estivesse no começo. Testa aí.

ctrl + r

Outra do Mestre Pedro Veríssimo. É uma busca dentro do history. Você vai digitando a busca e ele já mostra o comando, bastando um simples “Enter”. E cada vez que usa a combinação ctrl + r enquanto está buscando, ele vai mostrando outros resultados. Nada mais de “history | grep” quando se sabe o que quer procurar, certo?

history + !número

Mesmo com a dica acima, o history é importante. A busca serve pra quando você lembra o que foi digitado, mas e quando não se lembra? history, claro. Aí você acha o que quer, vai selecionar, copiar (ctrl + insert) e depois colar (shift + insert), né? Não mais. Digamos que o comando que você queira está listado como o 149, basta digitar !149 e o comando será executado.

Outras Dicas:

Abaixo alguns comandos precisei usar para situações diversas.

Localizar um tipo de arquivo e a partir de um certo tamanho.

Como assim? Preciso encontrar todos meus vídeos no formato AVI e com mais de 700MB:

find /home/bruno/Vídeos -type f -name “*.avi” -size “+700M” -exec ls -lah {} \;

Mas o segredo é tentar outras combinações como exemplo: arquivos maiores que 100Mb, mas menores que 200Mb:

find /home/bruno/Vídeos -type f -name “*.avi” -size “+100M” -size “-200M” -exec ls -lah {} \;

Dica boa pra quem ainda tem aquelas fotos com o nome “dsc000…”, só colocar o -iname

 

Trabalhando com diretórios em sequência.

Se você já fez “mkdir pasta01/ pasta02/ pasta03/ pasta04/”, você conseguiu o que queria, mas e se for 50 pastas? Vai fazer um shell script com alguma estrutura de laço para repetir até o 50? Pode ser, mas também dá um trabalho. E que tal um comando só?

mkdir -p /home/bruno/pasta{1..50}

Massa, né? E se dentro dessas pastas você tenha que criar outras 10 pastas?

mkdir -p /home/bruno/pasta{1..50}/subpastas{1..10}

Agora sim, muito massa. Mas não se limite aí, pois esse comando não é exclusivo do mkdir, muito pelo contrário. Qualquer comando que trabalhe com os diretórios e arquivos, aceita esses argumentos. Um bom exemplo é apagar essas 50 pastas

rm -rf /home/bruno/pasta{1..50}

 

Criando um “Alias” da maneira certa.

Já vi muitos “tutoriais” ensinando a criar tutorial da forma certa: alias ll=’ls -lahF’, por exemplo. Mas na hora de deixar isso permanente, muita gente criar um script pra iniciar junto com o sistema e assim atribuir esse alias. Só que no linux existe um arquivos pra isso e nele já existe alguns alias e até com exemplo. Basta editar (usando o vim, né?) o arquivo .bashrc que fica no diretório home do seu usuários:

vim ~/.bashrc

Depois só salvar, fechar o terminator (claro!) e abrir novamente. o “ll” foi exemplo, pois algumas distribuições já vem com esse alias, mas você pode adicionar qualquer alias nesse arquivo. Exemplo para atualização com o usuário root:

alias atualizar=”apt update && apt -y upgrade”

Usando melhor o VIM

O VIM tem milhões de atalhos, que você pode conferir alguns aqui, mas os mais básicos parecem ser os mais ignorados:

gg = Início da primeira linha do arquivo
G = Início da última linha do arquivo
yy = Copia a linha atual do cursor
y⇑ = Copia a linha do cursor mais a linha acima
y⇓ = Copia a linha do cursor mais a linha abaixo
y20⇑ = Copia a linha do cursor mais as 20 linha acima
y20⇓ = Copia a linha do cursor mais as 20 linha abaixo
p = Cola a linha abaixo da posição do cursor
P = Cola a linha acima da posição do cursor
dd = Apaga a linha atual do cursor
d⇑ = Apaga a linha do cursor mais a linha acima
d⇓ = Apaga a linha do cursor mais a linha abaixo
d20⇑ = Apaga a linha do cursor mais as 20 linha acima
d20⇓ = Apaga a linha do cursor mais as 20 linha abaixo
u = Desfaz o último comando

Se o seu terminator (né?) está com o fundo preto, diga ao VIM isso para que ele possa mostrar tudo nas cores certas.

:set backgroud=dark

Quando se faz uma busca dentro do VIM (/termo), há algumas opções:
N = Busca o próximo termo acima da posição atual do cursor
n = Busca o próximo termo abaixo da posição atual do cursor

Para realçar o termo que foi buscado no texto:

:set hlsearch

E para remover esse realce da busca:

:nohlsearch

 

Substituição dentro do VIM

Caso queira substituir um dentro da linha onde o cursor está posicionado, basta fazer:

:s/foo/bar/g

No nosso caso, onde tiver “foo” na linha atual, será substituído por “bar”.
Caso queira no documento todo, basta adicionar % no inicio:

:%s/foo/bar/g

 

Como disse no começo, são dicas básicas, mas que me ajudam muito e espero que ajude mais pessoas.
Vou postar os sites que descobri alguns desses comandos e que (alguns) estão mais completos em suas explicações e com outros exemplos:

https://debian-handbook.info/browse/pt-BR/stable/index.html
https://www.vivaolinux.com.br/artigo/Diario-de-um-SysAdmin-1-Truques-Macetes-Atalhos-e-Comandos
https://www.vivaolinux.com.br/artigo/Diario-de-um-SysAdmin-2-Truques-Macetes-Atalhos-e-Comandos
http://michael.peopleofhonoronly.com/vim/vim_cheat_sheet_for_programmers_colorblind.png
http://vim.wikia.com/wiki/Vim_Tips_Wiki 

Ao som de: Dream Theater – Erotomania/Voices/The Silent Man (A Mind Beside Itself) – Live Scenes from New York 

Dica rápida sobre fazer uma conexão ssh sem senha.
Nesse cenário há dois “PCs”:
O primeiro, um cliente que vai ser conectar ao servidor via SSH.
O segundo, é o servidor que vai receber a conexão ssh do cliente.
Ex: Seu Debian 8 (PC01) vai se conectar ao servidor CentOs7 (PC02) utilizando SSH.

Serão utilizadas duas chaves: uma pública e uma privada.
Essas chaves serão geradas no CLIENTE (Debian8 PC01 no nosso exemplo)!
Observação importante: A CHAVE PRIVADA NUNCA DEVE SER COMPARTILHADA! A Chave pública, como o nome diz, pode ser compartilhada normalmente.

Para gerar a chave no cliente (PC01) basta executar o seguinte comando:

ssh-keygen -t rsa

Após isso, o terminal vai exibir algumas informações, sendo que você pode deixá-las todas em branco apenas apertando ENTER em todas as opções.
Uma das informações que serão exibidas é o local onde essas chaves serão armazenadas. Caso esteja utilizando o usuário ROOT, o diretório será “/root/.ssh/”. Caso esteja usando outro usuário, procurar na HOME desse usuário “~/.ssh/”
Agora já temos as duas chaves. A chave privada que foi gerada está no arquivo “id_rsa“. A chave pública que foi gerada está no arquivo “id_rsa.pub

O próximo passo é transferir a chave PÚBLICA para o nosso servidor (Centos7, PC02) utilizando o scp. A transferência será para o diretório “/tmp”

scp /root/.ssh/id_rsa.pub root@ipdoservidor:/tmp/

será exigida a senha

 
Agora acesse o servidor (Centos7, PC02). Pode ser utilizando o ssh também

ssh root@ipdoservidor

será exigida a senha

 
A chave pública está no diretório /tmp que foi transferido anteriormente usando scp.
No diretório /root/.ssh há um arquivo chamado authorized_keys. Esse arquivo contém as chaves públicas autorizadas para a conexão com esse servidor. No nosso caso, vamos copiar o conteúdo da chave pública do cliente (Debian 8, PC02) para dentro desse arquivo.
Pode ser feito abrindo o arquivo onde tem a chave pública, copiando o seu conteúdo, e colando em authorized_keys, porém vamos utilizado o cat para ser mais rápido e prático.

cat /tmp/id_rsa.pub >> /root/.ssh/authorized_keys

o comando “cat” acima leu o conteúdo do arquivo id_rsa.pub e jogou ele para o final do arquivo authorized_keys utilizando o >>, assim não apagando as outras chaves que possam haver já registradas.

Após esses procedimentos, o CLIENTE já conseguirá se conectar utilizando o SSH.

Espero ter ajudado. Qualquer dúvida e sugestão só deixar nos comentários.
Abraços e até mais.

Segue um script em Python 2 para testar se a porta está aberta ou fechada.

#!/usr/bin/python
import socket
ip = raw_input("Entre com o endereco de IP: ")
port = input("Entre com o numero da porta: ")
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
if sock.connect_ex((ip,port)):
    print "A porta", port, "esta fechada"
else:
    print "A porta", port, "esta aberta"