Conheça 7 ferramentas do GNU que são o poder da linha de comando

Ferramentas indispensáveis para você evoluir na intimidade com terminal .


Conheça 7 ferramentas do GNU que são o poder da linha de comando


O Projeto GNU é uma organização de Software Livre que criou o termo Open Source que hoje é largamente utilizado por diversas empresas .

O nome GNU é um acrônimo para: GNU, is Not Unix . E isso quer dizer que:

Os comandos Unix© fizeram tanto sucesso que diversos programadores e empresas queriam “copiá-los” . E a maioria incluía o nome Unix© no próprio nome, exemplos: HP Unix, Berkeley Unix, … e por aí vai.

Mas a AT&T, detentora dos direitos autorais do Unix© e do seu nome, proibiu o uso do nome do Unix© para projetos similares à ele.

Daí o GNU teve a ideia de fazer uma sátira usando o nome, mas dizendo que não era Unix©. 😛

Outra coisa é que o código fonte dos programas do Unix© não estavam disponíveis e mesmo assim, quando utilizados por fins de estudos, nesse caso para a Universidade da Califórnia, Berkley, que mais tarde deu início ao BSD, possuíam licenças restritivas .

Então, o GNU criou alternativas, ou seja, programas que faziam a mesma coisa e com o código fonte disponível, além de possuírem uma licença(criada por eles, a GPL) que permitia até a redistribuição .

A organização que distribui os softwares criados pelo Projeto GNU é a Free Software Foundation sob os termos da licença GNU General Public License (GNU GPL). Saiba mais .

Um dos maiores diferenciais dos Softwares do GNU é o fato de usar o padrão POSIX que o torna portável para qualquer sistema operacional .

Avançar em comandos do GNU é avançar em ter destreza no terminal . Então, vamos lá conhecer 7 ferramentas indispensáveis do GNU para você !!!


1. GCC

GCC


GCC significa GNU Compiler Collection, é uma coleção de compiladores e otimizadores para várias linguagens de programação, dentre elas: C, C++, Java, Go, Fortran, Ada, D, Objective-C, Objective-C++ e entre outras.

Com quase 20 milhões de linhas de código, o GCC é um dos maiores programas gratuitos existentes no mundo .

Possui a maior gama de suporte de arquiteturas, dentre elas:

AArch64, Alpha, ARM, AVR, Blackfin, eBPF, Epiphany (GCC 4.8), H8/300, HC12, IA-32 (x86), IA-64 (Intel Itanium), MIPS, Motorola 68000, MSP430, Nvidia GPU, Nvidia PTX, PA-RISC, PDP-11, PowerPC, R8C / M16C / M32C, RISC-V, SPARC, SuperH, System/390 / zSeries, VAX, x86-64, 68HC11, A29K, C6x, CR16, D30V, DSP16xx, ETRAX CRIS, FR-30, FR-V, IBM ROMP, Intel i960, IP2000, M32R, MCORE, MIL-STD-1750A, MMIX, MN10200, MN10300, Motorola 88000, NS32K, RL78, Stormy16, V850, Xtensa, Cortus APS3, ARC, AVR32, C166 and C167, D10V, EISC, eSi-RISC, Hexagon[73], LatticeMico32, LatticeMico8, MeP, MicroBlaze, Motorola 6809, MRISC32, MSP430, NEC SX architecture[74], Nios II and Nios, OpenRISC, PDP-10, PIC24/dsPIC, PIC32, Propeller, Saturn (HP48XGCC), System/370, TIGCC (m68k variant), TMS9900, TriCore, Z8000 e entre outras .

O GCC conta com uma lista de mais de 500 contribuidores, todos os nomes podem ser acessados aqui .

Diversas empresas utilizam o GCC em muitos dos projetos de software livre, dentre elas as mais famosas como: NASA, Google, IBM e entre outras.

O maior concorrente do GCC é o Clang/LLVM que também é um ótimo compilador e apesar de ter sido escrito do zero, segundo seu próprio criador, Chris Lattner, disse em algumas entrevistas que sua maior referência foi o GCC, por isso o Clang tem todos os parâmetros utilizados pelo GCC, por questões também de compatibilidade .

Para instalar o GCC você pode usar o gerenciador de pacotes do seu sistema ou fazer o download do GCC aqui.

Exemplos de uso

Compilando programas escritos em linguagem C:

gcc main.c
./a.out # Roda o binário

Compilando programas em C++:

