Alguns desenvolvedores usam a linha de comando porque não temos escolha; outros usam porque nós meio que amamos. De qualquer forma, você sabe quem você é. Quer você adore a CLI ou apenas a use para o trabalho, aqui estão nove ferramentas de linha de comando que o ajudarão a ser mais eficiente, dentro ou fora do trabalho.
9 ferramentas CLI para usar para uma melhor experiência do desenvolvedor
tldr
ngrok
screen
sdkman
envm
fzf
exa
bat
nethack
Tldr
Não vou ser poético aqui sobre a magia peculiar do shell Unix. Às vezes você só precisa trabalhar e às vezes precisa ler o manual primeiro. Tradicionalmente, os documentos Unix (as páginas de manual ou manual) são uma faca de dois gumes: a informação está lá, em algum lugar. Encontrar a documentação necessária em meio a um mar de detalhes é uma tarefa difícil.
Para obter o manual oficial em uma linha de comando, você digita:
$ man
As limitações da página de manual são sua densa verbosidade e que às vezes não contém informações atuais para ferramentas mais recentes. Em vez disso, você pode usar tldr
uma visão mais sucinta e atualizada do man
comando:
$ tldr
Se você tem npm
instalado, uma maneira fácil de instalar tldr
é:
npm install -g tldr
Ngrok
Uma vez que você tenha tldr
instalado, você pode usá-lo para explorar muitos outros comandos finos. Aqui está uma boa:
$ tldr ngrok
Reverse proxy that creates a secure tunnel from a public endpoint to a locally running web service.
Ngrok é um animal interessante porque é uma empresa com fins lucrativos e uma ferramenta de linha de comando gratuita. Mas nunca encontrei o lado comercial interferindo ngrok
utilidade.
O Ngrok oferece uma maneira sem estresse de acessar uma máquina de desenvolvimento a partir de um navegador remoto. Mas faz mais do que apenas isso.
Eu uso regularmente ngrok
desenvolver na nuvem e visualizar os resultados no meu navegador. Ele também fornece uma maneira extremamente simples de expor seu serviço em execução por HTTPS sem mexer em nenhuma infraestrutura de segurança. (Digamos que você esteja construindo um service worker e ele exija HTTPS; agora você pode simplesmente ativar ngrok
e aí está o seu contexto seguro.)
Por exemplo, vamos expor a porta HTTP 8080 para o mundo:
$ ngrok http 8080
Ngrok retorna o seguinte:
https://f951-34-67-117-59.ngrok-free.app -> http://localhost:8080
Agora, qualquer pessoa pode acessar https://f951-34-67-117-59.ngrok-free.app e ver o que há lá. (Você não encontrará nada lá agora porque acabei de encerrar o processo.)
Tela
Ah sim, screen
. Esta ferramenta de linha de comando fica entre a simplicidade limitada de colocar em segundo plano um processo com bg
e as capacidades mais complexas de systemctl
. Com screen
, você pode pegar uma sessão de shell e colocá-la de lado com ou sem um processo em execução e, em seguida, trazê-la de volta como a deixou. Se você sair da sessão que gerou a tela, ela ainda estará lá quando você retornar.
$ tldr screen
Hold a session open on a remote server. Manage multiple windows with a single SSH connection.
Digamos que estamos lançando ngrok
para acessar um aplicativo da web em que estamos trabalhando remotamente – um caso de uso perfeito para ngrok
. Podemos começar o ngrok
processo e deixe-o em execução screen
e vá fazer alguma codificação. Ngrok continua funcionando o tempo todo e, sempre que precisarmos, podemos entrar screen
para verificar o endereço HTTPS ou parar ngrok
.
Podemos lidar com isso fazendo algo assim:
$ screen
// Now we are in a new session
$ ngrok http 8080
// Now ngrok is running, exposing http port 8080
Type ctrl-a
// Now we are in screen’s command mode
Type the “d” key, to “detach”.
// Now you are back in the shell that you started in, while screen is running your ngrok command in the background:
$ screen -list
There is a screen on:
128861.pts-0.dev3 (04/25/24 14:36:58) (Detached)
Como há apenas uma tela em execução, você pode digitar $ screen -r
(para anexar novamente) e você estará de volta ao seu ngrok
sessão.
Quando você tiver várias telas, poderá juntá-las novamente digitando $ screen -r
. Por exemplo, $ screen -r 128861
.
Se você quiser encerrar sua sessão, você pode entrar nela, parar ngrok
com Ctrl-ce digite exit
no prompt para desconectar e encerrar a sessão.
Sdkman e nvm
Se você é um programador que usa Java ou JavaScript no servidor, você deve se familiarizar com sdkman
(para Java) e nvm
(para nó). Ambas as ferramentas são úteis para lidar com várias versões da linguagem na mesma máquina e permitem eliminar o ajuste do caminho e das variáveis de ambiente.
eu uso sdkman
o tempo todo para explorar versões mais recentes do Java e depois voltar para a versão LTS atual. Um sdk
comando torna o processo indolor. Aqui está sdk
mostrando todas as instalações Java disponíveis em minha máquina local, incluindo aquela em uso atualmente:
Alternar entre versões é simples: $ sdk use java 19-open
permite-me mudar para abrir o JDK versão 19 de uma só vez:
$ tldr sdk
Manage parallel versions of multiple Software Development Kits.
Supports Java, Groovy, Scala, Kotlin, Gradle, Maven, Vert.x and many others.
Nó nvm
utilitário funciona da mesma forma:
$ tldr nvm
Install, uninstall or switch between Node.js versions.
Supports version numbers like "12.8" or "v16.13.1", and labels like "stable", "system", etc.
Fzf
Ambos grep
e find
são partes padrão da paleta de linha de comando. Mas depois de várias décadas de uso deles, ainda tenho dificuldade em procurar um arquivo no disco, se for de alguma forma complicado. Nenhuma das ferramentas é tão funcional quanto poderia ser.
Digitar fzf
—um localizador de arquivos “difuso”. Por difuso queremos dizer, é bom pesquisar o que você precisa quando você está um pouco confuso com os detalhes. Aqui está um exemplo:
$ tldr fzf
Command-line fuzzy finder.
Similar to sk.
Você tem que tentar fzf
para apreciá-lo plenamente. Quando você inicia a ferramenta em sua linha de comando, ela imediatamente começa a indexar o sistema de arquivos. Então ele começa a oferecer sugestões. O que quer que você digite, ele retornará com uma lista de possíveis resultados. Aqui estou eu procurando um projeto recente em que trabalhei:
De 878.937 possibilidades, fzf
escolhi os 25 arquivos e diretórios que podem atender às minhas necessidades. E fez isso de forma simples, sem nenhum artifício.
Exa
Este utilitário leva o seu velho e chato ls
listagens e as torna mais divertidas e úteis:
$ tldr
A modern replacement for ls (List directory contents).
Para uma melhor experiência de desenvolvedor sem qualquer sobrecarga mental, apenas alias ls
para exa
. Exa respeita a maioria dos padrões ls
opções, por exemplo, exa -l
funciona exatamente como você esperaria.
Bastão
O bat
utilitário é como cat
só que melhor:
$ tldr bat
Print and concatenate files.
A cat clone with syntax highlighting and Git integration.
Esta é outra melhoria no conforto da criatura (ou DX), semelhante a exa
evolução de ls
.
Quando você usa bat
você obtém um visualizador de arquivos completo com título, bordas, números de linha e – mais benéfico para codificadores – destaque de sintaxe para linguagens de programação e arquivos de configuração.
Bat responde a menos/mais comandos, então “q
”É usado para sair. A navegação é como seria de esperar, usando as teclas de seta.
É um utilitário simples que realmente eleva a experiência de navegar pelos arquivos do console.
Nethack
Vimos um monte de ferramentas incríveis, algumas novas e outras antigas. Um clássico remanescente que todo aficionado de CLI deve conhecer é nethack
.
Este é o rastreador de masmorras ASCII original baseado em console. Isso não o ajudará a ser mais produtivo diretamente, mas poderá ajudá-lo a parar por alguns minutos e deixar seu subconsciente trabalhar nos problemas que você está enfrentando.
Sim, existem versões mais recentes deste modelo, mas nethack
continua sendo o eterno clássico: