Como concatenar strings na shell do Linux

Concatenar ou juntar cadeias de caracteres (ou, simplesmente, strings), na shell (ou linha de comando) do Linux é um trabalho fácil e descomplicado.
Apenas fique atento a alguns detalhes… e tudo terminará bem. 😉

O procedimento pode ser muito útil dentro de shell scripts ou para uso em arquivos de configuração do Bash.
Você pode concatenar strings dentro do seu .bashrc, para obter resultados ou “hackear” o seu sistema.

Para sermos objetivos, abra um terminal e vamos definir as seguintes variáveis, como exemplo:


variavel1="elias"
variavel2=".praciano"
variavel3=".com"

A concatenação consiste, de maneira resumida, em juntar os valores das 3 strings, acima. Isto pode ser feito assim:


meusite=$variavel1$variavel2$variavel3
echo $meusite

elias.praciano.com

Note que não precisa usar o símbolo ‘$’ ao definir as variáveis. Mas é obrigatório no momento de se referir e fazer operações com elas.

Instale centenas de fontes do Google Fonts no Linux

O repositório de fontes Google Fonts disponibiliza gratuitamente quase 900 fontes, que podem ser usadas no GIMP, no seu editor de textos ou para personalizar todo o seu sistema, do jeito que você quiser.
Para ser exato, na última vez que olhei, havia 850 fontes disponíveis — o pacote tem 380 Mb, aproximadamente.

Se preferir, vá até o site e baixe apenas as que gostar.
Neste post vou mostrar como baixar todas de uma só vez.

O Google Fonts é um dos principais locais de hospedagem de fontes “opensource”, na web.
O repositório contém centenas de famílias de fontes disponíveis para download individual ou em um único pacote.

Já abordei este assunto, anteriormente, em um post voltado para o Ubuntu.
Neste texto, quero falar do assunto de maneira mais genérica, para que possa servir a qualquer distribuição GNU/Linux.
Me acompanhe.
google fonts

Prepare o sistema

O script original de instalação foi desenvolvido por Michalis Georgiou.
O que segue, abaixo, é uma reedição da versão modificada pelo Andrew do Webupd8.
Só alterei 2 coisas:

  1. Traduzi para português e
  2. removi a linha de instalação do wget, para tornar o script mais enxuto e universal. Assim ele pode ser executado em qualquer distro, sem precisar ser editado.

Como consequência, você terá que instalar o wget por conta própria, antes de rodar o script.

No Debian e no Ubuntu, use o apt:


sudo apt install wget

No Fedora, use o dnf:


sudo dnf install wget

O script de instalação

Se tiver interesse em dar uma olhada ou baixar o script original, vá até o site no Github: https://raw.githubusercontent.com/hotice/webupd8/master/install-google-fonts

Segue a minha edição:


# Original author: Michalis Georgiou 
# Modified by Andrew http://www.webupd8.org 
# Traduzido para português por Elias Praciano https://elias.praciano.com

_wgeturl="https://github.com/google/fonts/archive/master.tar.gz"
_gf="google-fonts"

# certifica que não há outro arquivo com o mesmo nome
rm -f $_gf.tar.gz

echo "Conectando ao servidor Github. Aguarde...."
wget $_wgeturl -O $_gf.tar.gz

echo "Extração do arquivo baixado..."
tar -xf $_gf.tar.gz

echo "Criação do diretório /usr/share/fonts/truetype/$_gf folder"
sudo mkdir -p /usr/share/fonts/truetype/$_gf

echo "Instalação das fontes .ttf em /usr/share/fonts/truetype/$_gf"
find $PWD/fonts-master/ -name "*.ttf" -exec sudo install -m644 {} /usr/share/fonts/truetype/google-fonts/ \; || return 1

echo "Atualização do cache de fontes..."
fc-cache -f > /dev/null

# Limpeza. Remove o arquivo .tar.gz. O usuário poderá ainda precisar da pasta
rm -f $_gf.tar.gz

echo "Pronto."

Lembre-se, o script depende do programa wget e vai dar erro, se este não estiver instalado.
Copie o código acima e cole dentro do seu editor de textos favorito.
Em seguida, salve o script e saia do editor.
Eu salvei o meu script com o nome gfinstall.sh
Para torná-lo executável, use o chmod:


chmod +x gfinstall.sh

Agora, rode o seu script:


./gfinstall.sh 

Conectando ao servidor Github. Aguarde....
--2018-03-22 10:57:37--  https://github.com/google/fonts/archive/master.tar.gz
Resolvendo github.com (github.com)... 192.30.253.112, 192.30.253.113
Conectando-se a github.com (github.com)|192.30.253.112|:443... conectado.
A requisição HTTP foi enviada, aguardando resposta... 302 Found
Localização: https://codeload.github.com/google/fonts/tar.gz/master [redirecionando]
--2018-03-22 10:57:38--  https://codeload.github.com/google/fonts/tar.gz/master
Resolvendo codeload.github.com (codeload.github.com)... 192.30.253.120, 192.30.253.121
Conectando-se a codeload.github.com (codeload.github.com)|192.30.253.120|:443... conectado.
A requisição HTTP foi enviada, aguardando resposta... 200 OK
Tamanho: não especificada [application/x-gzip]
Salvando em: “google-fonts.tar.gz”

google-fonts.tar.gz                                 [                                               <=>                                                    ]  33,27M  3,72MB/s               


2018-03-22 10:59:21 (3,76 MB/s) - “google-fonts.tar.gz” salvo [405548495]

Extração do arquivo baixado...
Criação do diretório /usr/share/fonts/truetype/google-fonts folder
[sudo] senha para justincase: 
Instalação das fontas .ttf em /usr/share/fonts/truetype/google-fonts
Atualização do cache de fontes...
Pronto.