g++ main.cpp
./a.out # Roda o binário

Compilando programas em Java:

gcj -C Hello.java # Compila para o Hello.class
gij Hello # Roda o Hello.class

O gcc é um dos programas mais ricos em parâmetros que existe. Para conhecer todos os parâmetros, use o manual:

man gcc

Para mais informações acesse a Página Oficial do GCC .


2. GNU Sed

GNU Sed é um editor de fluxo de texto via linha de comando que analisa e transforma texto, usando uma linguagem de programação simples e compacta.

Existem algumas versões de Sed, e o GNU Sed é uma delas . Ao usar o GNU Sed e o Sed do macOS, por exemplo, você pode se deparar com muitas diferenças entre ambos e notar que a usabilidade do GNU Sed é superior e possui mais parâmetros .

Exemplo básico de uso

Substituindo e modificando todas as ocorrências da palavra Aquilo pela palavra Isso em um arquivo de texto: exemplo.txt

sed -i 's/Aquilo/Isso/' exemplo.txt

Nós possuímos um Curso Completo de Sed onde é utilizado no curso justamente o GNU Sed . Além também de alguns artigos como esse: 30 exemplos do comando Sed - com Regex.

E também alguns vídeos no nosso canal do Youtube como esse abaixo:

Para mais informações visite a Página Oficial do GNU Sed .


3. GNU Awk

GNU Awk é uma das variantes da linguagem específica de domínio: AWK . Assim como GNU Sed, seu diferencial principal é o fato de possuir o padrão POSIX como havíamos informado na introdução .

Ela também é bastante usada para edição de textos e filtragem de dados via linha de comando. O exemplo mais básico de uso seria:

Lista somente a primeira coluna de um arquivo de texto gerado pelo comando ls -l > arquivo.txt.

awk '{print $1}' arquivo.txt

Nós possuímos alguns artigos aqui no blog e também um Guia Completo de Utilização do GNU Awk que pode ser assistido no vídeo abaixo:

Para mais informações acesse a Página Oficial do GNU Awk .


4. GNU Make

GNU Make


GNU Make é uma ferramenta de automação de compilação que cria automaticamente programas e bibliotecas executáveis a partir do código-fonte lendo arquivos chamados Makefiles que especificam como derivar o programa de destino.

Embora ambientes de desenvolvimento integrados e recursos de compilador específicos de linguagem também possam ser usados para gerenciar um processo de compilação, o GNU Make continua sendo amplamente utilizado.

Existem algumas versões do comando make que é o comando utilizado pelo GNU Make, no entanto, em diversos sistemas o make é somente um alias para o GNU Make onde o comando original é o gmake, esse link simbólico pode ser descoberto pela combinação de outras duas ferramentas do GNU que é o GNU Coreutils com o seguinte comando: ls -l $(which make) .

Quando você possuí um Makefile corretamente criado, para compilar basta rodar o comando:

make

Esse comando pode ser customizados com parâmetros de acordo com o Makefile .

Nós possuímos um artigo para iniciantes de GNU Make e Makefile que pode ser acessado no link: Como Criar um Makefile .

Para mais informações acesse a Página Oficial do GNU Make .


5. GNU findutils

GNU findutils


O GNU findutils é um pacote que possui os comandos: find, locate, updatedb e xargs.

Dentre eles, o mais largamente utilizado no dia à dia é, com certeza, o find . O comando find do GNU possui mais facilidades de uso do que o do Unix© . Por exemplo:

Para você encontrar todos os arquivos de extensão .txt no seu diretório pessoal com o GNU findutils basta rodar o comando:

find ${HOME} -name *.txt

No find do Unix© você precisa explicitamente agrupar o alvo de pesquisa entre aspas, já no GNU find tanto com ou sem aspas, funciona do mesmo jeito. E entre diversas outras diferenças .

Nós possúimos um artigo com 20 exemplos de uso do comando find que pode ser acessado no link: 20 exemplos do comando find .

Para mais informações acesse a Página Oficial do GNU findutils .


6. GNU grep

GNU grep é um utilitário de linha de comando para pesquisar conjuntos de dados de texto simples para padrões que correspondam a uma expressão regular .

Existem variações do comando grep como: egrep e fgrep . Muitas usabilidades desses comandos são características específicas do GNU grep .

O GNU grep se torna poderoso de verdade para uso em conjunto com RegEx .

Um exemplo básico de uso é, por exemplo, listar os grupos do sistema em que seu usuário faz parte com o seguinte comando:

