75 Comandos Zsh, Plugins, Aliases e Ferramentas
Passei muito do meu dia no terminal, e a minha shell de escolha é Zsh – uma shell Unix altamente personalizável que contém algumas características muito poderosas. Como sou um programador preguiçosoTM, estou sempre à procura de formas de escrever menos e de automatizar todas as coisas. Felizmente, isto é algo que o Zsh se presta bem a.
Neste post, vou compartilhar com vocês 75 comandos, plugins, pseudônimos e ferramentas que, com sorte, irão poupar algumas teclas e torná-lo mais produtivo no seu dia-a-dia de trabalho.
Se você não tem o Zsh instalado em sua máquina, então confira este post, onde eu mostro como se levantar e rodar.
15 Coisas que o Zsh pode fazer fora da caixa
Zsh compartilha um monte de recursos úteis com o Bash. Nenhuma das seguintes são exclusivas do Zsh, mas são boas de saber, no entanto. Eu encorajo você a começar a usar a linha de comando para realizar operações como as listadas abaixo. Pode parecer mais trabalho do que usar uma GUI no início, mas uma vez que você pegar o jeito das coisas, você nunca vai olhar para trás.
- Entering
cd
de qualquer lugar no sistema de arquivos irá trazê-lo de volta ao seu diretório home. - Entering
!!
irá trazer o último comando. Isto é útil se um comando falhar porque precisa de direitos de administrador. Neste caso você pode digitarsudo !!
. - Você pode usar
&&
para encadear comandos múltiplos. Por exemplo,mkdir project && cd project && npm init -y
. - Execução condicional é possível usando
||
. Por exemplo,git commit -m "whatever..." || echo "Commit failed"
. - Usando um comando
-p
com o comandomkdir
será possível criar diretórios pai conforme necessário. Usando a expansão brace reduz a repetição. Por exemplo,mkdir -p articles/jim/sitepoint/article{1,2,3}
. - Definir variáveis de ambiente em uma base per-comando como tal:
NODE_DEBUG=myapp node index.js
. Ou, em uma base por sessão como esta:export NODE_DEBUG=myapp
. Você pode verificar se foi definido digitandoecho $<variable-name>
. - Pipe a saída de um comando em um segundo comando. Por exemplo,
cat /var/log/kern.log | less
para fazer um log longo legível, ouhistory | grep ssh
para procurar por quaisquer entradas do histórico contendo “ssh”. - Pode abrir ficheiros no seu editor a partir do terminal. Por exemplo,
nano ~/.zshrc
(nano),subl ~/.zshrc
(Texto Sublime),code ~/.zshrc
(Código VS). Se o arquivo não existir, ele será criado quando você pressionar Save no editor. - Navigation é uma habilidade importante a ser dominada. Não confie apenas nas setas do seu teclado. Por exemplo, Ctrl + a o levará ao início de uma linha.
- Whereas Ctrl + e o levará ao final.
- Você pode usar Ctrl + w para apagar uma palavra (para trás).
- Ctrl + u removerá tudo do cursor para o início da linha.
- Ctrl + k limpará tudo do cursor para o final da linha. Estes três últimos podem ser desfeitos com Ctrl + y.
- Pode copiar texto com Ctrl + Shift + c. Isto é muito mais elegante do que clicar com o botão direito do rato e seleccionar Copy.
- Conversamente, pode colar texto copiado com Ctrl + shift + v.
Tente submeter esses combos de teclas à memória. Você ficará surpreso com a frequência com que eles são úteis.
15 Aliases personalizados para aumentar a sua produtividade
Aliases são atalhos de terminal para comandos regulares. Pode adicioná-los ao seu ficheiro ~/.zshrc
e depois recarregar o seu terminal (usando source ~/.zshrc
) para que tenham efeito.
A sintaxe para declarar um alias (simples) é a seguinte:
alias =''
Aliases são óptimos para comandos frequentemente usados, comandos longos, ou comandos com uma sintaxe difícil de lembrar. Aqui estão alguns dos que eu uso regularmente:
- A
myip
alias, que imprime seu endereço IP público atual para o terminal:alias myip='curl http://ipecho.net/plain; echo'
. - A
distro
alias, que imprime informações sobre a sua distribuição Linux:alias distro='cat /etc/*-release'
. - A
reload
alias, pois nunca consigo lembrar-me como recarregar o meu terminal:alias reload='source ~/.zshrc'
. - An
undo-git-reset
alias:alias undo-git-reset-head="git reset 'HEAD@{1}'"
. Isto reverte os efeitos de executargit reset HEAD~
. - Um apelido para atualizar listas de pacotes:
alias sapu='sudo apt-get update'
. - Um alias para reexecutar o comando anterior com
sudo
:alias ffs='sudo !!'
. - Porque eu sou preguiçoso, eu tenho alias
y
para o comandoyarn
:alias y='yarn'
. Isto significa que posso clonar um repo, depois digite y para puxar em todas as dependências. Aprendi esta com Scott Tolinski em Syntax. - Não é uma das que uso, mas este alias rebenta com a pasta
node_modules
e remove o arquivopackage-lock.json
, antes de reinstalar as dependências de um projeto:alias yolo='rm -rf node_modules/ && rm package-lock.json && yarn install'
. Como você provavelmente sabe, yolo significa You Only Live Once. - Um alias para abrir o meu ficheiro
.zshrc
para edição:alias zshconfig='subl $HOME/.zshrc'
. - Um pseudónimo para actualizar a lista de versões Ruby que o rbenv pode instalar:
alias update-available-rubies='cd ~/.rbenv/plugins/ruby-build && git pull'
- Um alias para iniciar um servidor no seu directório actual (não são necessários pacotes npm):
alias server='python -m SimpleHTTPServer 8000'
. - Você também pode criar um alias para abrir a documentação no seu navegador:
alias npmhelp='firefox https://github.com/robbyrussell/oh-my-zsh/tree/master/plugins/npm'
. - Um alias global para pipear a saída de um comando para
less
:alias -g L='| less'
. Você pode usá-lo dessa forma:cat production.log L
. - Um alias global para pipear a saída de um comando para
grep
:alias -g G='| grep'
. Você pode usá-lo dessa forma:history G ssh
. - Você também pode usar funções para criar alias. O seguinte (tirado daqui) cria um alias que adiciona, submete e empurra código para GitHub:
bash
function acp() {
git add .
git commit -m ""
git push
}
>
Existem muitos lugares para encontrar mais idéias para alias online. Por exemplo, esta discussão sobre Hacker News, ou este post sobre produtividade na linha de comando com Zsh.
15 Cool Things You Can Do with (Oh My) Zsh
Oh My Zsh é um framework orientado à comunidade para gerenciar sua configuração Zsh e vem empacotado com milhares de funções úteis, helpers, plugins e temas. Se você vai fazer do shell Z seu driver diário, você deve realmente instalar Oh My Zsh.
Aqui estão quinze coisas úteis Oh My Zsh pode fazer por você:
- O comando
take
irá criar um novo diretório e mudar para ele.take my-project
substituimkdir my-project && cd my-project
. -
zsh_stats
dar-lhe-á uma lista dos 20 comandos principais e quantas vezes foram executados. - Oh O My Zsh simplifica a navegação no seu sistema de ficheiros. Por exemplo,
..
é um alias paracd ..
. - Da mesma forma,
...
move-o para cima dois directórios,....
move-o para cima três, e.....
move-o para cima quatro. - Você pode omitir o
cd
quando estiver a navegar. Digitando/
, por exemplo, irá levá-lo diretamente para a raiz do seu sistema de arquivos. - A correspondência parcial também é suportada. Por exemplo, digitando
/h/j/De
e pressionando TAB, então Return, leva-me a/home/jim/Desktop/
. -
rd
é um alias pararmdir
emd
é um alias paramkdir -p
. - Pode escrever
d
para listar os últimos directórios usados de uma sessão terminal. - Pode então navegar para qualquer um destes usando
cd -n
, onden
é o número do directório. - A conclusão do TA é outra grande característica. Por exemplo, digitando
ls -
e pressionando TAB irá listar todas as opções do comando, juntamente com uma descrição útil do que eles fazem. Isto também funciona paracap
,rake
,ssh
, ekill
. - Typing
alias
lista todos os seus aliases atuais. - Com globbing (uma funcionalidade Zsh), você pode listar arquivos com uma extensão em particular. Por exemplo,
ls *.html
listará todos os arquivos HTML no diretório atual. Para incluir subdiretórios, mude para:ls **/*.html
. - Os qualificadores Glob permitem-lhe seleccionar tipos de ficheiros usando bandeiras. Por exemplo,
ls -l **/*(.x)
encontrará todos os arquivos executáveis no diretório atual e todos os subdiretórios. - Você pode procurar por arquivos por data modificados. Por exemplo,
ls *(m-7)
irá listar todos os ficheiros modificados na última semana. - Pode procurar por ficheiros por tamanho. Por exemplo,
ls *(Lm+1)
irá encontrar todos os ficheiros com um tamanho superior a 1MB.
Utilizar Plugins para Diversão e Lucro
Oh O meu Zsh vem com muitos plugins. Você deve olhar através destes e investir algum tempo aprendendo aqueles que irão ajudar o seu fluxo de trabalho.
Aqui estão três plugins que eu uso regularmente, que fornecem uma tonelada de atalhos e aliases úteis.
10 Nifty Git Aliases
O plugin git fornece muitos aliases e várias funções úteis. Por que não passar por estas e tentar memorizar as suas dez melhores funções? Aqui estão as que eu uso com mais frequência.
-
g
é um pseudônimo útil paragit
. Isto significa que você pode digitar coisas comog clone <whatever>
ao invés degit clone <whatever>
. Podem ser apenas dois toques de tecla, mas logo somam. -
gaa
é um pseudônimo paragit add all
. Eu uso este o tempo todo. -
gb
é um alias paragit branch
, que listará todos os ramos do reporte atual e mostrará qual deles você está. -
gcb
é um alias paragit checkout -b
, o comando que lhe permite criar um novo ramo. -
gcm
é um alias paragit checkout master
. Isto devolve-o ao ramo mestre. -
gdca
é um alias paragit diff --cached
. Isto permite-lhe divulgar quaisquer ficheiros que tenha encenado para commit. -
gf
é um alias paragit fetch
. -
gm
é um alias paragit merge
. -
gp
é um alias paragit push
. Para sincronizar um garfo de um repo, você poderia fazer:gf upstream
,gm upstream/master
, seguido porgp
. -
glog
é um alias paragit log --oneline --decorate --graph
, o que lhe dará um gráfico de ramo bonito.
10 Prático npm Pseudônimos
O plugin npm também fornece um monte de pseudônimos úteis.
-
npmg
é um pseudônimo paranpm install --global
, que você pode usar para instalar dependências globalmente no seu sistema. Por exemplo,npmg nodemon
. -
npmS
é um alias paranpm install --save
, que você pode usar para instalar dependências e adicioná-las à seçãodependencies
do seupackage.json
. Note que, a partir da npm 5.0.0, este é o padrão ao executarnpm i <package>
. -
npmD
é um apelido paranpm install --save-dev
, que você usa para instalar dependências e adicioná-las à seçãodevDependencies
do seupackage.json
. -
npmO
é um alias paranpm outdated
, que irá verificar o registo para ver se algum (ou, específicos) pacotes instalados estão desactualizados. -
npmL
é um alias paranpm list
, que irá listar os pacotes instalados. -
npmL0
é um alias paranpm list --depth=0
, que lista os pacotes de nível superior. Isto é especialmente útil para ver quais módulos são instalados globalmente sem inundar o seu terminal com uma enorme árvore de dependências:npmL0 -g
. -
npmst
é um alias paranpm run start
, um script npm frequentemente usado para iniciar uma aplicação. -
npmt
é um alias paranpm run test
, que, como você pode adivinhar, é usado para executar seus testes. -
npmR
é um alias paranpm run
. Por si só, este comando irá listar todos os scripts npm disponíveis de um projeto, juntamente com uma descrição do que eles fazem. Usado em conjunto com um nome de script, ele irá executar esse script, Por exemplo,npmR build
. -
npmI
é um apelido paranpm init
. Isto irá fazer-lhe um monte de perguntas e depois criar umpackage.json
com base nas suas respostas. Use a bandeira-y
para automatizar o processo. Por exemplo,npmI -y
.
10 Poupa tempo no Rails/Rake Aliases
Este plugin adiciona a conclusão para o framework Ruby on Rails e para o programa Rake, assim como alguns aliases para logs e variáveis de ambiente.
-
rc
é um alias pararails console
, que permite que você interaja com seu aplicativo Rails a partir do CLI. -
rdc
é um alias pararake db:create
, que (a menos queRAILS_ENV
esteja definido) cria o banco de dados de desenvolvimento e teste para o seu aplicativo. -
rdd
é um alias pararake db:drop
, o que retira as bases de dados de desenvolvimento e teste do seu aplicativo. -
rdm
é um alias pararake db:migrate
, o que irá executar qualquer migração pendente de base de dados. -
rds
é um alias pararake db:seed
, que executa o ficheirodb/seeds.rb
para preencher a sua base de dados de desenvolvimento com dados. -
rgen
é um alias pararails generate
, que irá gerar o código da placa de caldeira. Por exemplo:rgen scaffold item name:string description:text
. -
rgm
é um alias pararails generate migration
, que irá gerar uma migração de base de dados. Por exemplo:rgen scaffold item name:string description:text
. -
rgm
:rgm add_description_to_products description:string
. -
rr
é um alias pararake routes
, que listará todas as rotas definidas de um aplicativo. -
rrg
é um alias pararake routes | grep
, que lhe permitirá listar e filtrar as rotas definidas. Por exemplo,rrg user
. -
rs
é um apelido pararails server
, que lança o servidor web padrão do Rails.
Recursos Adicionais
O principal trabalho dos plugins listados acima é fornecer apelidos para comandos frequentemente utilizados. Por favor esteja ciente de que há muito mais plugins por aí que aumentam seu shell com funcionalidades adicionais.
Aqui estão quatro dos meus favoritos:
- sudo permite que você prefira facilmente seus comandos atuais ou anteriores com
sudo
pressionando ESC duas vezes. - autosuggestions sugere comandos conforme você digita baseado no histórico e completações. Se a sugestão é a que você está procurando, pressione a tecla → para aceitá-la. Uma economia de tempo real!
- command-not-found: se um comando não for reconhecido no arquivo
$PATH
, ele usará o pacote command-not-found do Ubuntu para encontrá-lo ou sugerir erros ortográficos. - z é um plugin prático que constrói uma lista das suas pastas mais frequentes e recentes (ele chama estas “frecent”) e permite que você pule para elas com um comando.
E não se esqueça, se você passar muito tempo no terminal, vale a pena investir algum esforço para torná-lo visualmente atraente. Felizmente, Oh Meu Zsh navega com um monte de temas para você escolher. A minha escolha do grupo é Agnoster.
Pode descobrir mais sobre temas no meu artigo 10 Dicas Zsh & Truques: Configuração, Personalização & Uso.
Conclusão
Então aí temos: 75 comandos Zsh, plugins, pseudônimos e ferramentas. Espero que tenha aprendido um ou dois truques pelo caminho, e encorajo-o a sair das suas GUIs e entrar no terminal. É mais fácil do que parece e uma ótima maneira de aumentar sua produtividade.
Se eu perdi seu plugin favorito, ou alias/comando que economiza tempo, me avise no Twitter.
Quer tirar ainda mais do seu toolkit? Confira o Visual Studio Code: Ferramentas de edição e depuração de ponta-a-ponta para desenvolvedores Web da Wiley.