paint-brush
A linha de comando: um guia abrangentepor@marcinwosinek
2,170 leituras
2,170 leituras

A linha de comando: um guia abrangente

por Marcin Wosinek9m2023/01/18
Read on Terminal Reader

Muito longo; Para ler

Existem muitos bons argumentos para se acostumar com a interface de linha de comando (CLI). No entanto, como iniciante, pode ser difícil iniciar e uma nova sessão de shell pode parecer um pouco intimidante. Para começar, você precisa de um emulador de terminal: um programa que emula o acesso somente texto à sua máquina.
featured image - A linha de comando: um guia abrangente
Marcin Wosinek HackerNoon profile picture

Existem muitos bons argumentos para se acostumar com a interface de linha de comando (CLI). No entanto, como iniciante completo, pode ser difícil começar, e uma nova sessão de shell pode parecer um pouco intimidante:

Vamos passar pelos fundamentos da CLI!

Onde começar

A primeira coisa que você precisa é de um emulador de terminal: um programa que emule o acesso somente texto à sua máquina. Qualquer sistema operacional (SO) terá uma grande variedade de emuladores: todos são bastante semelhantes e as principais diferenças serão:


  • o número de cores suportadas,


  • opções disponíveis para tipos de fonte, tamanhos ou esquemas de cores,


  • atalhos de teclas para aumentar o tamanho da fonte, etc.


No início, você deve estar bem com o que está disponível em seu sistema operacional ou ambiente de desenvolvimento integrado (IDE).

Cartuchos

Shell é um programa que interpreta seus comandos e executa programas para você. É diferente do simulador de terminal do qual falamos acima. De certa forma, na sua interface gráfica, você abre o terminal, e dentro do terminal, você tem um interpretador de comandos somente texto.


São muitas opções disponíveis, com diferenças sutis que podem alterar muito a experiência do usuário.

Zsh

Z shell, ou Zsh, é um interpretador de comandos moderno e popular. Sua interface é amigável e existem pacotes comunitários disponíveis que permitem que você personalize sua experiência com o shell: Oh My Zsh . Eu o uso há alguns anos e a maioria dos meus hábitos de CLI são adaptados dele.

bash

O Bash é uma alternativa um pouco mais antiga ao Zsh. É muito comum, então você pode esperar que esteja disponível em muitas máquinas que você encontrará por aí. Muitos atalhos do Zsh também funcionam lá, mas estão usando arquivos de configuração diferentes e a linguagem de script é um pouco diferente.

SH

A concha padrão. Faz parte dos comandos padrão do Unix e é quase garantido que esteja em qualquer máquina semelhante ao Unix que você encontrar. Portanto, é uma aposta segura quando se trata de escrever scripts.


A interface do usuário carece de muitas melhorias modernas, então eu não a usaria para nada além de scripts de fiação.

O que é meu shell, afinal?

Você pode verificar seu shell com echo $? :
ImageDescriptionn

No meu caso, é zsh

Como mudar sua casca

Cada shell é um programa e pode ser executado diretamente de outro shell. Por exemplo:


asciiccast

Dessa forma, você pode verificar quais shells você instalou e testá-los rapidamente. Para alterar o shell permanentemente, você pode usar o comando chsh (change shell), tanto no Linux quanto no macOS:


asciiccast

Se você não tiver o shell que deseja usar, precisará instalá-lo primeiro - o comando exato depende do sistema operacional ou da distribuição do Linux.

Blocos de construção

Então, depois de ter seu terminal instalado e funcionando, como você o usa?

Comandos

A CLI permite que você execute comandos digitando seu nome no terminal e pressionando enter. Cada comando é um programa separado que oferece uma interface extensa e cada um vem com sua própria documentação.


Da mesma forma, cada sistema operacional traz seu próprio conjunto de comandos, mas eles compartilham semelhanças – especialmente com sistemas inspirados em Unix, macOS e Linux.


No Windows, a linha de comando padrão cmd possui um conjunto muito diferente de comandos, mas também há muitas opções disponíveis para obter uma interface semelhante:


  • Subsistema nativo do Windows para Linux


  • Git BASH fornecido pelo Git para Windows


O Unix foi um sistema operacional que se tornou publicamente disponível em 1973 e influenciou muitas coisas que vieram depois. Sua especificação atual define 161 comandos , mas felizmente você só precisa de um punhado deles para se beneficiar do CLI.


