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.
După ce ați citit acest articol, ar trebui să puteți efectua următoarele:
Î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:
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.
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:
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 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.
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
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.
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.
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"
Folosind acest fișier puteți personaliza și seta diferitele culori ale promptului dvs. Bash.
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.
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? :)
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.
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.
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
Setați fișierele pe care doriți să le ignorați pe întregul sistem. Da, nu mai mult .DS_Store
fiind comise accidental!
Un fișier mic care îmbunătățește lizibilitatea pentru gvim
.
Simliar să .gitignore
pentru Mercurial.
Î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.
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
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:
Dacă utilizați ecran
, acest lucru elimină mesajul de pornire.
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 :)
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!
Î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!!!
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
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.
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
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!
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.
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.