Een Mac Dev Machine opzetten van nul tot held met Dotfiles

Het opzetten van een nieuwe machine kan vaak een opwindend vooruitzicht zijn. Als ontwikkelaars zijn er echter veel tools die niet standaard zijn.

In dit bericht wil ik enkele technieken gebruiken die ik gebruik om mijn machine snel, efficiënt en met extra superkrachten te helpen opzetten.


Invoering

Na het lezen van dit artikel zou je het volgende moeten kunnen doen:

  1. Stel snel een nieuwe machine in
  2. Verbeter SSH'ing in een Linux-box
  3. Pak eenvoudig slimme configs van andere ontwikkelaars op GitHub op
  4. Deel uw setup optioneel met andere ontwikkelaars en neem deel
  5. Op deze manier behouden alle professionele ontwikkelaars hun configuraties

Voordat we beginnen, heb je enige kennis van Git nodig en gebruik je de opdrachtregel. Als u niet zeker weet wat deze zijn, raad ik u aan de volgende eerst te bekijken:

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

Superhero Dotfiles

Stel dat je de Terminal zou kunnen stylen, de snelheid van Mission Control sneller zou maken, rennen g in plaats van git, hebben tab autocomplete, ongeacht het geval van de bestandsnaam, dagelijks op software-updates controleren, niet slechts één keer per week? Wat als u al deze functies zou kunnen automatiseren met een enkel script? Klinkt goed? Dan is deze post voor jou.

In veel opzichten is het installeren van een nieuwe machine grotendeels afhankelijk van persoonlijke voorkeur. Ik ben altijd bezig met refactoren en herevalueren en ik zou je aanraden hetzelfde te doen. Ontdek wat het beste voor u werkt en deel uw kennis.

TL; DR: Investeer tijd om uw machine te configureren en processen te automatiseren, u krijgt die tijd tien keer terug.

Dotbestanden, zo genoemd omdat de bestandsnaam begint met een . zijn te vinden in de basismap van de gebruiker. Deze bestanden worden gemaakt terwijl u uw machine installeert en configureert. Ik beschouw elk puntbestand als een superheld met elk zijn eigen superkrachten. Ik ga over elke superheld dotfile en de krachten die erin liggen. Maar eerst…

Er valt veel te zeggen voor de awesomeness van dotfiles, het automatisch instellen van configuraties en het versnellen van processen. Het kan verleidelijk zijn om een ​​repository te klonen en meteen dotfiles uit te voeren, maar ik zou dit afraden omdat het resultaat mogelijk ongewenste resultaten oplevert..

Baby stapjes

Allereerst raad ik aan een aantal bestaande dotfiles-repositories te klonen. Als u dit doet, kunt u beginnen met het begrijpen van de bestandsstructuur en een overzicht van de code krijgen. De volgende zijn GitHub-repo's van enkele topontwikkelaars die hun dotfiles hebben gedeeld:

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

Het lijkt misschien op het eerste gezicht angstaanjagend, maar raak niet in paniek, ik zal elk puntbestand dat ik gebruik gebruiken wanneer ik een nieuwe machine installeer. Na het lezen van dit bericht, als je een beter begrip hebt van elk bestand en wat ze kunnen doen, raad ik aan om je eigen repository te maken en gebruik te maken van bestaande dotfiles om het op te bouwen. U kunt dan de bestanden en code toevoegen die het beste past bij uw vereisten.

Zoals mensen hun dotfiles repo in het algemeen noemen dotfiles Ik heb de mappenstructuur zo ingesteld:

 └── dotfiles ├── mathias │ └── dotfiles │ ├── LICENSE-MIT.txt │ ├── README.md │ ├── bin │ │ ├── bash -> / usr / local / Cellar / bash /4.2.45/bin/bash │ │ ├── httpcompression │ │ └── subl -> / Applicaties / 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

Hier stel ik een hoofdmap in met de naam dotfiles en vervolgens een map met de gebruikersnaam en de repository. De reden dat ik aanraad om dit zo in te stellen is om verwarring te voorkomen. Een deel van de code is redelijk vergelijkbaar, dus ik vind het handig om gemakkelijk te zien naar wiens code ik kijk. Als ik bijvoorbeeld vier of meer repos had met alle genoemde 'dotfiles', zou dit proces veel moeilijker zijn.

Wil je weten hoe ik de mappenstructuur zo uitvoer? Ik gebruikte dit geweldige ding genaamd boom, geïnstalleerd in de .brouwen het dossier.

