Maybaygiare.org

Blog Network

Släpp Bash för fiskskal för att få vackra standardvärden

Jag är en av de personer som omedelbart öppnar ett terminalfönster efter att min dator startar upp. Det är inte av nödvändighet vid denna tidpunkt, men vanan är där. Jag tillbringade större delen av min karriär med att lära mig sina magiska besvärjelser, och jag tycker att navigering genom mina dagliga uppgifter på terminalen ger en roligare dag på jobbet. Som sagt, det är trevligt att prova något nytt då och då.

jag släppte nyligen standardkommandotolken, Bash, till förmån för fish, som stolt marknadsför sig som ”ett kommandoradsskal för 90-talet.” Här är varför jag bytte.

jag hittade det .bashrc räcker inte

För drygt ett år sedan bestämde jag mig för att sluta abstrahera bort mina operativsystem och börja lära mig det från grunden. Jag bytte nyligen från Mac till Linux, vilket gav mig en anledning att titta på att portera mina dotfiles till den nya miljön. Det var uppfriskande; Jag hittade massor av förvirrande genvägar och dubbelarbete och parade det ner till något som hamnar mellan operativsystem bra. Här är några favoriter:

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

Jag har varit på en resa för att avmystifiera magin i min miljö, och det börjar bli mer meningsfullt.

anpassning bryter min .bashrc

det är vid denna punkt av klarhet som jag fastnade igen. Jag vill ha några moderna konventioner i min terminal, särskilt auto-förslag, syntaxmarkering och färgläggning av kommandoutgångar utan för många beroenden, och jag skulle vilja att konfigurationen var oberoende av vilken kommandoradstolk jag kör. (iTerm2 är bra på en Mac, men jag vill inte spåra sin kryptiska konfigurationsfil i mina dotfiles.) Så vad ska jag göra?

första gången jag gick efter ett svar löste jag det ett steg i taget:

  • först anpassade jag min ~/.inputrc-fil för att möjliggöra sökning framåt och bakåt.
  • sedan ersatte jag cat med prettified-utgången från ccat och aliased cat till CCAT i min .bashrc. Detta senare bröt slutligen skriva till stdout i vissa fall, så jag slutade använda den.
  • slutligen använde jag Bash-it, vilket är ett kraftfullt plugin-system för att anpassa Bash.

Efter att ha tagit tillbaka bitarna en efter en kände jag att jag förstod lite mer om hur mitt system sprang. De hoops jag kände att jag var tvungen att hoppa igenom för att få den moderna upplevelsen jag sökte ledde mig tillbaka till de standarder som förde mig till denna punkt. Jag kände att jag var en fånge i historien tills jag bestämde mig för att kasta bort allt och prova något helt annat.

enkla standardinställningar och anpassning med fish shell

Fish shell är ett modernt kommandoradsgränssnitt med automatiska förslag, flikkomplettering och syntaxmarkering (bland andra funktioner). Jag gillar särskilt hur från första gången du försöker genom att skriva fish får du en vacker upplevelse:

i första raden är kommandot blått eftersom pwd är ett giltigt kommando. På den andra raden är den röd eftersom pdw inte är ett giltigt kommando. Jag slog Enter för att visa att det är sant, men jag kunde snabbt ha korrigerat felet och gått vidare med min dag. I det tredje kommandot vill jag byta Katalog (cd) till min Utvecklingsmapp, och fish frågar automatiskt om jag vill hoppa in i mina dotfiles, som jag gjorde förra gången. När jag slår fliken två gånger visar den andra alternativ i samma katalog, precis som jag förväntar mig.

Om jag vill anpassa min fish shell-upplevelse behöver jag inte installera något extra bibliotek eller ramverk för att göra det. Fish levereras med kommandot fish_config, som startar ett grafiskt användargränssnitt (GUI) där du kan välja olika färger och snabba konfigurationer.

vad är mer imponerande är att du kan granska alla tillgängliga funktioner, variabler, bindningar och mer från GUI också:

om du ställer in din konfiguration lagras alla anpassningar på samma plats: ~/.config / fisk. Skärmdumpen ovan visar att jag gjorde en anpassad funktion som gör att jag enkelt kan aktivera en Python-miljö med pyenv. Kolla in handledningen om fiskfunktioner för mer.

varnas: fisk är inte som Bash

när jag testade andra skal, fann jag att det alltid fanns några skillnader som jag behövde ställa in, men de kände sig bekanta överallt. Så är inte fallet med fisk. Funktionsdefinition, aliasing och variabler fungerar alla lite annorlunda. Det finns användbara strategier för konvertering .bashrc och .bash_profile filer till fisk konfiguration, men det är mer än jag kommer att täcka i den här artikeln. Så, medan jag har vuxit till att älska fisk, rekommenderar jag att du tar den interaktiva handledningen för en snurr för att se om du gillar det.

ge fish ett försök för ett vackert standardskal

Jag tycker om att börja min dag genom att öppna terminalen, och jag tycker om det ännu mer sedan jag bytte till fiskskalet. Det får mig att flytta från att oroa mig för vad som finns i Bash för att fokusera på vilken kod jag planerar att skriva. Om du vill flytta dig från att tinka med din terminal och fokusera mer på kod, prova. Använd chsh för att ställa in det som standardskal, och låt mig veta hur det går i kommentarerna.

Lämna ett svar

Din e-postadress kommer inte publiceras.