Exemplo de comandos:


  • ls lista os arquivos em uma pasta — por padrão, mostra o conteúdo da pasta atual:
    ImageDescriptionn

  • pwd mostra o caminho atual no qual você está executando seus comandos:


    Descrição da imagem

  • cd altera o diretório - por padrão, ele vai para o diretório inicial ( https://asciinema.org/ gravação ou captura de tela)


    asciiccast

argumentos

Cada comando pode receber argumentos adicionais. Os argumentos são valores separados por espaços que vêm após o nome do comando. O significado dos argumentos depende do programa. Você pode ler sobre os diferentes argumentos na documentação do comando:


asciiccast

Opções

Muitos comandos padrão vêm com diferentes opções que permitem modificar o comportamento do programa. Por exemplo, ls é frequentemente usado com as seguintes opções:


  • -a — para mostrar todos os arquivos, incluindo aqueles que começam com . —uma convenção Unix para arquivos ocultos


  • -l —mostrar arquivos no formato longo—fornecendo mais informações


Uma convenção comum é permitir opções como parâmetros separados, ls -a -l , ou combinados em um parâmetro, ls -la .
ImageDescriptionn

Parâmetros

Um parâmetro é um argumento que fornece um valor para o comando ou uma de suas opções.


Por exemplo, com o exemplo acima, você pode fornecer um caminho para alterar o comportamento padrão:


  • ls workspace — lista os arquivos na pasta do espaço de trabalho:


    asciiccast

  • cd workspace —altera o diretório atual para o espaço de trabalho:


    asciiccast

  • cat file — mostra o conteúdo do arquivo na tela:


    asciiccast

O significado dos parâmetros depende do programa - a princípio, você pode esperar a necessidade de verificar bastante a documentação.

Saída Padrão

A saída padrão é o texto adicionado à linha de comando quando você executa o programa. Seu texto é mostrado pelo caminho feliz da execução. Os exemplos que vimos até agora mostraram a saída padrão de diferentes comandos.


Ao aprender C++, uma das primeiras coisas que você aprende é cout — a saída padrão.


Por padrão, a saída padrão é exibida apenas na tela, mas você pode facilmente redirecioná-la para um arquivo com o operador > . Exemplo:


asciiccast

Saída de erro

A saída de erro é onde os programas exibem informações sobre os problemas encontrados durante a execução. Ao executar comandos diretamente do terminal, a saída de erro e a saída padrão são tratadas da mesma forma - elas são apenas exibidas na tela. Por exemplo, quando tento ls um arquivo inexistente:


ImageDescriptionn

A diferença fica óbvia quando você redireciona a saída para um arquivo:


Descrição da imagem

Entrada Padrão

Em um fluxo de trabalho normal, a entrada padrão é o que você digita em seu programa. Os comandos que vimos até agora não são normalmente usados em um modo interativo. Um exemplo simples pode ser uma página de man que permite a rolagem:


asciiccast

Para aqueles com experiência em C++, você já ouviu este termo para cin :

 cin >> variable;


Para muitos comandos comuns, a entrada padrão torna-se especialmente importante por causa do operador de tubo.

Tubo

Pipes são formas de conectar a saída padrão de um programa com a entrada padrão de outro. É assim que a CLI alcança a interoperabilidade que mencionei em meu artigo anterior .


O uso de pipes permite combinar diferentes comandos de várias maneiras criativas — mostrarei alguns exemplos mais adiante nesta série. Por enquanto, um exemplo simples é:


asciiccast

Onde:

  • cat … — lê arquivos e retorna seu conteúdo na saída padrão,


  • less —obtém o valor da entrada padrão e o ajusta na tela


Da mesma forma, usando o utilitário de pesquisa grep :


asciiccast

Onde:

  • cat … - como acima


  • grep 1 —obtém o valor da entrada padrão e o filtra apenas para as linhas que contêm 1 .

Gravando em arquivos

Já mencionamos o operador > usado para gravar a saída padrão de um comando em um arquivo. Este operador substitui o arquivo com a saída que fornecemos. Se quiser anexá -lo a um arquivo existente, você pode usar >> em vez disso.

Diretório de trabalho

Tudo o que acontece na linha de comando é feito no contexto de um local de disco específico — um diretório de trabalho. Quando você especifica caminhos de arquivo relativos — para leitura ou gravação — eles são resolvidos a partir do diretório de trabalho.


Normalmente, você define seu diretório de trabalho para uma pasta superior do projeto em que está trabalhando. Quando você inicia uma nova sessão, geralmente o diretório de trabalho é definido como seu diretório pessoal.

Comandos de execução

Os intérpretes de shell oferecem muitos atalhos para acelerar seu trabalho. Com o tempo, você começará a usá-los intuitivamente, sem pensar neles.


Frequentemente, quando compartilho a tela com iniciantes, sou lembrado de que esses atalhos são óbvios. A seguir, mostrarei alguns truques de produtividade para trabalhar com a linha de comando.


Estou usando o Zsh sozinho e esses atalhos funcionam lá. Pelo menos alguns deles devem funcionar no Bash também, mas pode depender da versão e configuração exatas.

Não digite duas vezes — use as setas

O principal truque para ser rápido com o CLI é não digitar tudo o tempo todo. O caso mais básico é recuperar um comando que você executou algumas linhas antes. Você pode fazer isso pressionando a tecla de seta para cima.


Com a seta para cima e a seta para baixo, você pode percorrer os comandos recentes e, quando encontrar um semelhante ao que deseja executar agora, poderá editá-lo. Isso acelera muito todo o processo porque você costuma executar comandos semelhantes, com algumas pequenas diferenças nos argumentos.


asciiccast

Pesquisar comandos mais antigos

A rolagem manual é adequada para obter um ou alguns dos comandos mais recentes. No entanto, se você deseja obter algo mais distante do passado, pode usar a funcionalidade de pesquisa. Por padrão, o comando que você pode usar é CTRL + R para iniciar uma pesquisa em seu histórico de comandos:


asciiccast

Use para preenchimento automático

Você não precisa digitar todos os comandos que gostaria de executar. Tanto o Zsh quanto o Bash suportam a tecla tab como uma forma de solicitar o preenchimento automático - eles preencherão o comando ou o nome do arquivo se forem exclusivos ou mostrarão todas as opções disponíveis se o que você digitar corresponder a muitas possibilidades.


O Zsh também fornece preenchimento automático para opções de comando.


O preenchimento automático é um ótimo recurso em dois níveis: ajuda a economizar tempo na digitação e reduz os erros. À medida que você aprende a CLI, certifique-se de adquirir o hábito de usar o preenchimento automático o máximo possível.


asciiccast

Curingas de Nomes de Arquivos

Você pode acelerar a digitação ainda mais usando curingas para corresponder aos nomes de vários arquivos:


asciiccast

Pager—Menos

Freqüentemente, quando um programa tem tanta saída que não cabe na tela, ele usa outro programa como pager - uma ferramenta que permite navegar pela saída e rolar para cima e para baixo. Na maioria das vezes, o programa usado para isso é less . Há algumas coisas que vale a pena observar quando você usá-lo.

Rolagem Simples

Em primeiro lugar, não role com a barra de rolagem fornecida pelo seu emulador de terminal. less redesenha toda a tela de texto no final da saída.


Se você rolar para cima dentro do emulador de terminal, verá o que foi retornado por outros programas antes, não o conteúdo do arquivo que deseja ler. Em vez de rolar com a barra de rolagem (roda de rolagem), use as setas para cima e para baixo para mover o arquivo.


asciiccast

Saída

Outro ponto comum de confusão - como faço para sair agora? Você pode deixar o modo de tela cheia de 'menos' pressionando q . Geralmente é estilizado como :q porque outros programas (por exemplo vim ) usam : para iniciar um comando.

Procurando

Na linha de comando, tudo é texto e o texto é fácil de pesquisar. Você pode pesquisar dentro do conteúdo mostrado por less digitando /<search term> e navegar pelos resultados digitando n e N :


asciiccast

Rolagem sofisticada

less suporta outros comandos de navegação semelhantes ao que você pode encontrar no vim :


  • j — role uma linha para baixo
  • k — rolar uma linha para cima
  • gg — vá até o início do arquivo
  • G — vá até o final do arquivo
  • d/u —para baixo/para cima meia tela


Esses atalhos ajudarão você a navegar rapidamente pelo arquivo.

Você está interessado em aprender mais?

Isso é ótimo! A linha de comando é uma ótima ferramenta para aumentar sua eficiência durante a programação. Você pode se inscrever aqui para receber minhas atualizações enquanto eu publico outros materiais relacionados à linha de comando.


Também publicado aqui