Laten we elk bestand splitsen en kijken wat er aan de hand is.


Superheld Dotfiles en hun Super Powers

Dotbestanden zijn verdeeld in twee hoofdtypen. Degenen die een reeks opdrachten bevatten en maar één keer worden uitgevoerd, .osx voert bijvoorbeeld een lijst met opdrachten uit en geeft OS X superkrachten. Andere bestanden zoals .bash_profile en .bashrc uitvoeren elke keer dat u een nieuwe Terminal-sessie opent en uw Terminal superkrachten geeft.

Hier is een run down van de dotfiles in mijn repo en een beschrijving van wat ze kunnen doen.

.brouwen

Het is het beste om dit als eerste uit te voeren. Zodra het dat controleert homebrew is up-to-date, zal het worden gebruikt om nuttige hulpmiddelen zoals te installeren boom.

 brouwboom installeren

In plaats van naar een site te gaan en een app te downloaden, is het ook mogelijk om de installatie van sommige apps te automatiseren met behulp van brew-vat, zoals:

 brouwen vat installeren dropbox brouwen vat installeren google-chrome

bootstrap.sh

Dit bestand is als het draaien van de sleutel in een auto om de motor te starten.

Wanneer het wordt uitgevoerd, zal het de lokale repository en die op GitHub synchroniseren, en die bestanden vervolgens naar je thuismap kopiëren, waarbij bestaande bestanden worden overschreven als ze bestaan.

Daarom, voordat u begint bootstrap.sh het is een goed idee om een ​​back-up te maken van uw bestaande dotfiles en deze ergens anders op te slaan. Een handige snelkoppeling om naar uw dotfiles in de Finder te gaan is:

Finder> Cmd + Shift + g> ~

Ik gebruik een app met de naam TotalFinder, dit voegt een aantal leuke functies toe aan de Finder. Vensters met tabbladen en een snelkoppeling om verborgen bestanden weer te geven en te verbergen vind ik bijvoorbeeld erg handig.

In bootstrap.sh je zult het merken source ~ / .bash_profile. Dit betekent dat als je rent bootstrap.sh en als er Terminal-vensters zijn geopend, worden uw nieuwe instellingen toegepast zonder dat u opnieuw hoeft te worden opgestart.

.bash_profile / .bashrc

Wanneer u een nieuwe Terminal-sessie opent, wordt dit bestand geladen door Bash. Het laadt in de andere dotfiles pad, bash_prompt, export, aliassen, functies, extra en configureert enkele nuttige instellingen, zoals autocorrectie van typefouten bij gebruik CD voltooiing.

In sommige gevallen .bashrc kan worden geladen, dus dit bestand zorgt ervoor dat .bash_profile wordt genoemd.

Ik vind mijn Terminal schoon en vrij van rommel, dus ik kies ervoor om standaard de gebruikersnaam / computernaam bovenaan dit bestand niet weer te geven.

.pad

Dit bestand versnelt het proces van het uitvoeren van uitvoerbare bestanden. In plaats van het te moeten doen CD heen en weer over verschillende paden naar uitvoerbare bestanden, kunt u de bestandspaden in uw .pad dotilfe en voer uitvoerbare bestanden direct uit.

Over het algemeen wordt dit bestand niet bewaard in de openbare repo omdat het gevoelige informatie kan bevatten.

Hier is een voorbeeld van een ~ / .path-bestand dat ~ / utils toevoegt aan de $ PATH:
PATH exporteren = "$ HOME / utils: $ PATH"

.bash_prompt

Met dit bestand kun je de verschillende kleuren van je Bash-prompt aanpassen en instellen.

.export

Hiermee stelt u omgevingsvariabelen in, zoals Vim instellen als de standaardeditor met export EDITOR = "vim". Het verhoogt ook de hoeveelheid opgeslagen geschiedenis, handig voor het terugzoeken van eerdere opdrachten die u hebt gebruikt.

.aliassen

Dit bestand bevat nuttige aliassen om u te helpen minder te schrijven. Bijvoorbeeld in plaats van typen 'CD… 'je kunt het hier instellen om te zijn'... '. Beginnen met al deze bestanden leuk? :)

.functies

Vergelijkbaar met aliassen, behalve functies die argumenten kunnen bevatten.

Voordat ik het zei, keek ik naar verschillende repen met dotfiles, dat deed ik mkdir om een ​​map te maken. Daarna zou ik het dan moeten doen CD in die map.

