te krijgen Ik ben een van die mensen die onmiddellijk een terminalvenster opent nadat mijn computer is opgestart. Het is niet uit noodzaak op dit moment, maar de gewoonte is er. Ik bracht het grootste deel van mijn carrière het leren van de magische bezweringen, en ik vind navigeren door mijn dagelijkse taken op de terminal zorgt voor een meer plezierige dag op het werk. Dat alles gezegd, het is leuk om eens iets nieuws te proberen af en toe.
Ik heb onlangs de standaard command line interpreter, Bash, losgelaten ten gunste van fish, die zichzelf trots op de markt brengt als “een command line shell voor de jaren ’90”.
dat vond ik .bashrc Is not enough
iets meer dan een jaar geleden besloot ik te stoppen met het abstraheren van mijn besturingssystemen en het van de grond af te leren. Ik ben onlangs overgestapt van Mac naar Linux, wat me een reden gaf om te kijken naar het porten van mijn dotfiles naar de nieuwe omgeving. Het was verfrissend.; Ik vond een ton van verwarrende snelkoppelingen en duplicatie en gekoppeld aan iets dat poorten tussen besturingssystemen goed. Hier zijn een paar favorieten:
## 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
Ik ben op een reis geweest om de magie van mijn omgeving te ontmaskeren, en het begint logischer te worden.
aanpassen breekt mijn .bashrc
Het is op dit punt van duidelijkheid dat ik weer vast kwam te zitten. Ik wil een aantal moderne conventies in mijn terminal, met name auto-suggesties, syntaxis highlighting, en colorisatie van commando-uitgangen zonder al te veel afhankelijkheden, en ik zou willen dat die configuratie onafhankelijk van welke command line interpreter ik draai. (iTerm2 is geweldig op een Mac, maar Ik wil het cryptische configuratiebestand niet volgen in mijn dotfiles. Dus wat moet ik doen?
De eerste keer dat ik na een antwoord ging, loste ik het stap voor stap op:
- eerst paste ik mijn ~/aan.inputrc-bestand om vooruit en achteruit te zoeken.
- vervolgens heb ik cat vervangen door de voorbeeldige uitvoer van CCAT en een alias cat naar CCAT in mijn .bashrc. Dit later uiteindelijk brak schrijven naar stdout in sommige gevallen, dus ik stopte met het gebruik ervan.
- uiteindelijk heb ik Bash-it gebruikt, wat een krachtig plugin systeem is voor het aanpassen van Bash.
na het een voor een terugpellen van de stukken, voelde ik dat ik iets meer begreep over hoe mijn systeem liep. De hoepels die ik voelde alsof ik moest springen om de moderne ervaring die ik zocht leidde me terug naar de normen die me tot dit punt bracht. Ik voelde me als een gevangene van de geschiedenis totdat ik besloot om het allemaal weg te gooien en iets totaal anders te proberen.
Easy defaults and customization with fish shell
Fish shell is een moderne opdrachtregelinterface met auto-suggesties, tabvoltooiing en syntaxismarkering (onder andere). Ik vind het vooral leuk hoe vanaf de eerste keer dat je het probeert door fish te typen, je een mooie ervaring krijgt:
in de eerste regel is het commando blauw omdat pwd een geldig commando is. Op de tweede regel is het rood omdat pdw geen geldig commando is. Ik druk op Enter om te laten zien dat het waar is, maar ik had de fout snel kunnen corrigeren en verder kunnen gaan met mijn dag. In het derde Commando wil ik directory (cd) veranderen in mijn Ontwikkelmap, en fish vraagt automatisch of ik in mijn dotfiles wil springen, zoals de vorige keer. Wanneer ik druk op Tab twee keer, het toont andere opties in dezelfde directory, net als ik zou verwachten.
als ik mijn fish shell-ervaring wil aanpassen, hoef ik hiervoor geen extra bibliotheek of framework te installeren. Fish wordt geleverd met het fish_config commando, dat een grafische gebruikersinterface (GUI) lanceert waar je verschillende kleuren en prompt configuraties kunt kiezen.
wat indrukwekkender is, is dat u alle beschikbare functies, variabelen, bindingen en meer ook vanuit de GUI kunt bekijken:
Als u uw configuratie afstelt, worden alle aanpassingen op dezelfde plaats opgeslagen:~/.config / fish. De screenshot hierboven laat zien dat ik een aangepaste functie die me in staat stelt om eenvoudig te activeren een Python omgeving met behulp van pyenv. Bekijk de tutorial over fish-functies voor meer.
wees gewaarschuwd: fish is niet zoals Bash
bij het uitproberen van andere schelpen, vond ik dat er altijd een paar verschillen waren die ik nodig had om af te stemmen, maar ze voelden over het algemeen vertrouwd aan. Dat is niet het geval met vis. Functiedefinitie, aliasing en variabelen werken allemaal een beetje anders. Er zijn nuttige strategieën voor het omzetten .bashrc en .bash_profile bestanden in fish configuratie, maar het is meer dan Ik zal behandelen in dit artikel. Dus, terwijl ik ben gegroeid om van vis te houden, adviseer ik het nemen van de interactieve tutorial voor een spin om te zien of je het leuk vindt.
probeer een mooie standaard shell
Ik begin graag mijn dag door de terminal te openen, en ik geniet er nog meer van Sinds ik overschakel naar de visschelp. Daardoor kan ik me niet meer zorgen maken over wat er in Bash zit, maar me concentreren op welke code ik ga schrijven. Als u op zoek bent om weg te gaan van knutselen met uw terminal en zich meer richten op code, probeer het eens. Gebruik chsh om het in te stellen als je standaard shell, en laat me weten hoe het gaat in de comments.