grep "$USER" /etc/group | egrep -o '^[a-z]+'

Nós possuímos um Curso Completo de Expressões Regulares que faz uso excessivo do GNU grep e suas variações .

Além de artigos, e também esse vídeo apresentação do Curso:

Para mais informações acesse a Página Oficial do GNU grep .


7. GNU Bash

O GNU Bash é uma melhoria do Sh do Unix© . O GNU Bash tornou muito mais simples e fácil automatizar comandos na Shell devido à também sua estabilidade em relação às suas opções .

É o mais adotado no mundo e possui muitos recursos modernos que o diferenciam . Foi criado pelo programador Brian J. Fox

Ele possui diversos comandos tais como: if, [[ ]], for, while,… que podem ser usados diretamente na Shell e também combinados como uma linguagem de script em um arquivo de qualquer extensão, no entanto, as extensões mais utilizadas para identificá-lo são .sh e .bash .

Essa foi uma das ferramentas do GNU que mais utilizei em minha vida em Administração de Servidores . Configurava um servidor somente uma vez e depois juntava todos os passos em um Bash script . Algumas dessas configurações até guardei por um tempo aqui no blog(que era a forma que eu usava para documentar e lembrar de algumas coisas), dentre elas:

E entre outros . Com o tempo, devido aos acessos(não intencionais) que esse blog passou a ter, eu modifiquei muitos artigos e transformei em cursos gratuitos. Com o tempo as pessoas me pediram para criar um Curso de Bash e eu o fiz, que foi o primeiro curso que fiz na minha vida.

Mas, como o tempo tive de privá-lo por conta de alguns comentários exigentes demais. As pessoas passaram até me enviar ofensas por que eu não disponibilizava um certificado . Então, decidi privá-lo e criei outro com certificado e mais avançado que pode ser adquirido nesse link: https://terminalroot.com.br/shell .

O curso antigo de Bash ainda está disponível somente na Udemy e para Membros do Canal TerminalRootTV , mas eu desativei ele por aqui .

Eu iria atualizar ele, mas desisti. Ainda esse ano pretendo impossibilitar ele de ser comercializado até na Udemy , isso pelo fato que acredito que aqui no blog tem diversos artigos sobre Bash que podem ser acessados pelas tags #bash e #shellscript e aprender ele facilmente .

E se a pessoa quiser descobrir outras coisas sobre Bash recomendo o curso de Shell em que utilizamos o GNU Bash como ferramenta para explicar e aprender o Shell Script .

Eu criei diversas coisas na minha vida com GNU Bash e é impossível de listar todas elas. A última que eu fiz e ironicamente a que mais teve sucesso foi um aplicativo que adiciona vídeos como papel de parede.

Você pode ver o vídeo desse aplicativo funcionando abaixo:

Muita gente enviou issues no GitHub e estou somente anotando os issues para corrigí-los com a refatoração desse código que será feita com C++ .

Eu notei que uma das maiores reclamações é a não possibilidade de tornar os vídeos de background como Full HD, então para isso vou ter de usar bibliotecas mais avançadas .

Para mais informações acesse a Página Oficial do GNU Bash , essa é uma das melhores documentações de software de que já li .


Conclusão

Existem, na verdade, diversas outras soluções do Projeto GNU, como por exemplo a GNU Glibc que é a interface em que o kernel Linux roda em cima e possibilita diversos: programas, interfaces gráficas, gerenciadores de janelas e ambientes desktop de funcionarem com um ótimo desempenho, e a maioria deles não funcionam sem a GNU Glibc.

Para mais informações acesse:

https://gnu.org .


Links úteis

A thumbnail utilizada como chamada desse artigo foi criada e usada pela Red Hat nesse link . As outras imagens, com exceção do logo do GCC, foram encontradas no Google Images após pesquisa de termos relacionados aos utilizados nesse artigo .


gnu gcc bash comandos


Compartilhe


Nosso canal no Youtube

Inscreva-se


Marcos Oliveira

Marcos Oliveira

Desenvolvedor de software
https://github.com/terroo


Crie Aplicativos Gráficos para Linux e Windows com C++

Aprenda C++ Moderno e crie Games, Programas CLI, GUI e TUI de forma fácil.

Saiba Mais

Receba as novidades no seu e-mail!

Após cadastro e confirmação do e-mail, enviaremos semanalmente resumos e também sempre que houver novidades por aqui para que você mantenha-se atualizado!