jeg er en av dem som umiddelbart åpner en terminal vindu etter min datamaskin støvler opp. Det er ikke av nødvendighet på dette punktet, men vanen er der. Jeg tilbrakte mesteparten av karrieren min med å lære sine magiske besvergelser, og jeg finner at navigering gjennom mine daglige oppgaver på terminalen gir en morsommere dag på jobben. Når det er sagt, er det fint å prøve noe nytt en gang i blant.
jeg har nylig gitt slipp på standard kommandolinjetolk, Bash, til fordel for fish, som stolt markedsfører seg som » et kommandolinjeskall for 90-tallet.»
jeg fant det .bashrc er ikke nok
for litt over et år siden bestemte jeg meg for å slutte å abstrahere operativsystemene mine og begynne å lære det fra grunnen av. Jeg har nylig byttet Fra Mac Til Linux, noe som ga meg en grunn til å se på porting mine dotfiles til det nye miljøet. Det var forfriskende; Jeg fant massevis av forvirrende snarveier og duplisering og parret det ned til noe som porter mellom operativsystemer godt. Her er noen 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ært på en reise for å avmystifisere magien i mitt miljø, og det begynner å gi mer mening.
Tilpasning bryter min .bashrc
det er på dette klarhetspunktet at jeg ble sittende fast igjen. Jeg vil ha noen moderne konvensjoner i min terminal, spesielt auto-forslag, syntaksutheving og fargelegging av kommandoutganger uten for mange avhengigheter, og jeg vil at konfigurasjonen skal være uavhengig av hvilken kommandolinjetolk jeg kjører. (iTerm2 er flott På En Mac, men jeg vil ikke spore sin kryptiske konfigurasjonsfil i dotfiles.) Så hva skal jeg gjøre?
Første gang jeg gikk etter et svar, løste jeg det ett skritt om gangen:
- Først tilpasset jeg min~/.inputrc fil for å tillate forover og bakover søk.
- da erstattet jeg cat med den prettified utgangen av ccat og aliased cat til ccat i min .bashrc. Dette senere til slutt brøt skrive til stdout i noen tilfeller, så jeg sluttet å bruke det.Til Slutt brukte Jeg Bash-it, som er et kraftig plugin-system for å tilpasse Bash.
etter peeling tilbake stykkene en etter en, følte jeg at jeg forsto litt mer om hvordan systemet mitt kjørte. Hoops jeg følte at jeg måtte hoppe gjennom for å få den moderne opplevelsen jeg søkte førte meg tilbake til standardene som førte meg til dette punktet. Jeg følte at jeg var en fange av historien til jeg bestemte meg for å kaste alt bort og prøve noe helt annet.
Enkle standardinnstillinger og tilpasning med fish shell
Fish shell Er et moderne kommandolinjegrensesnitt med auto-forslag, tab fullføring, og syntax highlighting (blant andre funksjoner). Jeg liker spesielt hvordan fra første gang du prøver å skrive fisk, får du en vakker opplevelse:
i første linje er kommandoen blå fordi pwd er en gyldig kommando. På den andre linjen er den rød fordi pdw ikke er en gyldig kommando. Jeg trykker Enter for å vise at det er sant, men jeg kunne raskt ha korrigert feilen og gått videre med dagen min. I den tredje kommandoen vil jeg endre katalog (cd) i Utviklingsmappen min, og fish spør automatisk om jeg vil hoppe inn i dotfilene mine, som jeg gjorde forrige gang. Når Jeg treffer Tab to ganger, viser det andre alternativer i samme katalog, akkurat som jeg forventer.
hvis jeg vil tilpasse fiskeskallopplevelsen min, trenger jeg ikke å installere noe ekstra bibliotek eller rammeverk for å gjøre det. Fisk skip med fish_config kommando, som lanserer et grafisk brukergrensesnitt (GUI) der du kan velge forskjellige farger og rask konfigurasjoner.
hva er mer imponerende er at du kan se gjennom alle tilgjengelige funksjoner, variabler, bindinger og mer fra GUI også:
Hvis du stiller inn konfigurasjonen, lagres alle tilpasninger på samme sted:~/.config / fisk. Skjermbildet over viser at jeg laget en tilpasset funksjon som gjør at jeg enkelt kan aktivere Et Python-miljø ved hjelp av pyenv. Sjekk ut opplæringen om fiskefunksjoner for mer.
vær advart: fisk er ikke Som Bash
når du prøver ut andre skjell, fant jeg det var alltid noen forskjeller jeg trengte å tune, men de følte kjent samlet. Slik er det ikke med fisk. Funksjonsdefinisjon, aliasing og variabler fungerer alle litt annerledes. Det er nyttige strategier for konvertering .bashrc og .bash_profile filer til fiskekonfigurasjon, men det er mer enn jeg vil dekke i denne artikkelen. Så, mens jeg har vokst til å elske fisk, anbefaler jeg å ta den interaktive opplæringen for et spinn for å se om du liker det.
Gi fisken en prøve for en vakker standard skall
jeg liker å starte dagen min ved å åpne opp terminalen, og jeg liker det enda mer siden bytte til fiskeskallet. Det er tillatt meg å skifte bort fra å bekymre meg for Hva Som er I Bash for å fokusere på hvilken kode jeg planlegger å skrive. Hvis du ønsker å bevege deg bort fra å tinkere med terminalen din og fokusere mer på kode, prøv det. Bruk chsh til å sette det som standard skall, og gi meg beskjed om hvordan det går i kommentarene.