Maybaygiare.org

Blog Network

Drop Bash for fish shell for at få smukke standardindstillinger

Jeg er en af de mennesker, der straks åbner et terminalvindue, når min computer starter op. Det er ikke af nødvendighed på dette tidspunkt, men vanen er der. Jeg tilbragte det meste af min karriere med at lære dens magiske besværgelser, og jeg finder ud af, at det at navigere gennem mine daglige opgaver på terminalen giver en sjovere dag på arbejdet. Det hele sagt, det er rart at prøve noget nyt en gang imellem.

Jeg slap for nylig standard kommandolinjetolken, Bash, til fordel for fisk, som stolt markedsfører sig som “en kommandolinjeskal til 90 ‘erne.” Her er hvorfor jeg skiftede.

jeg fandt det .bashrc er ikke nok

for lidt over et år siden besluttede jeg at stoppe med at abstrahere mine operativsystemer og begynde at lære det fra bunden. Jeg har for nylig skiftet fra Mac til Linu, hvilket gav mig en grund til at se på at overføre mine dotfiles til det nye miljø. Det var forfriskende; Jeg fandt masser af forvirrende genveje og duplikering og parrede det ned til noget, der porte mellem operativsystemer godt. Her er et par favoritter:

## 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

Jeg har været på en rejse for at afmystificere magien i mit miljø, og det begynder at give mere mening.

tilpasning bryder min .bashrc

det er på dette klarhedspunkt, at jeg sidder fast igen. Jeg vil have nogle moderne konventioner i min terminal, især auto-forslag, syntaksfremhævning og farvelægning af kommandoudgange uden for mange afhængigheder, og jeg vil gerne have, at konfigurationen er uafhængig af hvilken kommandolinjetolk jeg kører. (iTerm2 er fantastisk på en Mac, men jeg vil ikke spore sin kryptiske konfigurationsfil i mine dotfiler.) Så hvad skal jeg gøre?

første gang jeg gik efter et svar, løste jeg det et skridt ad gangen:

  • først tilpassede jeg min ~/.inputrc fil til at give mulighed for frem og tilbage søgning.
  • derefter erstattede jeg cat med den prettificerede output af ccat og aliased cat til ccat i min .bashrc. Dette brød senere til sidst at skrive til stdout i nogle tilfælde, så jeg stoppede med at bruge det.
  • i sidste ende brugte jeg Bash-it, som er et kraftfuldt plugin-system til tilpasning af Bash.

efter at have skrællet stykkerne en efter en, følte jeg, at jeg forstod lidt mere om, hvordan mit system kørte. De bøjler, jeg følte, at jeg var nødt til at hoppe igennem for at få den moderne oplevelse, jeg søgte, førte mig tilbage til de standarder, der bragte mig til dette punkt. Jeg følte, at jeg var en fange af historien, indtil jeg besluttede at smide det hele væk og prøve noget helt andet.

nem standardindstillinger og tilpasning med fish shell

Fish shell er en moderne kommandolinjegrænseflade med auto-forslag, afslutning af fanen og syntaksfremhævning (blandt andre funktioner). Jeg kan især godt lide, hvordan man fra første gang du prøver det ved at skrive fisk, får en smuk oplevelse:

i første linje er kommandoen blå, fordi PV er en gyldig kommando. På den anden linje er den rød, fordi PDV ikke er en gyldig kommando. Jeg ramte Enter for at vise, at det er sandt, men jeg kunne hurtigt have rettet fejlen og gået videre med min dag. I den tredje kommando vil jeg ændre mappe (cd) til min udviklingsmappe, og fish spørger automatisk, om jeg vil hoppe ind i mine dotfiler, som jeg gjorde sidste gang. Når jeg rammer fanen to gange, viser den andre muligheder i samme mappe, ligesom jeg ville forvente.

Hvis jeg vil tilpasse min fish shell-oplevelse, behøver jeg ikke installere noget ekstra bibliotek eller ramme for at gøre det. Fisk skibe med kommandoen fish_config, som lancerer en grafisk brugergrænseflade (GUI), hvor du kan vælge forskellige farver og hurtige konfigurationer.

hvad der er mere imponerende er, at du også kan gennemgå alle tilgængelige funktioner, variabler, bindinger og mere fra GUI ‘ en:

Hvis du indstiller din konfiguration, gemmes alle tilpasninger på samme sted:~/.config / fisk. Skærmbilledet ovenfor viser, at jeg lavede en brugerdefineret funktion, der giver mig mulighed for nemt at aktivere et Python-miljø ved hjælp af pyenv. Tjek tutorial om fisk funktioner for mere.

vær advaret: fisk er ikke som Bash

når jeg prøvede andre skaller, fandt jeg, at der altid var et par forskelle, jeg havde brug for at tune, men de følte sig generelt velkendte. Det er ikke tilfældet med fisk. Funktionsdefinition, aliasing og variabler fungerer alle lidt anderledes. Der er nyttige strategier til konvertering .bashrc og .bash_profile filer i fisk konfiguration, men det er mere end jeg vil dække i denne artikel. Så, mens jeg er vokset til at elske fisk, jeg anbefaler at tage den interaktive tutorial til et spin for at se, om du kan lide det.

giv fisk en chance for en smuk standard shell

Jeg nyder at starte min dag ved at åbne terminalen, og jeg nyder det endnu mere, siden jeg skiftede til fiskeskallen. Det har tilladt mig at skifte væk fra at bekymre mig om, hvad der er i Bash til at fokusere på, hvilken kode jeg planlægger at skrive. Hvis du ønsker at bevæge dig væk fra at tinkere med din terminal og fokusere mere på kode, så prøv det. Brug chsh til at indstille det som din standardskal, og lad mig vide, hvordan det går i kommentarerne.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret.