Configurarea unei mașini Mac Dev de la zero la erou cu fișiere Dotfiles

Configurarea unei mașini noi poate fi adesea o perspectivă interesantă. Cu toate acestea, în calitate de dezvoltatori, există o mulțime de instrumente de care avem nevoie, care nu vin ca standard.

În acest post, aș vrea să trec prin câteva dintre tehnicile pe care le folosesc pentru a vă ajuta să vă configurați mașina rapid, eficient și cu puteri superioare adăugate.


Introducere

După ce ați citit acest articol, ar trebui să puteți efectua următoarele:

  1. Configurați rapid o mașină nouă
  2. Îmbunătățiți SSH'ing într-o cutie Linux
  3. Folosiți cu ușurință config-uri inteligente de la alți dezvoltatori de pe GitHub
  4. Trimiteți opțional configurarea dvs. cu alți dezvoltatori și participați
  5. Acesta este modul în care toți dezvoltatorii profesioniști își mențin configurațiile

Înainte de a începe, veți avea nevoie de o înțelegere a lui Git și folosind linia de comandă. Dacă nu sunteți sigur care sunt acestea, aș recomanda să priviți mai întâi următoarele:

  • http://net.tutsplus.com/?s=git
  • http://net.tutsplus.com/?s=terminal

Dotfiles Superhero

Dacă ați putea să stilizați Terminalul, să accelerați viteza controlului misiunii, să alergați g in loc de git, avea fila autocomplete, indiferent de cazul fișierului, verificați actualizările de software zilnic, nu doar o dată pe săptămână? Dacă ați putea automatiza configurarea tuturor acestor funcții cu un singur script? Suna bine? Apoi, acest post este pentru tine.

În multe privințe, înființarea unei mașini noi este în mare măsură în favoarea preferințelor personale. Întotdeauna refactorizăm și reevaluăm și te sfătuiesc să faci același lucru. Aflați ce funcționează cel mai bine pentru dvs. și împărtășiți-vă cunoștințele.

TL; DR: Invatați învățarea timpului pentru a vă configura mașina și pentru a automatiza procesele, veți reveni de zece ori.

Dotfiles, așa numitul deoarece numele fișierului începe cu a . se găsesc în directorul de domiciliu al utilizatorului. Aceste fișiere sunt create în timp ce instalați și configurați aparatul. Mă gândesc la fiecare dotfile ca pe un super-erou, fiecare având propriile super-puteri. Voi trece peste fiecare dot-super-erou și puterile care se află înăuntru. Dar mai intai…

Există multe de spus pentru minunata dotfile, configurarea automată a configurațiilor și accelerarea proceselor. Poate fi tentant să clonați un depozit și să rulați imediat dotfile, dar aș sfătui împotriva acestui fapt deoarece rezultatul poate avea rezultate nedorite.

Pași de bebeluș

Mai întâi de toate, aș recomanda clonarea unor depozite de puncte dotfiles existente. Acest lucru vă va permite să începeți să înțelegeți structura fișierelor și să obțineți o prezentare generală a codului. Următoarele sunt replici GitHub de la unii dezvoltatori de top care au împărtășit dotfilele:

  • http://sow.so/dotfiles
  • http://mths.be/dotfiles
  • https://github.com/paulirish/dotfiles
  • http://dotfiles.github.io/

Ar putea părea descurajant la prima vedere, dar nu vă faceți griji, voi trece peste fiecare dotfile pe care o folosesc atunci când instalez o mașină nouă. După ce ați citit această postare, când ați avut o înțelegere mai bună a fiecărui fișier și ce pot face, aș recomanda să creați un depozit propriu și să profitați de dotfile existente pentru ao construi. Apoi puteți adăuga fișierele și codul în cele mai bune care se vor potrivi cerințelor dumneavoastră.

Pe măsură ce oamenii își numesc, în general, repo-urile dotfile dotfiles Am setat structura de directoare ca:

 └── dotfiles ├── mathias │ └── dotfiles │ ├── licență MIT.txt │ ├── README.md │ ├── bin │ │ ├── bash -> / usr / local / Beci / bash /4.2.45/bin/bash │ │ ├── httpcompression │ │ └── subl -> / Aplicații / Sublim \ Text \ 3.app/Contents/SharedSupport/bin/subl │ ├── bootstrap.sh │ └─ ─ init │ └── Mathias.terminal ├── paulirish │ └── dotfiles │ ├── README.md │ ├── bin │ │ ├── github-mail │ │ └── loc │ ├── încorporarea deps.sh │ └── sync.sh └── simonowendesign └── dotfiles ├── bootstrap.sh ├── init │ ├── Mathias.terminal │ └── SolarizedDark.terminal ├── install-deps.sh └────── Readme.md

