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!
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:
No início, você deve estar bem com o que está disponível em seu sistema operacional ou ambiente de desenvolvimento integrado (IDE).
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.
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.
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.
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.
Você pode verificar seu shell com echo $?
:
No meu caso, é zsh
Cada shell é um programa e pode ser executado diretamente de outro shell. Por exemplo:
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:
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.
Então, depois de ter seu terminal instalado e funcionando, como você o usa?
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:
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:
pwd
mostra o caminho atual no qual você está executando seus comandos:
cd
altera o diretório - por padrão, ele vai para o diretório inicial ( https://asciinema.org/ gravação ou captura de tela)
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:
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
.
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:
cd workspace
—altera o diretório atual para o espaço de trabalho:
cat file
— mostra o conteúdo do arquivo na tela:
O significado dos parâmetros depende do programa - a princípio, você pode esperar a necessidade de verificar bastante a documentaçã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:
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:
A diferença fica óbvia quando você redireciona a saída para um arquivo:
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:
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.
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 é:
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
:
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
. 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.
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.
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.
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.
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:
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.
Você pode acelerar a digitação ainda mais usando curingas para corresponder aos nomes de vários arquivos:
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.
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.
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.
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
:
less
suporta outros comandos de navegação semelhantes ao que você pode encontrar no vim
:
j
— role uma linha para baixok
— rolar uma linha para cimagg
— vá até o início do arquivoG
— vá até o final do arquivod/u
—para baixo/para cima meia tela
Esses atalhos ajudarão você a navegar rapidamente pelo arquivo.
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