Een voorbeeld van een functie die ik nuttig vind, is:

 # Maak een nieuwe map aan en voer deze in mkd () mkdir -p "$ @" && cd "$ @"

Nu kun je gewoon doen MKD. Nu heb je niet alleen de map gemaakt, je bevindt je ook in de directory.

.extra

Dit bestand wordt gebruikt voor het toevoegen van uw persoonlijke gegevens en wordt niet toegevoegd aan uw repository om ervoor te zorgen dat iemand niet per ongeluk uw project vervroegt en vervolgens begint met het gebruik van uw gegevens. Iets leuks om hier aan toe te voegen, zijn je Git-inloggegevens.

.gitconfig

Dit bestand wordt alleen gebruikt door Git, bijvoorbeeld als een git commando wordt aangeroepen. Dus hoewel er een is .aliassen bestand, deze aliassen worden rechtstreeks uitgevoerd.

In .aliassen ik heb g ingesteld op git en in .gitconfig, s ingesteld op status -s.

Nu in plaats van draaien:

 git status -s

Ik kan gewoon rennen:

 g s

.gitignore

Stel bestanden in die Git moet negeren op het volledige systeem. Yay, niet meer .DS_Store per ongeluk worden gepleegd!

.gvimrc

Een klein bestand dat de leesbaarheid verbetert voor gvim.

.hgignore

Simliar aan .gitignore voor Mercurial.

.hushlogin

In sommige gevallen, bijvoorbeeld wanneer u ssh in een machine, kunt u een bericht krijgen. Het ziet er ongeveer zo uit:

 _ | | _ __ ___ _ _ ___ ___ ___ | | ___ ___ _ ____ _____ _ __ | '_' _ \ | | | | / __ / _ \ / _ \ | | / __ | / _ \ '__ \ \ / / _ \' __ | | | | | | | | _ | | | (_ | (_) | (_) | | \ __ \ __ / | \ V / __ / | | _ | | _ | | _ | \ __, | \ ___ \ ___ / \ ___ / | _ | | ___ / \ ___ | _ | \ _ / \ ___ | _ | __ / | | ___ / Welkom op mijn coole server. Alle kwaadwillende en / of ongeoorloofde activiteiten zijn ten strengste verboden. Alle activiteiten kunnen worden geregistreerd.

Dit bestand voorkomt dat dit wordt getoond.

.inputrc

Configureert de 'Readline-omgeving'. Dit bepaalt de manier waarop toetsen werken wanneer u een opdracht invoert in uw shell.

Een voorbeeld van hoe ik dit nuttig vind, is maken tab automatisch aanvullen, ongeacht de naam van de bestandsnaam:

 stel voltooiing-negeren-case in

.osx

Dit is mijn favoriet van alle dotfiles. Het wordt eenmalig, handmatig, uitgevoerd om de opdrachten uit te voeren en van kracht te worden. Afhankelijk van wat u aan dit bestand hebt toegevoegd, moet u uw machine mogelijk opnieuw opstarten.

Enkele van de geweldige dingen die ik leuk vind zijn:

  • Schakel het dialoogvenster 'Weet u zeker dat u dit programma wilt openen?' Uit
  • Controleer dagelijks op software-updates, niet slechts één keer per week
  • Schakel Meldingscentrum uit en verwijder het menubalkpictogram
  • Toegang voor hulpapparaten inschakelen
  • Stel een razendsnelle toetsenbordherhalingsfrequentie in
  • Finder: toestaan ​​te stoppen via ⌘ + Q; Als u dit doet, worden ook bureaubladpictogrammen verborgen
  • Zoek tijdens het zoeken standaard de huidige map
  • Versnel Mission Control-animaties

.screenrc

Als je gebruikt scherm, Hiermee wordt het opstartbericht verwijderd.

.vimrc

Ik ben niet zo bekend met vim. Sommige van de dingen die u met dit bestand kunt doen, zijn onder meer regelnummers inschakelen en syntaxmarkering toevoegen.

Klinkt als een goed idee voor mij :)

.wgetrc

Als je gebruikt wget, dit voegt extra instellingen toe, zoals het wijzigen van de time-out naar 60 seconden in plaats van de standaard 15 minuten. Het stelt ook de nieuwe poging in op drie, in plaats van de standaard 20!


Dotfiles Are Go!