Aici, configurez un director principal numit dotfiles, apoi un dosar cu numele de utilizator și apoi repo. Motivul pentru care recomand să îl configurați este să evitați confuzia. Unele coduri sunt destul de asemănătoare, așa că mi se pare util să văd cu ușurință codul la care mă uit. De exemplu, dacă aveam patru sau mai multe repo-uri numite "dotfiles" acest proces ar fi mult mai dificil.

Vrei să știi cum am ieșirea structurii de foldere așa? Am folosit acest lucru grozav numit copac, instalat în .pune la cale fişier.

Să rupem fiecare dosar în jos și să vedem ce se întâmplă.


Dotfilele Superhero și puterile lor superioare

Dotfilele sunt împărțite în două tipuri principale. Cei care conțin un set de comenzi și rulează doar o singură dată, .OSX de exemplu rulează o listă de comenzi și oferă super-puteri OS X. Alte fișiere, cum ar fi .bash_profile și .bashrc executați de fiecare dată când deschideți o nouă sesiune Terminal și vă oferă super-puteri Terminalului.

Iată o scurgere a dotfilelor din repo și o descriere a ceea ce pot face.

.pune la cale

Cel mai bine este să rulați mai întâi acest lucru. Odată ce verifică asta homebrew este actualizată, va fi utilizată pentru a instala instrumente utile, cum ar fi copac.

 instalați arborele de instalare

În loc să trebuiască să accesați un site și să descărcați o aplicație, este posibilă și automatizarea instalării unor aplicații utilizând BREW-butoiaș, precum:

 vărsare buton instalare dropbox brew cask instala google-crom

bootstrap.sh

Acest fișier este ca și cum ați întoarce cheia într-o mașină pentru a porni motorul.

Când a fugit, se va sincroniza repo-ul local și cel de pe GitHub, apoi copiați aceste fișiere în dosarul dvs. de domiciliu, suprascriind orice fișiere existente dacă există.

Prin urmare, înainte de a alerga bootstrap.sh este o idee bună să copiați fișierele existente și să le salvați în altă parte. O scurtătură la îndemână pentru a ajunge la dotfiles în Finder este:

Finder> Cmd + Shift + g> ~

Eu folosesc o aplicație numită TotalFinder, aceasta adaugă câteva caracteristici frumoase la Finder. Ferestrele cu ferestre și o comandă rapidă pentru a arăta și a ascunde fișiere ascunse, de exemplu, mi se pare foarte util.

În bootstrap.sh veți observa sursă ~ / .bash_profile. Asta înseamnă că dacă alergi bootstrap.sh și dacă aveți ferestrele terminalelor deschise, noile setări vor fi aplicate fără a fi nevoie de o repornire.

.bash_profile / .bashrc

Când deschideți o nouă sesiune Terminal, acest fișier este încărcat de Bash. Se încarcă în celelalte fișiere dot cale, bash_prompt, exporturile, aliasuri, funcții, extra și configurează câteva setări utile, cum ar fi corectarea automată a tastaturii atunci când se utilizează CD completare.

În anumite împrejurări .bashrc pot fi încărcate, astfel că acest fișier vă asigură acest lucru .bash_profile se numește.

Îmi place Terminalul meu curat și dezordine liber, așa că am opta să nu afișeze numele de utilizator / numele computerului de la început în mod implicit cu acest fișier.

.cale

Acest fișier accelerează procesul de executare a fișierelor executabile. Mai degrabă decât să trebuiască CD înapoi și înapoi pe diferite căi spre fișiere executabile, puteți seta căile de fișiere în fișierul dvs. .cale dotilfe și executați direct fișiere executabile.

În general, acest fișier nu este ținut în repo publice, deoarece poate conține informații sensibile.

Iată un exemplu de fișier ~ / .path care adaugă ~ / utils la $ PATH:
export PATH = "$ HOME / utils: $ PATH"

.bash_prompt

Folosind acest fișier puteți personaliza și seta diferitele culori ale promptului dvs. Bash.

.exporturi

Setează variabile de mediu, cum ar fi setarea Vim ca editor implicit folosind export EDITOR = "vim". De asemenea, crește cantitatea de istoric salvată, utilă pentru retragerea înapoi a comenzilor anterioare pe care le-ați utilizat.