Terminado o processo de download e instalação, você já pode se servir das novas fontes no sistema.
Experimente abrir as configurações de tema do GNOME ou o seu aplicativo favorito, para ver as novas possibilidades.
fontes google no GNOME

Obtenha frases aleatórias e divertidas no terminal do Linux

Se hackers gostam de usar a linha de comando (CLI), consistindo de um terminal com fundo escuro, também gostam de se divertir durante o uso.
O ‘fortune’ é uma das longas tradições do universo UNIX. Se você ainda não a conhece, ainda tá em tempo.

Consiste em um pequeno programa, acompanhado de um banco de dados de frases e sentenças.
As frases podem ser engraçadas ou podem exibir curtas dicas de uso do sistema operacional.
Estão disponíveis em vários idiomas, incluindo o português.
Instale o fortune, usando o seu gestor de pacotes favorito (yum, dnf, apt etc).
No Debian/Ubuntu, use o apt:


sudo apt install fortune

Uma vez instalado, já pode ser executado no terminal:


fortune

    "The glory of creation is in its infinite diversity."
    "And in the way our differences combine to create meaning and beauty."
        -- Dr. Miranda Jones and Spock, "Is There in Truth No Beauty?",
           stardate 5630.8

Acima, diálogo retirado da série Star Trek (1968).
Star Trek

Como controlar ou escolher as frases do fortune

Se quiser ver mais frases relacionadas ou contendo a string “Star Trek”, use a opção -m:


fortune -m "Star Trek"

Prefere o Doctor Who!?


fortune -m "Doctor Who"

Fique atento para a caixa (maiúsculas/minúsculas) das palavras procuradas. O Fortune é sensível à caixa.

Como obter frases ofensivas no terminal

As frases ofensivas são parte da tradição e da brincadeira.

Aviso: Por favor, só ligue esta opção se você estiver querendo, do fundo do seu coração, ser ofendido(a).

Na maioria das distribuições, contudo, o banco de dados de frases ofensivas não é instalado.
É necessário fazer a instalação manual, se quiser:


sudo apt install fortunes-off

Agora é só executar, com a opção ‘-o’:


fortune -o

Obtenha dicas de uso do Linux

Para ver frases mais construtivas (com dicas de uso do Debian, por exemplo), instale o pacote Debian Hints:


sudo apt install fortunes-debian-hints

E rode o programa:


fortune debian

ou


fortune debian-hints

Como obter a versão em português

Para ver frases selecionadas em português, é necessário instalar o arquivo fortunes-br:


sudo apt install fortunes-br

e rodar o programa assim:


fortune brasil

Como configurar para mostrar uma “fortuna” toda vez que abre um terminal

Este é o jeito que eu gosto de usar o fortune: com uma frase a cada vez que abro um terminal.
fortune quincas borba
Para isto, inclua o comando ‘fortune’, da maneira que achar melhor a sua execução, ao final do arquivo ~/.bashrc.

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.

Como fazer backup automático do Linux em CD ou DVD

Há inúmeros tutoriais ensinando a fazer backup, Internet afora.
A melhor maneira de fazer seus backups continua sendo através de um script de execução automática. Assim, ninguém precisa se lembrar de realizar esta tarefa tão importante.

O script, que segue, usa o Bash e 3 programas básicos:

  • genisoimage — para criar uma imagem ISO, prontinha para ser gravada em CD ou DVD
  • growisofs — para queimar a imagem ISO na mídia, em branco, que se encontra no drive
  • cron — para agendar e executar o seu script

Vou também usar o espeak, no meu script, para obter um retorno audível sobre o procedimento.
Se preferir um script silencioso, bastar remover ou editar as linhas que façam referência ao programa.

Não lembro qual foi a última vez em que ouvi CD no computador. Também é raro assistir ao conteúdo de um DVD, atualmente.
É em função dos backups diários, que o meu drive continua sendo mais importante do que nunca.

Altere os exemplos dados, para que se encaixem melhor às suas necessidades e não esqueça de olhar o conteúdo dos links, caso queira obter mais informações sobre o assunto.

#!/bin/sh
# Este script depende do genisoimage, growisofs e do espeak (opcionalmente).

# Informa que o procedimento irá começar.
echo -e "\niniciando a sequencia de backup ... "
espeak -v pt-br "Iniciando a sequencia de backup."

# Criar o nome do arquivo de backup
hoje=$(date +'%A-%d-%m-%Y');
nomearquivo=backup-$hoje.iso
echo "criando o arquivo $nomearquivo"

# Cria a imagem .iso a partir do diretório ~/temp.
# Altere o nome do diretório para o mais adequado para você.
genisoimage -o $nomearquivo ~/temp
ls -l $nomedoarquivo

# Avisando que genisoimage terminou.
echo -e "\no arquivo $nomearquivo foi criado"
espeak -v pt-br "O arquivo ISO foi gerado."

# o CD/DVD será gravado.
# Verifique se o endereço do dispositivo está correto para o seu sistema.
echo -e "\na mídia será apagada para abrigar o novo arquivo de backup"
espeak -v pt-br "A mídia será apagada para abrigar o novo arquivo de backup"
growisofs -dvd-compat -Z /dev/dvdrw=$nomearquivo

espeak -v pt-br “estou falando em português.”

Verifique o script e, se tudo estiver de acordo com suas expectativas, insira uma chamada para ele no cron.

Referências

já falei antes sobre o genisoimage e o growisofs. Se tiver dúvidas, leia o post. 😉

http://crunchbang.org/forums/viewtopic.php?id=18298.