Maybaygiare.org

Blog Network

Drop Bash for fish shell to get beautiful defaults

i am one of those people who immediately open a terminal window after my computer boots up. Não é por necessidade, mas o hábito existe. Passei a maior parte da minha carreira a aprender os seus encantamentos mágicos, e acho que navegar através das minhas tarefas diárias no terminal dá um dia de trabalho mais agradável. Dito isto, é bom tentar algo novo de vez em quando.

recentemente deixei ir o interpretador de linha de comando padrão, Bash, em favor do fish, que orgulhosamente se comercializa como “uma linha de comando shell para os anos 90.” Eis por que eu mudei.encontrei isto .bashrc não é suficiente

um pouco mais de um ano atrás eu decidi parar de abstrair meus sistemas operacionais e começar a aprender do zero. Eu recentemente mudei de Mac para Linux, o que me deu uma razão para olhar para o portando meus dotfiles para o novo ambiente. Foi refrescante.; Encontrei uma tonelada de atalhos confusos e duplicação e juntei-o a algo que encaixa bem entre os sistemas operacionais. Aqui estão alguns favoritos:

## Nicer shell experience
export GREP_OPTIONS="--color=auto"; # make grep colorful
export LSCOLORS=gxfxbEaEBxxEhEhBaDaCaD; # make ls more colorful as well
export HISTSIZE=32768; # Larger bash history (allow 32³ entries; default is 500)
export HISTFILESIZE=$HISTSIZE;
export HISTCONTROL=ignoredups; # Remove duplicates from history. I use `git status` a lot.
export HISTIGNORE="ls:cd:cd -:pwd:exit:date:* --help"; # Make some commands not show up in history
export LANG="en_US.UTF-8"; # Language formatting is still important
export LC_ALL="en_US.UTF-8"; # byte-wise sorting and force language for those pesky apps
export MANPAGER="less -X"; # Less is more
export GPG_TTY=$(tty); # for gpg key management

i’ve been on a journey to demystify the magic of my environment, and it is starting to make more sense.

a personalização quebra o meu .bashrc

é neste ponto de clareza que fiquei preso novamente. Eu quero algumas convenções modernas em meu terminal, especialmente auto-sugestões, realce de sintaxe, e colorização de saídas de Comando sem muitas dependências, e eu gostaria que essa configuração para ser independente de qualquer interpretador de linha de comando que eu estou executando. (iTerm2 é ótimo em um Mac, mas eu não quero rastrear seu arquivo de configuração críptica em meus dotfiles. Então o que devo fazer?

A primeira vez que fui atrás de uma resposta, resolvi-a um passo de cada vez:

  • primeiro, personalizei a minha ~/.ficheiro inputrc para permitir a pesquisa para a frente e para trás.
  • Então, eu substituí cat com a produção prettified de ccat e cat aliased para ccat em meu .bashrc. Isso mais tarde acabou quebrando a escrita para stdout em alguns casos, então eu parei de usá-lo.
  • Em última análise, eu usei Bash-it, que é um poderoso sistema de plugin para personalizar Bash.

Depois de descascar as peças um a um, senti que entendia um pouco mais sobre como o meu sistema funcionava. Os aros que eu senti que eu tinha que saltar para obter a experiência moderna que eu procurei me levou de volta aos padrões que me trouxeram a este ponto. Senti-me como um prisioneiro da história até decidir deitar tudo fora e tentar algo totalmente diferente.

facil defaults and customization with fish shell

Fish shell is a modern command-line interface with auto-suggestions, tab completion, and syntax realce (among other features). Eu gosto especialmente de como desde a primeira vez que você dá-lhe uma tentativa digitando peixe, você tem uma bela experiência:

na primeira linha, o comando é azul porque pwd é um comando válido. Na segunda linha, é vermelho porque pdw não é um comando válido. Carreguei no Enter para mostrar que é verdade, mas podia ter corrigido rapidamente o erro e seguir em frente com o meu dia. No terceiro comando, quero mudar o directório (cd) para a minha pasta de desenvolvimento, e o fish pergunta automaticamente se quero saltar para os meus dotfiles, como fiz da última vez. Quando carrego na Tab duas vezes, ela mostra outras opções no mesmo diretório, como eu esperava.

Se eu quiser personalizar a minha experiência de shell de peixe, Eu não preciso instalar qualquer biblioteca ou framework adicional para fazê-lo. O Fish envia com o comando fish_ config, que lança uma interface gráfica de utilizador (GUI) onde poderá escolher cores diferentes e perguntar as configurações.

o Que é mais impressionante é que você pode rever todas as funções disponíveis, variáveis, ligações, e mais do GUI também:

Se você ajustar sua configuração, todas as personalizações são armazenados no mesmo lugar: ~/.config / fish. A imagem acima mostra que eu fiz uma função personalizada que me permite facilmente ativar um ambiente Python usando pyenv. Confira o tutorial sobre as funções fish para mais informações.

: peixe não é como o Bash

Quando experimentar outras conchas, descobri que existem sempre algumas diferenças que eu precisava para sintonizar, mas eles sentiram familiarizados geral. Não é o caso do peixe. Definição de função, aliasing, e variáveis funcionam um pouco diferente. Existem estratégias úteis para a conversão .bashrc and .bash_profile files into fish configuration, but it’s more than I will cover in this article. Então, enquanto eu cresci a amar peixe, eu recomendo levar o tutorial interativo para uma volta para ver se você gosta.

dê à fish uma tentativa para uma bela concha padrão

eu gosto de começar o meu dia abrindo o terminal, e eu gosto ainda mais desde que mudar para a concha de peixe. Permite-me deixar de me preocupar com o que está no Bash para me concentrar no código que planeio escrever. Se quer afastar-se do seu terminal e concentrar-se mais no código, tente. Use o chsh para configurá-lo como o seu shell padrão, e deixe-me saber como ele vai nos comentários.

Deixe uma resposta

O seu endereço de email não será publicado.