.pseudonime

Acest fișier conține aliasuri utile pentru a vă ajuta să scrieți mai puțin. De exemplu, în loc să tastați "CD… "puteți să-l setați aici pentru a fi"... “. Începi să le placă încă aceste fișiere? :)

.funcții

Similar cu aliasuri, cu excepția funcțiilor pot lua argumente.

Înainte când am menționat că mă uitam la diferite repos dotfile, am făcut-o mkdir pentru a crea un director. După asta, atunci aș fi nevoie CD în acel director.

Un exemplu de funcție pe care o consider util este:

 # Creați un director nou și introduceți-l în funcția mkd () mkdir -p "$ @" && cd "$ @"

Acum puteți face pur și simplu MKD. Acum, nu numai că ați făcut directorul, ci și în director.

.suplimentar

Acest fișier este utilizat pentru adăugarea informațiilor dvs. personale și nu este adăugat la depozitul dvs. pentru a vă asigura că cineva nu vă deranjează accidental proiectul și apoi începe să se angajeze folosind detaliile dvs. Ceva frumos de adăugat aici ar fi acreditările tale Git.

.gitconfig

Acest fișier este utilizat numai de Git, de exemplu, atunci când a git comanda este invocată. Deci, deși există un .pseudonime dosar, acele aliasuri sunt difuzate direct.

În .pseudonime eu am g setat la git si in .gitconfig, s setat la status-uri.

Acum, în loc de a rula:

 starea git-urilor

Pot rula pur și simplu:

 g s

.gitignore

Setați fișierele pe care doriți să le ignorați pe întregul sistem. Da, nu mai mult .DS_Store fiind comise accidental!

.gvimrc

Un fișier mic care îmbunătățește lizibilitatea pentru gvim.

.hgignore

Simliar să .gitignore pentru Mercurial.

.hushlogin

În unele cazuri, de exemplu, când vă aflați ssh într-o mașină, vi se poate oferi un mesaj. Poate arata cam asa:

 _ | | _ __ ___ _ _ ___ ___ ___ | | ___ ___ _ ____ _____ _ __ | '_' _ \ | | | | / __ / _ \ / _ \ | | / __ | / _ \ '__ \ \ / _ _ \' __ | | | | | | | | _ | | | (_ | (_) | (_) | | \ __ \ __ / | \ V / __ / | | _ | | _ | | _ | \ __, | \ ___ \ ___ / \ ___ / | _ | | ___ / \ ___ | _ | \ _ / \ ___ | _ | __ / | |.. ___ / Bine ati venit la serverul meu rece Orice activitate rău intenționate și / sau neautorizate este strict interzisă Orice activitate poate fi autentificat.

Acest fișier împiedică afișarea acestuia.

.INPUTRC

Configurează mediul "Readline". Aceasta controlează modul în care funcționează tastele atunci când introduceți o comandă în coajă.

Un exemplu despre modul în care consider că este util este să faceți fila autocomplete indiferent de cazul fișierului:

 set complet-ignore-case pe

.OSX

Acesta este preferatul meu din toate dosfilele. Se execută o dată, manual, pentru ca comenzile să ruleze și să aibă efect. În funcție de ce ați adăugat la acest fișier, este posibil să fie necesar să reporniți aparatul.

Unele dintre lucrurile minunate pe care le iubesc sunt:

  • Dezactivați caseta de dialog "Sigur doriți să deschideți această aplicație?"
  • Verificați actualizările de software zilnic, nu doar o dată pe săptămână
  • Dezactivați Centrul de notificări și eliminați pictograma barei de meniu
  • Activați accesul pentru dispozitivele de asistență
  • Setați o rată repetată rapidă a tastaturii
  • Finder: permiteți renunțarea prin ⌘ + Q; acest lucru va ascunde, de asemenea, icoane desktop
  • Când efectuați o căutare, căutați în folderul curent în mod implicit
  • Accelerați animațiile de control al misiunii

.screenrc

Dacă utilizați ecran, acest lucru elimină mesajul de pornire.

.vimrc

Nu sunt familiarizat cu asta sevă. Cu toate acestea, unele dintre lucrurile pe care le puteți face cu acest fișier includ numerele de linie de activare și adăugarea evidențierii sintaxei.

Sună ca o idee bună pentru mine :)

.wgetrc

Dacă utilizați wget, aceasta adaugă setări suplimentare, cum ar fi schimbarea timpului de expirare la 60 de secunde, în loc de 15 minute implicite. De asemenea, stabilește reîncercarea la trei, mai degrabă decât implicit 20!


