O terminal é desajeitado e ineficiente sem personalizações adicionais. Se você é iniciante, pode achar que isso é o melhor que existe, mas não é. Uma ferramenta em particular se destaca e pode melhorar drasticamente a sua experiência. Descrevo vários motivos pelos quais o fzf é minha ferramenta de terminal favorita.
O que é fzf e por que é incrível?
O comando fzf é uma ferramenta para realizar pesquisas rápidas em grandes listas de itens. Isso pode não parecer muito atraente, mas como você normalmente pesquisa um grande número de opções no terminal? Por exemplo, ao escolher um caminho de arquivo entre milhares de outros – como você consegue isso? Você tem dificuldade para completar a tabulação ou executa algum tipo de acrobacia desajeitada no terminal? Nenhuma das duas é uma escolha adequada e o fzf aborda esse problema diretamente.
Instalação
Para acompanhar, você precisará instalar o pacote fzf.
No Debian, você deve executar o seguinte comando de instalação.
sudo apt install fzf No Fedora, você deve executar o seguinte comando de instalação.
sudo dnf install fzf No Arch Linux, você deve executar o seguinte comando de instalação.
sudo pacman -S fzf Agora, para habilitar os recursos avançados do fzf, você precisa adicionar uma linha ao arquivo de configuração do shell.
Se você usa Bash, coloque o seguinte comando em seu arquivo ~/.bashrc e recarregue seu shell com fonte ~/.bashrc.
eval"$(fzf --bash)" Se você usa Zsh, coloque isso em seu arquivo ~/.zshrc e recarregue seu shell com fonte ~/.zshrc.
source <(fzf --zsh)
Pesquisa de histórico de comandos
Pesquisar o histórico do seu shell no Bash – seja usando o comando de histórico ou as teclas de seta – é insuportavelmente lento. Com o fzf, você pode pesquisar instantaneamente milhares de comandos anteriores em tempo real, que é facilmente meu recurso de terminal favorito. Depois de ativar o fzf, basta pressionar Ctrl+R, começar a digitar e pressionar Enter para executar.
Existe uma ferramenta semelhante chamada Atuin que oferece uma experiência muito semelhante.
Navegação rápida no diretório
Navegar no sistema de arquivos pode ser demorado no terminal e, depois de usá-lo por algum tempo, você pode querer um método mais rápido. Com os recursos avançados do terminal do fzf habilitados, você pode pressionar Alt+C para pular rapidamente para qualquer subdiretório. Ao fazer isso, o fzf apresentará uma lista recursiva de subdiretórios, que permite restringi-los rapidamente e selecionar um. Isso é útil quando você está tentando detalhar um subdiretório profundamente aninhado.
Pesquisa e seleção rápida de arquivos
Muitas vezes, ao digitar um comando, você precisa escolher um arquivo. Usar o preenchimento com tabulação é uma abordagem, mas não é a melhor. Uma abordagem melhor é usar um localizador difuso, e o fzf fornece um seletor de arquivos integrado.
Comece digitando seu comando e, quando for escolher um arquivo, pressione Ctrl+T. O seletor de arquivo fzf será ativado, pesquisando recursivamente o diretório de trabalho atual. Quando você pressiona Enter em uma escolha, seu comando será concluído com o arquivo escolhido.
Quando você pega o jeito, ativar o comando intermediário do fzf se torna uma segunda natureza e reduz drasticamente o tempo para escrever o comando.
Encerramento fácil do processo
Eliminar um processo Linux pode ser um jogo de adivinhação quando você não sabe seu nome exato. Comandos como pgrep, killall e kill all exigem o nome ou ID do processo, que às vezes pode ser difícil de lembrar. Com a integração do shell do fzf, você pode pesquisar e selecionar rapidamente o processo que deseja encerrar.
Para encerrar processos com fzf, digite o seguinte comando e pressione a tecla Tab (não pressione Enter):
kill -9 ** Usar o comando fzf permite selecionar rapidamente um processo e eliminá-lo; é muito mais rápido que os outros comandos e perdoa quando você esquece o nome exato do processo.
Comandos bônus
A sintaxe “**” aciona a janela de pesquisa do fzf. Os comandos fzf que você adicionou à configuração do shell anteriormente criaram funções que manipulam essa sintaxe e habilitam outros recursos do fzf.
O gatilho “**” funciona com quase todos os comandos; alguns comandos são tratados de maneira especial (como o comando SSH) e o restante é padronizado para um seletor de arquivos. Recomendo que você experimente, tendo em mente que “**” ativa um seletor de arquivos por padrão.
SSH
SSH recebe tratamento especial. O preenchimento de guias com ** permite pesquisar hosts difusos a partir de sua configuração SSH, hosts conhecidos e /etc/hosts.
ssh **
Git
O autor do fzf fornece um script Git oficial chamado fzf-git.sh. Se você seguir as instruções de instalação no README do repositório, poderá obter acesso a conclusões rápidas e difusas nas operações do Git.
Variáveis de ambiente
Execute o seguinte comando para saber rapidamente qual é o valor de qualquer variável de ambiente.
env | fzf Você pode até remover rapidamente a configuração de uma variável de ambiente com fzf:
unset **
Sistema
Systemd é o sistema inicial para a maioria das distros; ele cuida do processo de inicialização, incluindo serviços do sistema. Gerenciar arquivos de unidade do systemd é doloroso, e iniciar e interromper serviços se beneficia muito de um script baseado em fzf. Existe um script assim, chamado fuzzy-sys. Para usá-lo, siga as instruções no README do repositório do script e execute o seguinte comando.
fuzzy-sys --status Isso mostrará o status de qualquer serviço.
Ele suporta vários sinalizadores, incluindo iniciar, parar, ativar e editar, etc. Este script facilita a escolha de um serviço; agora você não precisa digitar nomes de serviços longos e estranhos.
O Fzf melhora drasticamente a produtividade do terminal e oferece uma extensa lista de scripts comunitários. Comandos complexos que antes levavam minutos para serem escritos e executados agora levam segundos – escrever e executar vários comandos complicados em rápida sucessão agora é incrivelmente fácil.