Use o utilitário tr para substituir caracteres dentro de arquivos texto

O tr, no Linux, é usado para traduzir ou remover caracteres dentro de arquivos de sequências de texto.
Pode ser usado também para fazer substituições de caracteres, como veremos nos exemplos abaixo — que fazem uso também do utilitário cat.
Para os meus exemplos, vou criar um arquivo a partir do /etc/fstab:


cp /etc/fstab teste.txt

Agora tenho um lugar mais seguro para brincar…
Este é o conteúdo original dele:


cat teste.txt 

# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
#                
# / was on /dev/sdb1 during installation
UUID=ae9797c5-677a-400d-aad7-4fbe960b94ad /               btrfs   defaults        0       0
# /home was on /dev/sda1 during installation
UUID=d44c3678-1743-4c24-85b1-a6f437f4bb87 /home           btrfs   defaults        0       0
# o swap fica em /dev/sdb2 /dev/sda2 
/dev/sdb2   swap    swap    defaults    0   0
/dev/sda2   swap    swap    defaults    0   0

Como substituir espaços por tabulações dentro de um arquivo texto

Com o pipe |, é possível passar o conteúdo de um arquivo texto para o tr, que realiza o procedimento, no caso abaixo, de substituir os espaços por tabulações:


cat teste.txt | tr ':[space]:' '\t' > teste-a.txt

Use o cat, para ver o resultado no arquivo teste-a.txt:


cat teste-a.txt

Se você prefere substituir cada espaço por 2 espaços, troque o ‘\t’ por ‘ ‘ (com 2 espaços dentro):


cat teste.txt | tr ':[space]:' '  ' > teste-a.txt

Experimente usar ‘ ‘ (com espaços de verdade dentro), em vez de ‘:[space]:’, para ver a diferença.

Como converter todos os caracteres minúsculos para maiúsculos e vice-versa, dentro de um texto

Com o comando abaixo, vamos converter o conteúdo do arquivo teste.txt de minúsculas para maiúsculas:


cat teste.txt | tr a-z A-Z > teste-b.txt

Veja o meu resultado:


cat teste-b.txt 

# /ETC/FSTAB: STATIC FILE SYSTEM INFORMATION.
#
# USE 'BLKID' TO PRINT THE UNIVERSALLY UNIQUE IDENTIFIER FOR A
# DEVICE; THIS MAY BE USED WITH UUID= AS A MORE ROBUST WAY TO NAME DEVICES
# THAT WORKS EVEN IF DISKS ARE ADDED AND REMOVED. SEE FSTAB(5).
#
#                
# / WAS ON /DEV/SDB1 DURING INSTALLATION
UUID=AE9797C5-677A-400D-AAD7-4FBE960B94AD /               BTRFS   DEFAULTS        0       0
# /HOME WAS ON /DEV/SDA1 DURING INSTALLATION
UUID=D44C3678-1743-4C24-85B1-A6F437F4BB87 /HOME           BTRFS   DEFAULTS        0       0
# O SWAP FICA EM /DEV/SDB2 /DEV/SDA2 
/DEV/SDB2   SWAP    SWAP    DEFAULTS    0   0
/DEV/SDA2   SWAP    SWAP    DEFAULTS    0   0

Se você tem alguma sugestão de uso do tr, deixe a gente saber, nos comentários 😉

Como criar um registro da sua linha de comando no Linux

Você pode querer registrar todos os comandos dados durante uma sessão, no terminal.
Usualmente, para depois analisar com calma e, se for o caso, criar um script a partir deles, para automatizar a tarefa.
Pode ser útil também em aulas, quando o professor deseja aplicar um teste. O aluno apenas envia para ele o arquivo resultado.
O utilitário script inicia automaticamente a gravação (no arquivo typescript) de todas os comandos executados no seu terminal.
Quando terminar e desejar sair da gravação, use o comando exit.
Veja um exemplo:


script


Script iniciado, o arquivo é typescript
justincase@ultra-5 

echo "Toda esta linha será gravada em um arquivo chamado typescript."

ls # esta também.

exit

Script concluído, o arquivo é typescript

cat typescript

linux script save
Se preferir, é possível indicar um outro nome para o seu arquivo:


script meuarquivo.log

Como comportamento padrão, o script sobrescreve o arquivo existente.
Use a opção ‘–append’ ou ‘-a’ para adicionar código a um arquivo preexistente.


script --append backup.sh

Reexecute o último comando como superusuário

O utilitário sudo tem a função de investir temporariamente usuários comuns nas vestes do administrador do sistema.
Se você rodou um comando e descobriu que ele precisava ser executado como root, use apenas o sudo acompanhado de ‘!!’.
sudo apt update
Veja um exemplo:


apt update

Lendo listas de pacotes... Pronto
W: chmod 0700 of directory /var/lib/apt/lists/partial failed - SetupAPTPartialDirectory (1: Operação não permitida)
E: Não foi possível abrir arquivo de trava /var/lib/apt/lists/lock - open (13: Permissão negada)
E: Impossível criar acesso exclusivo ao directório /var/lib/apt/lists/
W: Problema ao remover o link do ficheiro /var/cache/apt/pkgcache.bin - RemoveCaches (13: Permissão negada)
W: Problema ao remover o link do ficheiro /var/cache/apt/srcpkgcache.bin - RemoveCaches (13: Permissão negada)

Como você pode ver, o comando acima, precisava de privilégios administrativos para ser executado.
Para resolver isto, não precisa digitar tudo de novo.
O comando abaixo, resolve:


sudo !!

sudo apt update
[sudo] senha para justincase: 
Ign:1 http://dl.google.com/linux/chrome/deb stable InRelease
Ign:2 http://ftp.br.debian.org/debian stretch InRelease                                
Atingido:3 http://ftp.br.debian.org/debian stretch-updates InRelease                   
Atingido:4 http://linux-libre.fsfla.org/pub/linux-libre/freesh freesh InRelease        
Atingido:5 http://dl.google.com/linux/chrome/deb stable Release                        
Atingido:6 http://ftp.br.debian.org/debian stretch Release                             
Atingido:7 http://ftp.debian.org/debian stretch-backports InRelease                    
Atingido:8 http://security.debian.org/debian-security stretch/updates InRelease        
Lendo listas de pacotes... Pronto                         
Construindo árvore de dependências       
Lendo informação de estado... Pronto
All packages are up to date.

Use o yes, para dar respostas automáticas no Linux

O aplicativo yes tem a função de repetir uma string, como resposta às requisições de outros programas.
Pode funcionar como um robô, pré-programado para dar uma mesma resposta a um outro programa.
Apesar do nome, a resposta, não precisa ser “yes”. Pode ser “no”, “não” ou qualquer outra coisa.
Veja um exemplo de execução:


yes "eu não quero ser repetitivo"

A instrução acima, irá fazer com que a cadeia “eu não quero ser repetitivo” seja repetida indefinidamente, até você a interromper, com as teclas Ctrl + c.
en não quero ser repetitivo
Pode usar o utilitário com o apt:


yes | apt full-upgrade

Se preferir que ele responda “no”, use-o assim:


yes no | apt full-upgrade

É um utilitário bem simples com uma função bem simplória.
Às vezes, ele pode ser bem útil.

Como manter a execução de um programa, mesmo após finalizar a sessão no Linux

Ao finalizar uma sessão no Linux (na GUI ou na CLI), o sistema operacional entende que todos os programas e processos iniciados pelo usuário devem ser fechados.
Terminar uma sessão não é a mesma coisa que desligar o computador.
Comumente, as pessoas encerram uma sessão, para iniciar outra, sob um novo perfil de usuário.
Este pode ser o momento ideal para executar programas de manutenção, como um script de backup, por exemplo.
O truque pode ser realizado com o utlitário nohup.

O nohup executa comandos imunes a hangups e envia seus resultados (output) a um terminal non-tty.
Em resumo, ele mantém o comando vivo, em execução, mesmo após o fim da sua sessão.
O nome é derivado da junção dos 2 termos: no hangup.

Veja um exemplo, tirado do manual do comando:


nohup wget site.com/file.zip

Outro caso em que ele pode ser útil, é na atualização do sistema.
Se você estava adiando o update, para não sobrecarregar a sua conexão, pode rodar o procedimento ao sair:


nohup sudo apt update

Webmasters podem se valer deste utilitário, para manter procedimentos em funcionamento, mesmo após se desconectarem do servidor remoto.
Como padrão, um arquivo será gerado no diretório local, em que o nohup foi executado, com o nome de nohup.out — contendo as saídas do comando que ele executou.
Para atualizar o sistema, abra um novo terminal e autentique-se como root. Agora rode o procedimento de atualização:


nohup apt update; apt -y full-upgrade


nohup: ignorando entrada e anexando saída a 'nohup.out'
Lendo listas de pacotes... Pronto
Construindo árvore de dependências
Lendo informação de estado... Pronto Calculando atualização... Pronto ...

Pode fechar o terminal.
Quando quiser verificar o andamento da sua atualização, basta dar uma olhada no arquivo nohup.out:


sudo cat nohup.out

linux terminal nohup apt