Dotfiles Go!

În acest moment, am trecut peste toate fișierele și sunt într-o etapă în care sunt mulțumit de tot ce se petrece în repo mea. Orice nu eram sigur că a fost comentat.

Acum partea interesantă! În prezent, avem dotfilele într-un repo, dar trebuie să le punem în locul corect, astfel încât să poată fi găsite și utilizate.

Gândește-te așa, avem Hammerul lui Thor, Cureaua de utilitate a lui Batman, Scutul căpitanului american și Suita lui Iron Man. Toți eroii noștri știu cum să le folosească, dar fără ei se pierd! Trebuie să oferim super-eroșilor armele pentru a le putea folosi.

Pentru a face acest lucru (cu dosfile mele existente înapoi și repo meu toate până la data), deschideți Terminalul, CD la repo și a alerga

 sursa bootstrap.sh

Următor →, CD la ~ și fugi:

 sursă .osx

Reporniți repede și ... Super, super puteri sunt acum disponibile!!!


Suplimente suplimentare superioare

Rupa Z

Petreci o mulțime de timp când faci lucruri de genul asta?

cd acest / este / calea / care / i / vrea / so / i / tip / it / tot / out / to / get / whereiwant

Dacă, în schimb, ați putea face acest lucru:

z undeiwant

Da, te rog. Vă mulțumim https://github.com/rupa/z.

Pentru a adăuga acest lucru, în .bash_profile Am făcut următoarea modificare:

 # init z https://github.com/rupa/z. ~ / Z / z.sh

Și, de asemenea, în install-deps.sh:

 cd clona git https://github.com/rupa/z.git chmod + x ~ / z / z.sh

Revenirea lucrurilor

Când rulați pentru prima dată dotfilele dvs., puteți constata că nu vă place o bucată de cod care a fugit. De exemplu, în .OSX fișier, nu am fost prea dornici cu ceea ce a făcut următorul cod:

 defaults scrie com.apple.dock showhidden -bool true

Acest cod a modificat opacitatea aplicațiilor ascunse din doc.

Pentru a readuce pur și simplu acest comportament la starea sa implicită, pur și simplu am pornit din nou comanda, schimbând această dată Adevărat la fals, ca atare:

 implicit scrie com.apple.dock showhidden -bool false

Acest lucru la readus la default.

Cu majoritatea comenzilor este destul de evident să reveniți la comanda schimbând pur și simplu Adevărat la fals sau vice versa. Cu alții, este posibil să-l readuceți la valorile implicite folosind implicit ștergeți, de exemplu, implicite șterge NSGlobalDomain AppleHighlightColor. În unele cazuri, este posibil să fie necesar să reporniți aparatul.

Comenzi personalizate .osx

Acum este vorba de master-ul dotfile mai avansat. Pe măsură ce câștigați mai multă cunoștințe și încredere folosind dotfile, vă recomandăm să includeți propriul cod.

Pe o mașină nouă, dacă descoperiți că modificați manual setările, acestea ar fi cel mai bine automatizate.

Adăugați-vă propriul .OSX comenzile pot deveni puțin complicate!

Dar, în general, acesta este un loc bun pentru a începe:

  • defaults read> a
  • Modificați setarea
  • implicite citiți> b
  • diff a b

Făcând acest lucru creează un fișier numit A și b apoi afișează diferența dintre ele, cu această cunoaștere puteți deschide apoi fișierul b în Sublime Text 2, căutați bitul care sa schimbat și încercați și elaborați comanda pentru ao schimba. Dacă încercați această metodă, noroc!


Concluzie

Deci, acolo aveți! Du-te, distrați-vă cu dotfile, așteptăm cu nerăbdare să oferim mașinilor super-puteri și data viitoare când trebuie să configurați o mașină de la zero, puteți să vă zâmbiți, întregul proces fiind automatizat.

Vă mulțumim foarte mult pentru oprirea, vă rugăm să comentați mai jos dacă aveți întrebări sau sugestii.

Sunt interesat în special să vă văd pe a ta .dotfiles repo și orice adăugări noi pe care le faceți, deci nu ezitați să adăugați un link la replica dvs. dotfiles în comentariile de mai jos.

Multumiri speciale

Această postare pe blog nu ar fi fost posibilă fără ajutorul minunat al comunității, datorită mulțumiri speciale lui @mathias, @paul_irish, @reybango și @AndrewPerkins.

Cod