Å sette opp en ny maskin kan ofte være et spennende potensial. Men som utviklere er det mange verktøy vi trenger som ikke kommer som standard.
I dette innlegget vil jeg gjerne gå gjennom noen av de teknikkene jeg bruker for å hjelpe meg med å sette opp maskinen min raskt, effektivt og med ekstra supermakter.
Etter å ha lest denne artikkelen, bør du kunne gjøre følgende:
Før vi begynner, trenger du litt forståelse av Git og bruker kommandolinjen. Hvis du ikke er sikker på hva disse er, vil jeg anbefale å se over følgende først:
Hva om du kunne stilere terminalen, gjør hastigheten til oppdragskontrollen raskere, løp g
i stedet for git
, ha tab
Autofullfør uavhengig av filnavn, sjekk om programvareoppdateringer daglig, ikke bare en gang i uken? Hva om du kan automatisere å sette opp alle disse funksjonene med et enkelt skript? Høres bra? Da er dette innlegget for deg.
I mange henseender er det å sette opp en ny maskin helt ned til personlig preferanse. Jeg er alltid refactoring og reevaluating og jeg vil råde deg til å gjøre det samme. Finn ut hva som fungerer best for deg og dele din kunnskap.
TL; DR: Invester tid til å lære å konfigurere maskinen og automatisere prosesser, du får den tiden tilbake ti ganger.
Dotfiles, såkalte fordi filnavnet begynner med a .
finnes i brukerens hjemmekatalog. Disse filene er opprettet når du installerer og konfigurerer maskinen. Jeg tenker på hver dotfile som en superhelt som hver inneholder sine egne supermakter. Jeg skal gå over hver superhelt dotfile og kreftene som ligger innenfor. Men først…
Det er mye å si om awesomeness av dotfiles, konfigurere konfigurasjoner automatisk og fremskynde prosesser. Det kan være fristende å klone et repository og kjøre dotfiles med en gang, men jeg vil råde over dette da utfallet kan ha uønskede resultater.
Først av alt, vil jeg anbefale å klone noen eksisterende dotfiles repositories. Hvis du gjør det, kan du begynne å forstå filstrukturen og få oversikt over koden. Følgende er GitHub repos fra noen topp utviklere som har delt sine dotfiles:
Det kan virke skremmende ved første øyekast, men ikke panikk, jeg skal gå over hver dotfile som jeg bruker når jeg installerer en ny maskin. Etter å ha lest dette innlegget, når du har en bedre forståelse av hver fil og hva de kan gjøre, vil jeg anbefale å lage ditt eget arkiv og dra nytte av eksisterende dotfiles for å bygge opp det. Du kan da legge til filene og koden i det som passer best for dine behov.
Som folk nevner generelt deres dotfiles repo dotfiles
Jeg stiller mappestrukturen opp slik:
└─ - dotfiles ├── mathias │ └─ - dotfiles │ ├── LISENS-MIT.txt │ ├── README.md │ ├── bin │ │ ├── bash -> / usr / local / Cellar / bash /4.2.45/bin/bash │ │ ├── httpcompression │ │ └── subl -> / Programmer / Sublime \ Text \ 3.app/Contents/SharedSupport/bin/subl │ ├── bootstrap.sh │ └─ ─ init │ └── Mathias.terminal ├── paulirish │ └── dotfiles │ ├── README.md │ ├── bin │ │ ├── github-email │ │ └─ - spot │ ├── install- deps.sh │ └─ - sync.sh └─ - simonowendesign └─ - dotfiles ├── bootstrap.sh ├── init │ ├── Mathias.terminal │ └─ - SolarizedDark.terminal ├── install-deps.sh └─ - readme.md
Her setter jeg opp en hovedmappe som heter dotfiles, deretter en mappe med brukernavnet og deretter repo. Grunnen jeg anbefaler å sette opp slik som dette er å unngå forvirring. Noen av kodene er ganske like, så jeg synes det er nyttig å enkelt se hvilken kode jeg ser på. For eksempel, hvis jeg hadde fire eller flere repos alle navngitte "dotfiles", ville denne prosessen bli mye vanskeligere.
Vil du vite hvordan jeg skriver ut mappestrukturen slik? Jeg brukte denne fantastiske tingen som heter tre
, installert i .brygge
fil.
La oss kaste hver fil ned og se på hva som skjer.
Dotfiles er delt inn i to hovedtyper. De som inneholder et sett med kommandoer og bare kjører en gang, .osx
for eksempel kjører en liste over kommandoer og gir OS X supermakter. Andre filer som .bash_profile
og .bashrc
Kjør hver gang du åpner en ny Terminal-økt, og gir Terminal-superkrefter.
Her er en nedlasting av dotfilene i min repo og en beskrivelse av hva de kan gjøre.
Det er best å kjøre dette først. Når det sjekker det Hjemme brygget
er oppdatert, vil den bli brukt til å installere nyttige verktøy som tre
.
brygge installasjonstreet
I stedet for å måtte gå til et nettsted og laste ned en app, er det også mulig å automatisere installeringen av enkelte apper ved hjelp av brygge-cask
, som for eksempel:
brew cask installer dropbox brew cask installer google-chrome
Denne filen er som å vri nøkkelen i en bil for å starte motoren.
Når det kjøres, vil det synkronisere den lokale repoen og den på GitHub, og deretter kopiere de filene til hjemmemappen din, og overstyr eventuelle eksisterende filer hvis de eksisterer.
Derfor, før du kjører bootstrap.sh
det er en god ide å sikkerhetskopiere eksisterende dotfiles og lagre dem et annet sted. En praktisk snarvei for å komme til dotfilene dine i Finder er:
Finder> Cmd + Shift + g> ~
Jeg bruker en app kalt TotalFinder, dette legger til noen fine funksjoner til Finder. Tabbed windows og en snarvei for å vise og skjule skjulte filer for eksempel finner jeg veldig nyttig.
I bootstrap.sh
du vil legge merke til kilde ~ / .bash_profile
. Dette betyr at hvis du kjører bootstrap.sh
og har noen Terminal-vinduer åpne, vil de nye innstillingene bli brukt uten behov for omstart.
Når du åpner en ny Terminal-økt, lastes denne filen av Bash. Den laster i de andre dotfilene banen, bash_prompt, eksport, aliaser, funksjoner, ekstra
og konfigurerer noen nyttige innstillinger som automatisk korrigeringstastatur når du bruker cd
ferdigstillelse.
I noen tilfeller .bashrc
kan lastes, så denne filen sørger for at .bash_profile
er kalt.
Jeg liker min Terminal ren og rotfri, så jeg velger ikke å vise brukernavn / datamaskinnavn øverst som standard med denne filen.
Denne filen øker prosessen med å kjøre kjørbare filer. Snarere enn å måtte cd
frem og tilbake over ulike baner til kjørbare filer, kan du angi filbanene i din .sti
dotilfe og kjør kjørbare filer direkte.
Vanligvis er denne filen ikke holdt i offentlig repo, da den kan inneholde sensitiv informasjon.
Her er et eksempel ~ / .path-fil som legger til ~ / utils til $ PATH:
eksporter PATH = "$ HOME / utils: $ PATH"
Ved å bruke denne filen kan du tilpasse og angi de forskjellige fargene i Bash-spørringen din.
Angir miljøvariabler, for eksempel innstilling av Vim som standardredigeringsprogrammet ved hjelp av eksport EDITOR = "vim"
. Det øker også mengden historie lagret, nyttig for backtracking over tidligere kommandoer du har brukt.
Denne filen inneholder nyttige aliaser som hjelper deg med å skrive mindre. For eksempel, i stedet for å skrive 'cd ...
'du kan sette det her for å være'...
'. Begynner å like disse filene enda? :)
Ligner på aliaser, unntatt funksjoner kan ta argumenter.
Før da jeg nevnte at jeg så over forskjellige dotfile repos, gjorde jeg det mkdir
å opprette en katalog. Etter det vil jeg da måtte cd
inn i den katalogen.
Et eksempel på en funksjon som jeg finner nyttig er:
# Opprett en ny katalog og skriv inn funksjonen mkd () mkdir -p "$ @" && cd "$ @"
Nå kan du bare gjøre det MKD
. Nå har du ikke bare laget katalogen, du er også i katalogen.
Denne filen brukes til å legge til dine personlige opplysninger og er ikke lagt til i depotet ditt for å sikre at noen ikke ved et uhell gaffelprosjektet ditt og deretter begynne å begå ved å bruke dine opplysninger. Noe fint å legge inn her ville være Git-legitimasjonene dine.
Denne filen brukes kun av Git, for eksempel når a git
kommandoen er påkalt. Så selv om det er en .aliaser
fil, disse aliasene kjøres direkte.
I .aliaser
jeg har g
satt til git
og i .gitconfig
, s
satt til status-s
.
Nå i stedet for å kjøre:
git status-s
Jeg kan bare kjøre:
g s
Sett inn filer som du vil at Git skal ignorere på hele systemet. Yay, ikke mer .DS_Store
blir begått uhell!
En liten fil som forbedrer lesbarheten for gvim
.
Simliar til .gitignore
for Mercurial.
I noen tilfeller, for eksempel når du ssh
inn i en maskin, kan du bli presentert med en melding. Det kan se slik ut:
_ | | _ __ ___ _ _ ___ ___ ___ | | ___ ___ _ ____ _____ _ __ | '_' _ \ | | | | / __ / _ \ / _ \ | | / __ | / _ \ '__ \ \ / / _ \' __ | | | | | | | | _ | | | (_ | (_) | (_) | | \ __ \ __ / | \ V / __ / | | _ | | _ | | _ | \ __, | \ ___ \ ___ / \ ___ / | _ | | ___ / \ ___ | _ | \ _ / \ ___ | _ | __ / | | ___ / Velkommen til min kule server. Eventuell ondsinnet og / eller uautorisert aktivitet er strengt forbudt. All aktivitet kan logges.
Denne filen forhindrer at dette blir vist.
Konfigurerer 'Leslinjemiljøet'. Dette styrer måten tastene fungerer når du skriver inn en kommando i skallet ditt.
Et eksempel på hvordan jeg finner dette nyttig er å lage tab
autofullfør uansett filnavn tilfelle:
sett ferdig-ignorer-saken på
Dette er min favoritt av alle dotfiles. Den kjøres en gang manuelt for at kommandoene skal løpe og tre i kraft. Avhengig av hva du har lagt til i denne filen, må du kanskje starte maskinen på nytt.
Noen av de fantastiske tingene jeg elsker er:
Hvis du bruker skjerm
, dette fjerner oppstartsmeldingen.
Jeg er ikke så kjent med vim
. Men noen av tingene du kan gjøre med denne filen, er å aktivere linjenumre og legge til syntaksutheving.
Høres ut som en god ide til meg :)
Hvis du bruker wget
, Dette legger til flere innstillinger, for eksempel endring av timeout til 60 sekunder i stedet for standard 15 minutter. Det setter også prøve på tre, i stedet for standard 20!
På dette tidspunktet har jeg gått over alle filene og jeg er på et stadium der jeg er fornøyd med alt i min repo. Alt jeg ikke var sikker på, har blitt kommentert.
Nå er den spennende delen! Som det står har vi dotfilene i en repo, men vi må sette dem på riktig sted slik at de kan bli funnet og brukt.
Tenk på det som dette, vi har Thor's Hammer, Batman's Utility Belt, Captain America's Shield, og Iron Man's Suit. Alle våre helter vet hvordan du bruker disse, men uten dem er de tapt! Vi må gi våre superhero sine våpen, slik at de kan bruke dem.
For å gjøre dette (med mine eksisterende dotfiles sikkerhetskopiert og repoen min oppdatert), åpner du Terminal, cd
til repo og løp
kilde bootstrap.sh
neste, cd
til ~
og løp:
kilde .osx
Rask omstart og ... Fantastisk, super krefter er nå tilgjengelige!!!
Tilbringer du mye tid på å gjøre ting som dette?
cd dette / er / det / banen / det / jeg / vil / så / jeg / type / det / alt / ut / til / få / hvorvidt
Hva om i stedet, kan du bare gjøre dette:
z hvorvidt
Ja takk. Takk, https://github.com/rupa/z.
For å legge til dette, i .bash_profile
Jeg gjorde følgende endring:
# init z https://github.com/rupa/z. ~ / Z / z.sh
Og også i install-deps.sh
:
cd git klone https://github.com/rupa/z.git chmod + x ~ / z / z.sh
Når du kjører dotfilene dine for første gang, kan du oppdage at du ikke liker et stykke kode som har blitt kjørt. For eksempel, i .osx
fil, jeg var ikke så opptatt av hva følgende kode gjorde:
standardinnstillinger skriv com.apple.dock showhidden -bool true
Denne koden endret opaciteten på skjulte apper i kaien.
For å bare gå tilbake til denne oppførselen til standardstatus, kjørte jeg rett og slett kommandoen igjen, denne gangen endret ekte
til falsk
, og så:
standardinnstillinger skriv com.apple.dock showhidden -bull false
Dette setter det tilbake til standard.
Med de fleste kommandoer er det ganske åpenbart å tilbakestille kommandoen ved å bare endre ekte
til falsk
eller vice versa. Med andre er det mulig å sette det tilbake til standard ved hjelp av standardinnstillinger sletter
, for eksempel, standardinnstillinger slette NSGlobalDomain AppleHighlightColor
. I noen tilfeller må du kanskje også starte maskinen på nytt.
Nå er dette for den mer avanserte dotfile master. Etter hvert som du får mer kunnskap og tillit ved hjelp av dotfiles, vil du kanskje inkludere din egen kode.
På en ny maskin hvis du finner at du manuelt endrer innstillinger, vil disse være best automatisert.
Legge til ditt eget .osx
kommandoer kan bli litt vanskelig!
Men generelt er dette et godt sted å starte:
standardinnstillinger leser> a
standardinnstillinger les> b
diff a b
Å gjøre dette skaper en fil som heter en
og b
så viser forskjellen mellom dem, med denne kunnskapen kan du deretter åpne filen b
i Sublime Text 2, søk etter biten som endret og prøv og utfør kommandoen for å endre den. Hvis du prøver denne metoden, lykke til!
Så, der har du det! Gå videre, ha det gøy med dotfiles, se frem til å gi maskinen din super krefter, og neste gang du trenger å sette opp en maskin fra bunnen av, kan du smile til deg selv som hele prosessen er automatisert.
Takk veldig mye for å stoppe ved, vær så snill å kommentere nedenfor hvis du har noen spørsmål eller forslag.
Jeg er spesielt interessert i å se din egen .dotfiles
repos og eventuelle nye tillegg du gjør, så vær så snill å legge til en link til din dotfiles repo i kommentarene nedenfor.
Dette blogginnlegget ville ikke vært mulig uten den fantastiske hjelpen fra samfunnet, spesielt takket være @mathias, @paul_irish, @reybango og @AndrewPerkins.