Aprenda os comandos básicos e as funcionalidades úteis do Zsh (Preenchimento, Histórico, Globbing)
No artigo anterior, instalou o Oh My Zsh, o que deve ter potenciado significativamente o seu ambiente Zsh tanto em aparência como em funcionalidade. Embora a personalização com aliases, temas e plugins seja um grande atrativo do Zsh, na verdade, o Zsh tem muitas funcionalidades extremamente poderosas e convenientes incorporadas, sem depender de nenhuma dessas ferramentas externas.
Para muitas pessoas que mudam de outros shells como o Bash, a razão pela qual se apaixonam pelo Zsh é a inteligência e a atenção aos detalhes destas "funcionalidades padrão". É como ter um secretário altamente competente sempre ao seu lado, a antecipar e a apoiar o seu trabalho.
Este artigo foca-se em três pilares poderosos que o Zsh tem desde o início: "Preenchimento", "Histórico" e "Globbing (Expansão de Nomes de Ficheiros)", e explica o seu uso específico. Prometemos que, ao dominar estas funcionalidades, o seu trabalho na linha de comandos se tornará um nível mais rápido e mais confortável!
1. A inteligência ao nível do texto preditivo! A "Funcionalidade de Preenchimento" do Zsh
Se há uma funcionalidade de arromba no Zsh, tem de ser a sua "funcionalidade de preenchimento". Apenas premindo a tecla Tab, fornece um suporte surpreendentemente inteligente que vai muito além da simples conclusão de nomes de ficheiros.
Completar opções de comandos
Já não precisa de consultar o manual a pensar: "quais eram as opções disponíveis para este comando...". Basta digitar o comando seguido de um - e premir a tecla Tab, e ele exibirá uma lista de opções disponíveis.
$ ls -[Pressionar Tab]
--all -A --almost-all -B --ignore-backups
--author -d --directory -D --dired
--color -F --classify -G --no-group
...(e assim por diante)...
Além disso, pode selecionar um candidato com as teclas de seta e ele até exibirá uma explicação do que cada opção faz.
Mudar os candidatos a preenchimento com base no contexto
O Zsh entende o que o comando que está a digitar no momento está a pedir e muda inteligentemente os candidatos a preenchimento.
Por exemplo, se premir a tecla Tab após o comando kill, que termina um processo, ele exibirá uma lista de nomes de processos atualmente em execução como candidatos, e não nomes de ficheiros.
$ kill [Pressionar Tab]
101 zsh 102 login 103 top 104 sshd
...
2. A funcionalidade de histórico "que simplesmente acerta"
A funcionalidade de histórico, que reutiliza comandos executados anteriormente, também é muito mais inteligente no Zsh do que no Bash.
Pesquisa incremental no histórico
Quando está a pensar: "Quero usar aquele comando git longo que digitei antes...", no Zsh, pode simplesmente digitar o início do comando (ex: git) e depois premir a tecla ↑ (seta para cima).
Isto irá pesquisar para trás no seu histórico de comandos, mas apenas através dos comandos que começam com git, e não no histórico completo. Isto permite-lhe encontrar o comando que procura de forma esmagadoramente mais rápida.
Reexecutar um comando com `!!`
!! é um alias especial que se expande para o último comando que executou. Isto brilha mais quando se esquece de adicionar sudo.
$ apt update
E: Could not open lock file ... Permission denied
$ sudo !!
sudo apt update
...
Apenas digitando sudo !!, ele reexecuta o comando como sudo apt update. O efeito de poupança de tempo disto é enorme.
3. O mestre da seleção de ficheiros, "Globbing"
Globbing é uma funcionalidade que usa caracteres universais como * para especificar múltiplos ficheiros de uma vez. No Zsh, esta funcionalidade é grandemente expandida e é chamada de "Globbing Estendido". (Para a usar, é necessária a configuração setopt EXTENDED_GLOB. Se estiver a usar o Oh My Zsh, muitas vezes já está ativada por defeito).
Pesquisa recursiva de ficheiros (**)
Usando **, pode procurar ficheiros no fundo dos subdiretórios com um único comando.
# Listar todos os ficheiros .js em todos os subdiretórios
ls -l **/*.js
Pesquisa OU (|)
Pode usar | para especificar ficheiros com uma condição "A ou B".
# Listar ficheiros .jpg ou .png
ls *.(jpg|png)
Pesquisa NÃO (^)
Pode usar ^ para especificar "todos os ficheiros exceto X".
# Listar tudo exceto os ficheiros .log
ls ^*.log
Especificar um intervalo numérico (<->)
Isto é útil para especificar um intervalo particular de ficheiros numerados sequencialmente.
# Listar ficheiros de image1.jpg a image10.jpg
ls image<1-10>.jpg
Conclusão
Desta vez, apresentámos algumas das funcionalidades convenientes e padrão que são a razão pela qual o Zsh é chamado de "o derradeiro shell".
- A inteligente funcionalidade de preenchimento que lê o contexto permite-lhe continuar a trabalhar sem interromper o seu raciocínio.
- A funcionalidade de histórico que lhe dá acesso rápido aos comandos de que precisa elimina a redigitação desnecessária.
- A seleção flexível de ficheiros que o globbing estendido permite simplifica as operações complexas de ficheiros.
Embora cada uma destas funcionalidades possa parecer uma pequena melhoria por si só, elas acumulam-se no seu trabalho diário para aumentar grandemente a sua produtividade. O Zsh não é apenas uma ferramenta para executar comandos; é um "parceiro" que apoia ativamente o seu trabalho.
Agora, para aqueles que estão a considerar seriamente migrar do Bash para o Zsh, o próximo artigo irá explicar os pontos de compatibilidade a ter em atenção ao executar scripts Bash no Zsh, e um resumo dos pontos de verificação para tornar a transição suave.
Uma lista de verificação de compatibilidade para pessoas que mudam do Bash para o Zsh