O Guia Do Desenvolvedor De Software Para Linux
()
Sobre este e-book
Leia mais títulos de Jideon F Marques
O Guia Completo Para Bonecos De Crochê E Animais Nota: 5 de 5 estrelas5/5Manual De Tdah Para Adultos Nota: 0 de 5 estrelas0 notasTécnicas De Sexo Tântrico Nota: 0 de 5 estrelas0 notasPosições Sexuais Tântricas Nota: 0 de 5 estrelas0 notasA Bíblia Do Swing Trader Nota: 0 de 5 estrelas0 notasKama Sutra: Guia Ilustrado De Posições Sexuais Para Iniciantes E Avançados Nota: 0 de 5 estrelas0 notasDecoração De Bolos Para Iniciantes: Um Guia Passo A Passo Para Decorar Como Um Profissional Nota: 0 de 5 estrelas0 notasPsicologia Negra E Manipulação Nota: 0 de 5 estrelas0 notasA Enciclopédia De Óleos Essenciais Nota: 0 de 5 estrelas0 notasBíblia De Programação Python Para Iniciantes Nota: 0 de 5 estrelas0 notasFísica Quântica Para Iniciantes Nota: 5 de 5 estrelas5/5Receitas De Iogurte Grego 40 Ótimas Receitas Nota: 0 de 5 estrelas0 notasAumento Peniano Nota: 0 de 5 estrelas0 notasO Guia Das Técnicas Do Reiki - Cura Reiki Para Iniciantes Curando Mais De 100 Doenças Nota: 0 de 5 estrelas0 notasReceitas De Café Gelado Nota: 0 de 5 estrelas0 notasFeitiços De Amor Nota: 0 de 5 estrelas0 notasNervo Vago Exercícios Para Estimular Nota: 0 de 5 estrelas0 notasDay Trading - Estratégias De Negociação Nota: 0 de 5 estrelas0 notasDicas De Sexo Tântrico; Todas As Dicas Que Você Precisa Saber Nota: 0 de 5 estrelas0 notasMarketing Do Instagram (guia Para Iniciantes 2023) Nota: 0 de 5 estrelas0 notasAlongamento Para Idosos Nota: 0 de 5 estrelas0 notasFermentação Para Iniciantes Nota: 0 de 5 estrelas0 notasEngenharia Elétrica E Instrumentação Nota: 0 de 5 estrelas0 notasExcel 2023 Power Pivot & Power Query Nota: 0 de 5 estrelas0 notasAprenda Fazer Licores Deliciosos E Lucre Muito Com Vendas Online Nota: 0 de 5 estrelas0 notasO Pequeno Livro Do Rootwork Nota: 0 de 5 estrelas0 notas
Relacionado a O Guia Do Desenvolvedor De Software Para Linux
Ebooks relacionados
Red Hat Enterprise Linux 9 Para Iniciantes Um Guia Abrangente Para Aprendizado, Administração E Implantação Nota: 0 de 5 estrelas0 notasCaixa de Ferramentas DevOps: Um guia para construção, administração e arquitetura de sistemas modernos Nota: 0 de 5 estrelas0 notasFedora Linux Nota: 0 de 5 estrelas0 notasCertificação Linux Essentials Nota: 4 de 5 estrelas4/5Python Prático Para Devops Nota: 0 de 5 estrelas0 notasMundo Linux Nota: 0 de 5 estrelas0 notasPython Em Poucas Palavras Nota: 0 de 5 estrelas0 notasProgramando O Kernel Linux Nota: 0 de 5 estrelas0 notasArmazenando dados com Redis Nota: 0 de 5 estrelas0 notasCódigo Limpo Em Php Nota: 0 de 5 estrelas0 notasComeçando com o Linux: Comandos, serviços e administração Nota: 4 de 5 estrelas4/5Doctrine Na Prática Nota: 0 de 5 estrelas0 notasLinux para principiantes Nota: 0 de 5 estrelas0 notasPHP e Laravel: Crie aplicações web como um verdadeiro artesão Nota: 0 de 5 estrelas0 notasDesconstruindo a Web: As tecnologias por trás de uma requisição Nota: 0 de 5 estrelas0 notasCertificação Linux: Guia prático para a prova LPIC-1 101 Nota: 0 de 5 estrelas0 notasGuia prático do servidor Linux: Administração Linux para iniciantes Nota: 4 de 5 estrelas4/5Linux Essentials: um guia do sistema operacional Linux para iniciantes Nota: 5 de 5 estrelas5/5Descomplicando Passo A Passo Nota: 0 de 5 estrelas0 notasArquitetura de software distribuído: Boas práticas para um mundo de microsserviços Nota: 0 de 5 estrelas0 notasIniciar com Lazarus e Free Pascal Nota: 0 de 5 estrelas0 notasZend Expressive e PHP 7: Uma união poderosa para a criação de APIs Nota: 0 de 5 estrelas0 notasNoções Básicas Sobre O Microsoft Intune Implantando Aplicativos Usando O Powershell Owen Heaume Nota: 0 de 5 estrelas0 notasDesenvolvedor De Back-end Em 30 Dias Nota: 0 de 5 estrelas0 notasDesenvolvimento Front-end Sem Estrutura Nota: 0 de 5 estrelas0 notasDo PHP ao Laminas: Domine as boas práticas Nota: 3 de 5 estrelas3/5Mysql Soluções Para Desenvolvedores E Administradores De Banco De Dados Nota: 0 de 5 estrelas0 notasBack-end Java: Microsserviços, Spring Boot e Kubernetes Nota: 0 de 5 estrelas0 notasIniciando Com O Zend Framework 2 Nota: 0 de 5 estrelas0 notasVRaptor: Desenvolvimento ágil para web com Java Nota: 0 de 5 estrelas0 notas
Aplicativos e Software para você
Programação Python Ilustrada Para Iniciantes E Intermediários: Abordagem “aprenda Fazendo” – Passo A Passo Nota: 0 de 5 estrelas0 notasLinguagens De Programação Em Inteligência Artificial Nota: 0 de 5 estrelas0 notasJava O Guia Completo Nota: 0 de 5 estrelas0 notasCurso De Edição De Vídeo + Adobe Premiere Pro Nota: 0 de 5 estrelas0 notasCódigo Limpo Em Php Nota: 0 de 5 estrelas0 notasGanhe Dinheiro Criando Um Jogo Para Celular Nota: 0 de 5 estrelas0 notasExcel 2022 O Tutorial Completo Para Iniciantes E Especialistas Nota: 0 de 5 estrelas0 notasComo Criar Um Ebook De Alta Conversão Nota: 4 de 5 estrelas4/5Desenvolvendo Aplicativos Com Gpt-4 E Chatgpt Nota: 0 de 5 estrelas0 notasLógica De Programação: Pseudocódigo Nota: 0 de 5 estrelas0 notasEletrônica Básica Nota: 0 de 5 estrelas0 notasMicrosoft Word Nota: 5 de 5 estrelas5/5Excel 2013 Técnicas Avançadas Nota: 5 de 5 estrelas5/5Desenvolvedor De Back-end Em 30 Dias Nota: 0 de 5 estrelas0 notasAdobe Photoshop 2022 Para Iniciantes Nota: 0 de 5 estrelas0 notasScratch: Um jeito divertido de aprender programação Nota: 0 de 5 estrelas0 notasChatgpt O Roteiro Do Milionário Nota: 0 de 5 estrelas0 notasGuia De Estilo E Cores Nota: 0 de 5 estrelas0 notasArduino Projetos Interessantes Nota: 0 de 5 estrelas0 notasSeo Na Prática Nota: 0 de 5 estrelas0 notasAprendendo Vue Nota: 0 de 5 estrelas0 notasPacote Microsoft Office Capacitação Nota: 0 de 5 estrelas0 notasVideogames e arte: Discussões sobre paradigmas e complexidades possíveis Nota: 0 de 5 estrelas0 notasMicrosoft Office 365 Nota: 0 de 5 estrelas0 notasRevit passo a passo volume I Nota: 4 de 5 estrelas4/5Photoshop para Iniciantes Nota: 0 de 5 estrelas0 notasAdobe Photoshop: Tratamento e edição profissional de imagens Nota: 0 de 5 estrelas0 notasExcel De Zero Para Especialista Nota: 0 de 5 estrelas0 notasApostila Noções De Informática Nota: 0 de 5 estrelas0 notasCriando Seu Mini-site De Negócios Com Wordpress Nota: 0 de 5 estrelas0 notas
Avaliações de O Guia Do Desenvolvedor De Software Para Linux
0 avaliação0 avaliação
Pré-visualização do livro
O Guia Do Desenvolvedor De Software Para Linux - Jideon F Marques
O Guia do Desenvolvedor de Software para Linux
O Guia do Desenvolvedor de Software para Linux
Um guia prático para usar a linha de comando e
utilitários do Linux como desenvolvedor de software
POR: Jideon Marques
Direitos autorais © 2024 Jideon Marques. Todos os direitos reservados.
Licença de direitos autorais
O conteúdo contido neste livro não pode ser reproduzido, duplicado ou transmitido sem permissão direta por escrito do autor ou do editor.
Sob nenhuma circunstância qualquer culpa ou responsabilidade legal será responsabilizada contra o editor, ou autor, por quaisquer danos, reparações ou perdas monetárias devido às informações contidas neste livro, seja direta ou indiretamente. Notícia legal:
Este livro é protegido por direitos autorais. É apenas para uso pessoal. Você não pode alterar, distribuir, vender, usar, citar ou parafrasear qualquer parte ou o conteúdo deste livro sem o consentimento do autor ou editor.
Aviso de isenção de responsabilidade:
Observe que as informações contidas neste documento são apenas para fins educacionais e de entretenimento. Todos os esforços foram realizados para apresentar informações precisas, atualizadas, confiáveis e completas. Nenhuma garantia de qualquer tipo é declarada ou implícita. Os leitores reconhecem que o autor não está envolvido na prestação de aconselhamento jurídico, financeiro, médico ou profissional. O conteúdo deste livro foi derivado de diversas fontes. Consulte um profissional licenciado antes de tentar qualquer técnica descrita neste livro.
Ao ler este documento, o leitor concorda que sob nenhuma circunstância o autor é responsável por quaisquer perdas, diretas ou indiretas, que sejam incorridas como resultado do uso das informações contidas neste documento, incluindo, mas não limitado a, erros, omissões ou imprecisões.
Prefácio
Muitos engenheiros de software são novos em sistemas do tipo Unix, embora esses sistemas estejam em todo o mundo da engenharia de software. Quer os desenvolvedores saibam ou não, espera-se que eles trabalhem com sistemas do tipo Unix em execução em seu ambiente de trabalho (macOS), em seu processo de desenvolvimento de software (contêineres Docker), em suas ferramentas de construção e automação (CI e GitHub), em seus ambientes de produção. (servidores e contêineres Linux) e muito mais.
Ter habilidade com a linha de comando do Linux pode ajudar os desenvolvedores de software a ir além do que se espera deles, permitindo-lhes:
•
Economize tempo sabendo quando usar ferramentas Unix integradas, em vez de escrever scripts de mil linhas ou programas auxiliares
•
Ajude a depurar interrupções de produção complexas, geralmente envolvendo servidores Linux e sua interface com o aplicativo
•
Mentor de engenheiros juniores
•
Ter uma compreensão mais completa de como o software que eles escrevem se encaixa no ecossistema maior e na pilha de tecnologia
Esperamos que a teoria, os exemplos e os projetos incluídos neste livro possam levar suas habilidades de desenvolvimento em Linux para o próximo nível.
Para quem é este livro
Este livro é para desenvolvedores de software que são novos no Linux e na linha de comando, ou que estão sem prática e desejam adquirir rapidamente suas habilidades.
Se você ainda se sente um pouco inseguro sobre suas habilidades quando está olhando para um prompt de linha de comando do Linux em um servidor de produção às 2h da manhã, este livro é para você. Se você deseja preencher rapidamente uma lacuna de habilidades em Linux para avançar em sua carreira, este livro é para você.
Se você está apenas curioso e deseja ver que tipo de ganhos de eficiência pode obter em suas rotinas e configurações de desenvolvimento diárias adicionando um pouco de mágica de linha de comando, este livro também será útil para você.
O que este livro não é
Uma das maneiras pelas quais tentamos concretizar nossa visão para esse tipo de livro excepcionalmente útil foi sendo extremamente cuidadosos com o que está incluído. Tentamos eliminar tudo o que não é essencial para sua vida como desenvolvedor ou para uma compreensão básica do Linux e de suas abstrações básicas. Em outras palavras, a razão pela qual este livro é útil é por causa de todas as coisas que deixamos de fora.
Este livro não é um curso completo de Linux. Não é para pessoas que trabalham como engenheiros de sistemas Linux ou desenvolvedores de kernel. Por causa disso, não tem mais de 750 páginas e você poderá trabalhar nele em alguns dias, talvez durante uma corrida tranquila no trabalho.
O que este livro cobre
Capítulo 1, Como funciona a linha de comando, explica como funciona uma interface de linha de comando, o que é um shell e fornece imediatamente algumas habilidades básicas em Linux. Você aprenderá um pouco de teoria e então começará a navegar na linha de comando, encontrando e trabalhando com arquivos e aprendendo onde procurar ajuda quando tiver dúvidas. Este capítulo atende a novos desenvolvedores, ensinando as habilidades de linha de comando mais importantes. Se você não ler mais nada, ainda estará melhor do que quando começou.
Capítulo 2, Trabalhando com Processos, levará você a um tour guiado pelos processos do Linux. Em seguida, você mergulhará em habilidades úteis e práticas de linha de comando para trabalhar com processos. Adicionaremos detalhes a alguns aspectos que são uma fonte comum de problemas relacionados a processos que você encontrará como desenvolvedor de software, como permissões, e forneceremos algumas heurísticas para solucioná-los. Você também fará um tour rápido por alguns tópicos avançados que serão abordados novamente mais adiante neste livro.
Capítulo 3, Gerenciamento de serviços com systemd, baseia-se no conhecimento sobre processos aprendidos no capítulo anterior, introduzindo uma camada adicional de abstração, o serviço systemd. Você aprenderá o que um sistema init faz para um sistema operacional e por que você deve se importar. A seguir, abordamos todos os comandos práticos necessários para trabalhar com serviços em um sistema Linux.
Capítulo 4, Usando o histórico do Shell, é um pequeno capítulo que aborda alguns truques que você pode aprender para melhorar sua velocidade e eficiência na linha de comando. Esses truques giram em torno do uso de atalhos e do aproveitamento do histórico do shell para evitar pressionamentos repetidos de teclas.
capítulo 5, Apresentando Arquivos, apresenta os arquivos como a abstração essencial para entender o Linux. Você conhecerá o Filesystem Hierarchy Standard (FHS), que é como um mapa que você pode usar para se orientar em qualquer sistema Unix. Então é hora de comandos práticos para trabalhar com arquivos e diretórios no Linux, incluindo alguns tipos de arquivos especiais dos quais você provavelmente nunca ouviu falar. Você também experimentará a pesquisa de arquivos e conteúdo de arquivos, que é um dos conhecimentos mais poderosos que um desenvolvedor pode ter ao seu alcance.
Capítulo 6, Editando arquivos na linha de comando, apresenta dois editores de texto –
nano e vim. Você aprenderá os fundamentos do uso desses editores de texto para edição de linha de comando, ao mesmo tempo em que ficará ciente dos erros comuns de edição e como evitá-los.
Capítulo 7, Usuários e Grupos, apresentará como os conceitos de usuários e grupos formam a base do modelo de segurança Unix, controlando o acesso a recursos como arquivos e processos. Em seguida, ensinaremos os comandos práticos necessários para criar e modificar usuários e grupos.
Capítulo 8, Propriedade e permissões, baseia-se na explicação do capítulo anterior sobre usuários e grupos para mostrar como funciona o controle de acesso para recursos no Linux. Este capítulo ensina sobre propriedade e permissões, orientando você nas informações do arquivo em uma longa lista. A partir daí, veremos as permissões comuns de arquivos e diretórios que você encontrará em sistemas Linux de produção, antes de usar os comandos do Linux para modificar a propriedade e as permissões de arquivos.
Capítulo 9, Gerenciando software instalado, mostra como instalar software em várias distribuições Linux (e até mesmo no macOS). Primeiro, apresentamos os gerenciadores de pacotes, que são a forma preferida de colocar software em uma máquina: você aprenderá a teoria importante e os comandos práticos para as operações de gerenciamento de pacotes que você precisará como desenvolvedor de software. Em seguida, apresentaremos alguns outros métodos, como o download de scripts de instalação e a antiga tradição artesanal do Unix de compilar seu próprio software localmente, a partir do código-fonte (não é tão assustador quanto parece!).
Capítulo 10, Configurando software, aproveita o foco do capítulo anterior na instalação de software, ajudando você a configurar software em um sistema Linux. Você aprenderá sobre os locais onde a maioria dos softwares procurará configuração (a hierarquia de configuração
). Esse conhecimento não apenas será útil durante sessões noturnas de solução de problemas, mas também poderá ajudá-lo a escrever um software melhor. Abordaremos argumentos de linha de comando, variáveis de ambiente, arquivos de configuração e como tudo isso funciona em ambientes Linux não padrão, como contêineres Docker. Há até um pequeno projeto bônus: você verá como pegar um programa personalizado e transformá-lo em seu próprio serviço systemd.
Capítulo 11, Pipes and Redirection, lhe dará uma introdução ao que é possivelmente o
recurso matador
do Unix: a capacidade de conectar programas existentes em uma solução personalizada usando pipes. Passaremos pela teoria dos pré-requisitos e pelas habilidades práticas que você precisa entender: descritores de arquivos e redirecionamento de entrada/saída. Em seguida, você começará a criar comandos complexos usando pipes. Você será apresentado a algumas ferramentas CLI essenciais e padrões de tubulação práticos, que ainda usará muito depois de terminar este livro.
Capítulo 12, Automatizando tarefas com scripts de shell, serve como um curso intensivo de scripts Bash, ensinando como passar da digitação de comandos individuais em um shell interativo até a escrita de scripts. Presumimos que você já seja um desenvolvedor de software, então esta será uma introdução rápida que mostra os principais recursos da linguagem e não gasta muito tempo reexplicando os fundamentos da programação. Você aprenderá sobre a sintaxe Bash, práticas
recomendadas para escrita de scripts e algumas armadilhas importantes a serem evitadas.
Capítulo 13, Acesso remoto seguro com SSH, explora o protocolo Secure Shell e as ferramentas de linha de comando relacionadas disponíveis para você. Você aprenderá os fundamentos da criptografia de chave pública (PKI), que é sempre útil para um desenvolvedor saber, antes de mergulhar na criação de chaves SSH e no login seguro em sistemas remotos pela rede. Você desenvolverá esse conhecimento e obterá alguma experiência na cópia de arquivos pela rede, usando SSH para criar proxies ou VPNs ad-hoc e verá exemplos de várias outras tarefas que envolvem a movimentação de dados por um túnel SSH criptografado.
Capítulo 14, Controle de versão com Git, mostra como usar uma ferramenta que você provavelmente já conhece bem – git – na linha de comando, em vez de usar seu IDE ou um cliente gráfico. Passamos rapidamente pela teoria básica por trás do git e depois passamos para os comandos que você precisará usar em um ambiente de linha de comando. Abordaremos dois recursos poderosos que vale a pena entender – divisão ao meio e rebase – e, em seguida, apresentaremos nossa opinião sobre as melhores práticas e aliases de shell úteis. Por fim, a seção GitHub do Poor Man apresenta um projeto pequeno, mas legitimamente útil, que você pode realizar para praticar e integrar as habilidades em Linux que você aprendeu até agora.
Capítulo 15, Conteinerizando aplicativos com Docker, fornece a teoria básica e as habilidades práticas que facilitarão o trabalho com o Docker como desenvolvedor.
Exploraremos os problemas que o Docker resolve, explicaremos os conceitos mais importantes do Docker e guiaremos você pelo fluxo de trabalho principal e pelos comandos que você usará. Você também verá como criar suas próprias imagens armazenando em contêineres um aplicativo real. E como estamos abordando isso do ponto de vista do desenvolvimento de software e do Linux, você também desenvolverá uma boa intuição sobre como a conteinerização funciona nos bastidores e como ela é diferente das máquinas virtuais.
Capítulo 16, Monitorando logs de aplicativos, fornece uma visão geral do registro em log no Unix e no Linux. Mostraremos como (e onde) os logs são coletados na maioria dos sistemas Linux modernos usando systemd e como funcionam as abordagens mais tradicionais (você encontrará ambas no mundo real). Você desenvolverá habilidades práticas de linha de comando para localizar e visualizar logs e aprenderá um pouco sobre como o registro em log está sendo feito em infraestruturas maiores.
Capítulo 17, Balanceamento de carga e HTTP, aborda os conceitos básicos de HTTP
para desenvolvedores, com foco especial nas complexidades que você encontrará ao trabalhar com serviços HTTP em infraestruturas maiores. Corrigiremos alguns mal-entendidos comuns sobre status HTTP, cabeçalhos HTTP e versões HTTP e como os aplicativos devem lidar com eles. Também apresentaremos como os balanceadores de carga e os proxies funcionam no mundo real e como eles tornam a experiência de solução de problemas de um aplicativo ativo bastante diferente da solução de problemas de uma versão de desenvolvimento em seu laptop. Muitas das habilidades em Linux que você aprendeu até agora serão úteis aqui, e apresentaremos uma nova
ferramenta – curl – para ajudá-lo a solucionar uma ampla variedade de problemas relacionados ao HTTP.
Para aproveitar ao máximo este livro
Se você conseguir acessar um prompt do shell do Linux – instalando o Ubuntu em uma máquina virtual ou executando-o como um contêiner Docker, por exemplo – você pode acompanhar tudo neste livro.
Você pode se safar com ainda menos – no Windows, existe o WSL, e o macOS é um sistema operacional Unix genuíno, então quase todos os comandos práticos que você aprenderá neste livro (exceto aqueles chamados apenas de Linux) funcionarão. da caixa. Dito isso, para obter a melhor experiência, siga em frente em um sistema operacional Linux.
As habilidades necessárias para aproveitar ao máximo este livro são apenas as habilidades básicas de informática que você já possui como desenvolvedor de software – editar texto, trabalhar com arquivos e pastas, ter alguma noção do que são
sistemas operacionais
, instalar software e usando um ambiente de desenvolvimento.
Tudo além disso, nós vamos te ensinar.
Baixe as imagens coloridas
Também fornecemos um arquivo PDF que contém imagens coloridas das capturas de tela/diagramas usados neste livro. Você pode baixá-lo
aqui:https://packt.link/gbp/9781804616925.
Convenções usadas
Há uma série de convenções de texto usadas ao longo deste livro.
CódigoInText: indica palavras de código em texto, nomes de tabelas de banco de dados, nomes de pastas, nomes de arquivos, extensões de arquivos, nomes de caminhos, URLs fictícios, entrada do usuário e identificadores do Twitter. Por exemplo: O sinalizador -f significa 'seguir' e o sinalizador -u significa 'unidade'
.
Um bloco de linha de comando é definido da seguinte forma:
/home/steve/Desktop#ls
anotherfile documenta algumas coisas do arquivo.txt
/home/steve/Desktop#cd documentos/
/home/steve/Desktop/documents#ls
contrato.txt
Audacioso: indica um novo termo, uma palavra importante ou palavras que você vê na tela. Por exemplo, palavras em menus ou caixas de diálogo aparecem no texto desta forma. Por exemplo: "Quando um arquivo é configurado para ser executável, o Unix fará o possível para executá-lo, seja bem-sucedido no caso do ELF (Executable and
Linkable Format, provavelmente o formato executável mais usado atualmente) ou falhando".
Avisos ou notas importantes aparecem assim.
Dicas e truques aparecem assim.
1
Como funciona a linha de comando
Antes de mergulharmos nos comandos práticos do Linux, você precisa ter um conhecimento básico de como funciona a linha de comando. Este capítulo lhe dará essa compreensão.
Para novos desenvolvedores, exploraremos as habilidades iniciais necessárias para começar na linha de comando do Linux. Para quem tem um pouco mais de experiência, ainda existem algumas nuances a descobrir, como a diferença entre
shell
e linha de comando
. Vale a pena saber a diferença!
Neste capítulo, abordaremos os seguintes tópicos:
•
A ideia básica de uma interface de linha de comando ou CLI
•
A forma que os comandos assumem
•
Como funcionam os argumentos de comando e como eles aparecem quando você digita comandos e quando procura documentação
•
Uma introdução ao shell
e como ele difere da linha de comando
•
As regras básicas que o shell usa para procurar comandos Para começar, começaremos com a ideia básica de uma interface de linha de comando.
Iremos nos familiarizar com o funcionamento de uma CLI e executar um exemplo rápido.
No começo…era o REPL
O que é uma interface de linha de comando (CLI)? É um ambiente baseado em texto para interagir com o seu computador que:
1. Lê algumas informações suas,
2. Avalia (ou processa) essa entrada,
3. Imprime alguma saída na tela em resposta e depois
4. Volta ao início para repetir esse processo.
Vejamos o que acontece em cada etapa, em um nível prático, com o comando ls (lista), que você verá em algumas páginas. Por enquanto, basta saber que o comando ls lista o conteúdo de um diretório.
Etapa
O que significa
1. Leia a entrada
Você digita o comando ls e pressiona Enter.
2. Comando
O shell procura o binário ls, encontra-o e diz à máquina para Avaliar
executá-lo.
3. Imprimir saída
O comando ls emite algum texto – os nomes de todos os
arquivos e diretórios encontrados – e o shell imprime essa saída na janela do seu terminal.
4. Volte para 1
Depois que os programas chamados pelo comando forem
(repita o
encerrados, repita o processo aceitando mais entradas do processo)
usuário.
Se você ler as etapas 1 a 4 novamente, notará que a primeira letra de cada etapa soletra REPL
, que é uma forma comum de se referir a esse tipo de loop Read-Eval-Print nas linguagens que inventaram e refinaram isso. fluxo de trabalho, como Lisp.
Para colocar isso em termos de programação, você pode traduzir as instruções REPL
acima em código:
while (true) { // o loop
imprimir(avaliar(ler()))
}
Na verdade, você pode criar um REPL capaz de fazer cálculos básicos com apenas algumas linhas de código na maioria das linguagens de programação. Aqui está um programa shell
de uma linha escrito em Perl:
perl -e 'while (<>){imprime avaliação, \n
}'
1+2
3
Aqui, escrevemos o código como parâmetro, imprimindo a saída da avaliação desde que haja entrada para leitura. No final, acrescentamos uma nova linha e saímos.
Este programa é pequeno, mas é suficiente para implementar um loop interativo Read-Eval-Print em um ambiente de linha de comando – um shell. Os shells que você usará no Linux e no Unix são significativamente mais complexos do que este mini-shell Perl, mas os princípios são os mesmos.
A questão é simples: como desenvolvedor, você pode já estar usando REPLs sem perceber, porque quase todas as linguagens de script modernas vêm com um. Em essência, a linha de comando do Linux (ou macOS, ou outro Unix) funciona como os
shells interativos
fornecidos pelas linguagens interpretadas. Portanto, mesmo que
você não esteja familiarizado com o Lisp REPL, o trecho Perl acima deve lembrá-lo de um shell Ruby ou Python muito básico.
Agora que você entende a mecânica básica das interfaces de linha de comando que usará no Linux, está pronto para testar seus primeiros comandos. Para fazer isso, você precisará saber a sintaxe correta da linha de comando a ser usada.
Sintaxe de linha de comando (leitura)
Todos os REPLs começam lendo alguma entrada. Na linha de comando do Linux, os comandos que o shell lê precisam ter a sintaxe correta. Os comandos assumem esta forma básica:
opções de nome de comando
Em termos de programação, você pode pensar no nome do comando como um nome de função e nas opções como qualquer número de argumentos que serão passados para essa função. Isto é importante porque não existe uma sintaxe fixa única para todas as opções – cada comando define quais parâmetros aceitará. Por causa disso, o shell pode fazer muito pouco para validar a exatidão de um comando além de verificar se o comando é mapeado para um executável.
Observação
Os termos programa
e comando
são usados indistintamente neste capítulo. Há uma pequena diferença porque alguns componentes internos do shell são definidos no código do shell e, portanto, não são programas tecnicamente separados, mas você não precisa se preocupar com isso - deixe essa distinção para os barbas cinzentas do Unix.
Vamos mergulhar em variações mais complexas dessa sintaxe de comando [opções]
, que você verá com frequência:
comando [-flags,] [--example=foobar] [even_more_options ...]
Este é o formato convencional que você verá usado na documentação de ajuda, como as páginas de manual do programa (manpages) incluídas na maioria dos ambientes Linux, e é bastante simples:
•
comandoé o programa que você está executando
•
Os itens entre colchetes são opcionais e os colchetes com reticências ([xyz .. ]) informam que você pode passar zero ou mais argumentos aqui
•
-bandeirassignifica qualquer opção válida (flag
, na linguagem Unix) para esse programa, por exemplo -debug ou -foobar
Alguns programas também aceitarão versões curtas e longas de um parâmetro, geralmente denotadas por hifenização simples ou dupla: então -l e --long podem fazer a mesma coisa. Porém, não é consistente entre os comandos; esse tipo de
comportamento exige que o criador do comando implemente argumentos curtos e longos que definam o mesmo parâmetro.
Nem todos os comandos implementarão todas essas formas de passar a configuração ao invocá-los, mas estas representam as formas mais comuns que você verá.
Por padrão, um espaço denota o fim de um argumento, portanto, assim como na maioria das linguagens de programação, uma string de argumento que inclui espaços deve ter aspas simples ou duplas. Você lerá mais sobre isso no Capítulo 12, Automatizando Tarefas com Shell Scripts.
Em breve, seguiremos o processo de como o shell interpreta um comando que você emite usando esta sintaxe, mas primeiro queremos definir claramente a diferença entre dois termos às vezes intercambiáveis que usamos neste capítulo: linha de comando
e shell
.
Linha de comando versus shell
Neste livro, nos referimos a um ambiente de linha de comando
. Definimos isso como qualquer ambiente baseado em texto que atue como uma espécie de REPL, especificamente para interagir com o sistema operacional, interpretador de linguagem de programação, banco de dados, etc. Um ambiente ou interface de linha de comando
descreve a ideia geral de como você estamos interagindo com um sistema.
Mas há um termo mais específico que usaremos aqui: shell.
Um shell é um programa específico que implementa esse ambiente de linha de comando e permite fornecer comandos de texto. Tecnicamente, existem muitos shells diferentes que fornecem o mesmo tipo de ambiente de linha de comando baseado em REPL, geralmente para coisas totalmente diferentes:
•
Bash é um ambiente shell comum para interagir com sistemas operacionais Linux e Unix.
•
Bancos de dados populares como Postgres, MySQL e Redis fornecem um shell para os desenvolvedores interagirem e executarem comandos.
•
A maioria das linguagens interpretadas fornece um ambiente shell para acelerar o desenvolvimento. Nestes, os comandos válidos são simplesmente instruções de linguagem de programação. Veja irb para Ruby, o shell Python interativo, etc.
•
Zsh (o shell Z) é um shell de sistema operacional alternativo (como o Bash), que você pode ver nos laptops de alguns desenvolvedores se eles personalizarem seus ambientes.
Quando falamos sobre shell neste livro, estamos nos referindo a um shell Unix (geralmente Bash), que é uma interface de linha de