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ê !!!
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.
Compilando programas escritos em linguagem C:
Compilando programas em C++:
Compilando programas em Java:
O gcc
é um dos programas mais ricos em parâmetros que existe. Para conhecer todos os parâmetros, use o manual:
Para mais informações acesse a Página Oficial do GCC .
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 .
Substituindo e modificando todas as ocorrências da palavra Aquilo pela palavra Isso em um arquivo de texto:
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 .
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
.
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 .
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:
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 .
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:
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 .
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:
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 .
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 .
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.
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 .