Op dit punt heb ik alle bestanden bekeken en ben ik in een stadium waar ik blij ben met alles in mijn repo. Alles waar ik niet zeker van was, is becommentarieerd.

Nu het opwindende deel! In de huidige staat hebben we de puntbestanden in een repo maar we moeten ze op de juiste plaats plaatsen zodat ze kunnen worden gevonden en gebruikt.

Zie het zo, we hebben Thor's Hammer, Batman's Utility Belt, Captain America's Shield en Iron Man's Suit. Al onze helden weten hoe ze deze moeten gebruiken, maar zonder hen zijn ze verloren! We moeten onze superhelden hun wapens geven zodat ze ze kunnen gebruiken.

Om dit te doen (met mijn bestaande dotfiles een back-up gemaakt en mijn repo helemaal up-to-date), open je je terminal, CD naar de repo en rennen

 source bootstrap.sh

volgende, CD naar ~ en loop:

 bron .osx

Snelle herstart en ... Awesome superkrachten zijn nu beschikbaar!!!


Extra Super Powers

Rupa Z

Besteed je veel tijd aan dingen als deze?

cd this / is / the / path / that / i / want / so / i / type / it / all / out / to / get / whereiwant

Wat als je in plaats daarvan dit gewoon zou kunnen doen:

z waar

Ja graag. Bedankt https://github.com/rupa/z.

Om dit toe te voegen, in .bash_profile Ik heb de volgende wijziging aangebracht:

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

En ook in install-deps.sh:

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

Dingen terugdraaien

Wanneer u uw dotfiles voor de eerste keer uitvoert, merkt u mogelijk dat u niet van een stuk code houdt dat is uitgevoerd. Bijvoorbeeld in de .osx bestand, ik was niet erg enthousiast over wat de volgende code deed:

 standaardinstellingen schrijf com.apple.dock showhidden -ool waar

Deze code heeft de dekking van verborgen apps in het dock gewijzigd.

Om dit gedrag simpelweg terug te zetten naar de standaardstatus, heb ik het commando gewoon opnieuw uitgevoerd, deze keer veranderend waar naar vals, als zodanig:

 standaardinstellingen schrijf com.apple.dock showhidden -bool false

Dit zet het terug naar de standaard.

Bij de meeste opdrachten is het vrij duidelijk om het commando terug te draaien door simpelweg te veranderen waar naar vals of vice versa. Met anderen is het mogelijk om het terug in te stellen op standaard met standaardinstellingen verwijderen, bijvoorbeeld, standaardinstellingen verwijderen NSGlobalDomain AppleHighlightColor. In sommige gevallen moet u de machine mogelijk ook opnieuw opstarten.

Aangepaste .osx-opdrachten

Dit is nu voor de meer geavanceerde dotfile-master. Naarmate u meer kennis en vertrouwen opdoet met behulp van dotfiles, wilt u misschien uw eigen code opnemen.

Als u op een nieuwe machine merkt dat u de instellingen handmatig wijzigt, kunnen deze het beste worden geautomatiseerd.

Je eigen toevoegen .osx commando's kunnen een beetje lastig worden!

Maar over het algemeen is dit een goede plek om te beginnen:

  • standaard lees> a
  • Verander de instelling
  • standaard lees> b
  • diff a b

Als u dit doet, wordt een bestand gemaakt met de naam een en b dan toont het verschil tussen hen, met deze kennis kunt u vervolgens het bestand openen b in Sublime Text 2, zoek naar het bit dat is gewijzigd en probeer het commando uit te werken om het te veranderen. Als je deze methode uitprobeert, veel succes!


Conclusie

Dus daar heb je het! Ga erop uit, heb plezier met dotfiles, kijk uit naar het geven van superkrachten aan uw machine en de volgende keer dat u een machine helemaal opnieuw moet opzetten, kunt u naar uzelf glimlachen omdat het hele proces geautomatiseerd is.

Heel erg bedankt voor het langskomen, geef hieronder commentaar als u vragen of suggesties heeft.

Ik ben vooral geïnteresseerd om je eigen te zien .dotfiles repos en eventuele nieuwe toevoegingen die je maakt, dus voel je vrij om een ​​link toe te voegen aan je rept van dotfiles in de reacties hieronder.

Speciale dank

Deze blogpost zou niet mogelijk zijn geweest zonder de geweldige hulp van de community, met name dankzij @mathias, @paul_irish, @reybango en @AndrewPerkins.