Att skapa en ny maskin kan ofta vara en spännande utsiktsplats. Men som utvecklare finns det många verktyg vi behöver som inte kommer som standard.
I det här inlägget vill jag gå igenom några av de tekniker jag använder för att hjälpa mig att installera min maskin snabbt, effektivt och med extra supermakter.
Efter att ha läst den här artikeln borde du kunna göra följande:
Innan vi börjar behöver du lite förståelse för Git och använder kommandoraden. Om du inte är säker på vad dessa är, rekommenderar jag att du tittar över följande först:
Vad händer om du kan utforma terminalen, gör hastigheten på Mission Control snabbare, springa g
istället för git
, ha flik
autofullständig oavsett filnamnssak, kontrollera efter uppdateringar dagligen, inte bara en gång per vecka? Vad händer om du kan automatisera att konfigurera alla dessa funktioner med ett enda skript? Låter bra? Då är det här inlägget för dig.
I många avseenden är det väldigt mycket att skapa en ny maskin till personlig preferens. Jag är alltid refactoring och reevaluating och jag rekommenderar dig att göra detsamma. Ta reda på vad som är bäst för dig och dela med dig av dina kunskaper.
TL; DR: Investera tid att lära sig att konfigurera din maskin och automatisera processer, du får den tiden tillbaka tio gånger.
Dotfiles, så kallad eftersom filnamnet börjar med a .
finns i användarens hemkatalog. Dessa filer skapas när du installerar och konfigurerar din maskin. Jag tänker på varje dotfile som en superhjälte som innehåller sina egna supermakter. Jag ska gå över varje superhjälte dotfile och de befogenheter som ligger inom. Men först…
Det finns mycket att säga om dotfiles awesomeness, konfigurera konfigurationer automatiskt och påskynda processer. Det kan vara frestande att klona ett förråd och köra dotfiles direkt, men jag skulle råda emot detta eftersom resultatet kan ha oönskade resultat.
Först och främst skulle jag rekommendera att klona vissa befintliga dotfilesförråd. Om du gör det kan du börja förstå filstrukturen och få en överblick över koden. Följande är GitHub repos från några topputvecklare som har delat sina dotfiles:
Det kan tyckas skrämmande vid första anblicken, men gör inte panik, jag går över varje dotfile som jag använder när jag installerar en ny maskin. När du har läst det här inlägget, när du har en bättre förståelse för varje fil och vad de kan göra, rekommenderar jag att du skapar ditt eget förråd och utnyttjar befintliga dotfiles för att bygga upp det. Du kan sedan lägga till filer och kod i det som bäst passar dina behov.
Som folk brukar namnge deras dotfiles repo punktfiler
Jag ställer in mappstrukturen så här:
└── dotfiles ├── mathias │ └── dotfiles │ ├── LICENSE-MIT.txt │ ├── README.md │ ├── bin │ │ ├── bash -> / usr / local / Cellar / bash /4.2.45/bin/bash │ │ ├── httpcompression │ │ └── subl -> / Program / Sublime \ Text \ 3.app/Contents/SharedSupport/bin/subl │ ├── bootstrap.sh │ └─ ─ init │ └── Mathias.terminal ├── paulirish │ └── dotfiles │ ├── README.md │ ├── bin │ │ ├── github-email │ │ └─ - spot │ ├── install- dps └── readme.md
Här ställer jag upp en huvudmapp som heter dotfiles, sedan en mapp med användarnamnet och sedan repo. Anledningen till att jag rekommenderar att du ställer upp det här är att undvika förvirring. Några av koden är ganska lika, så jag tycker att det är användbart att enkelt se vilken kod jag tittar på. Om jag till exempel hade fyra eller flera repos alla namngivna "dotfiles" skulle denna process vara mycket svårare.
Vill du veta hur jag skriver ut mappstrukturen så? Jag använde denna fantastiska sak som heter träd
, installerad i .brygga
fil.
Låt oss bryta ned varje fil och titta på vad som händer.
Dotfiles är uppdelade i två huvudtyper. De som innehåller en uppsättning kommandon och kör endast en gång, .osx
kör exempelvis en lista med kommandon och ger OS X supermakter. Andra filer som .bash_profile
och .bashrc
springa varje gång du öppnar en ny Terminal-session och ger dina supermakter i Terminal.
Här är en nedgång av dotfilesna i min repo och en beskrivning av vad de kan göra.
Det är bäst att köra detta först. När det kontrolleras att homebrew
är uppdaterad, kommer den att användas för att installera användbara verktyg som träd
.
brygga installera träd
I stället för att behöva gå till en webbplats och ladda ner en app är det också möjligt att automatisera installationen av vissa appar med brew-fat
, som:
Brew Cask Installera Dropbox Brew Cask Installera Google Chrome
Den här filen är som att vrida nyckeln i en bil för att starta motorn.
När det körs kommer det att synkronisera den lokala repoen och den på GitHub och sedan kopiera de här filerna till din hemmapp och överväga eventuella befintliga filer om de finns.
Därför, innan du kör bootstrap.sh
Det är en bra idé att säkerhetskopiera dina befintliga dotfiles och spara dem någon annanstans. En praktisk genväg för att komma till dina dotfiler i Finder är:
Finder> Cmd + Skift + g> ~
Jag använder en app som heter TotalFinder, det här lägger till några fina funktioner till Finder. Tabbed windows och en genväg för att visa och gömma dolda filer till exempel tycker jag att det är mycket användbart.
I bootstrap.sh
du kommer att märka källa ~ / .bash_profile
. Detta innebär att om du kör bootstrap.sh
och har några Terminal fönster öppna, kommer dina nya inställningar att appliceras utan att behöva starta om.
När du öppnar en ny Terminal-session laddas den här filen av Bash. Den laddas i de andra dotfilerna bana, bash_prompt, export, alias, funktioner, extra
och konfigurerar några användbara inställningar, t.ex. autokorrigeringstyper när du använder CD
komplettering.
I vissa fall .bashrc
kan laddas, så den här filen ser till att .bash_profile
kallas.
Jag gillar min Terminal ren och rörig fri, så jag väljer att inte visa användarnamnet / datornamn överst som standard med den här filen.
Den här filen påskyndar processen med att köra körbara filer. Snarare än att behöva CD
fram och tillbaka över olika vägar till körbara filer, kan du ställa in filvägarna i din .väg
dotilfe och kör sedan körbara filer direkt.
I allmänhet hålls den här filen inte i den offentliga repo, eftersom den kan innehålla känslig information.
Här är ett exempel ~ / .path-fil som lägger till ~ / utils till $ PATH:
export PATH = "$ HOME / utils: $ PATH"
Med den här filen kan du anpassa och ställa in de olika färgerna i din Bash-prompten.
Ställer in miljövariabler, t.ex. inställning av Vim som standardredigerare med export EDITOR = "vim"
. Det ökar också mängden sparad historia, användbar för backtracking över tidigare kommandon som du har använt.
Den här filen innehåller användbara alias som hjälper dig att skriva mindre. Till exempel istället för att skriva "CD…
"du kan ställa in det här för att vara"...
'. Börjar du att gilla dessa filer än? :)
Liknande aliaser, förutom att funktioner kan ta argument.
Innan när jag nämnde jag tittade över olika dotfile repos, gjorde jag det mkdir
att skapa en katalog. Efter det skulle jag då behöva CD
in i den katalogen.
Ett exempel på en funktion som jag tycker är användbar är:
# Skapa en ny katalog och skriv in funktionen mkd () mkdir -p "$ @" && cd "$ @"
Nu kan du helt enkelt göra det MKD
. Nu har du inte bara gjort katalogen, du är också i katalogen.
Den här filen används för att lägga till din personliga information och läggs inte till i ditt förråd för att se till att någon inte av misstag förföljer ditt projekt och sedan börja begå med dina uppgifter. Något trevligt att lägga till här skulle vara dina Git-uppgifter.
Den här filen används endast av Git, till exempel när a git
kommando åberopas. Så även om det finns en .alias
fil, de aliaserna körs direkt.
I .alias
jag har g
satt till git
och i .gitconfig
, s
satt till status-s
.
Nu istället för att springa:
git-status-s
Jag kan helt enkelt springa:
g s
Ange filer som du vill att Git ska ignorera på hela systemet. Yay, inte mer .DS_Store
oavsiktligt begås!
En liten fil som förbättrar läsbarheten för gvim
.
Simliar till .gitignore
för Mercurial.
I vissa fall, till exempel när du ssh
in i en maskin, kan du bli presenterad med ett meddelande. Det kan se ut så här:
_ | | _ __ ___ _ _ ___ ___ ___ | | ___ ___ _ ____ _____ _ __ | '_' _ \ | | | | / __ / _ \ / _ \ | | / __ | / _ \ '__ \ \ / / _ \' __ | | | | | | | | _ | | | (_ | (_) | (_) | | \ __ \ __ / | \ V / __ / | | _ | | _ | | _ | \ __, | \ ___ \ ___ / \ ___ / | _ | | ___ / \ ___ | _ | \ _ / \ ___ | _ | __ / | | ___ / Välkommen till min coola server. Varje skadlig och / eller obehörig aktivitet är strängt förbjuden. All aktivitet kan vara inloggad.
Den här filen förhindrar att detta visas.
Konfigurerar läslinjemiljön. Här kontrolleras hur tangenterna fungerar när du skriver in ett kommando i ditt skal.
Ett exempel på hur jag tycker det är användbart är att göra flik
autofullständig oavsett filnamn fall:
sätt på avslutnings-ignorera-fallet på
Detta är min favorit av alla dotfiles. Den körs en gång manuellt för att kommandona ska köra och träda i kraft. Beroende på vad du har lagt till i den här filen kan du behöva starta om datorn.
Några av de fantastiska sakerna jag älskar är:
Om du använder skärm
, Detta tar bort startmeddelandet.
Jag är inte så bekant med vim
. Men några av de saker du kan göra med den här filen är att aktivera radnummer och lägga till syntaxmarkering.
Låter som en bra idé för mig :)
Om du använder wget
, Detta lägger till ytterligare inställningar som att ändra timeout till 60 sekunder istället för standard 15 minuter. Det ställer också in försöket till tre, snarare än standard 20!
Vid denna tidpunkt har jag gått över alla filer och jag är på ett stadium där jag är nöjd med allt i min repo. Något som jag inte var säker på har kommenterats.
Nu den spännande delen! Som det står har vi dotfiles i en repo men vi måste sätta dem på rätt plats så att de kan hittas och användas.
Tänk på det här, vi har Thor's Hammer, Batman's Utility Belt, Captain America's Shield, och Iron Man's Suit. Alla våra hjältar vet hur man använder dessa, men utan dem är de förlorade! Vi måste ge våra superhjältar sina vapen så att de kan använda dem.
För att göra detta (med mina befintliga dotfiles säkerhetskopierade och mina repor alla uppdaterade), öppna din terminal, CD
till repo och springa
källa bootstrap.sh
Nästa, CD
till ~
och springa:
källa .osx
Snabb omstart och ... Fantastiska supermakter är nu tillgängliga!!!
Spenderar du mycket tid på att göra saker som detta?
cd detta / är / det / sökvägen / det / jag / vill / så / jag / typ / det / allt / ut / till / få / whereiwant
Vad händer i stället kan du bara göra det här:
z whereiwant
Ja tack. Tack https://github.com/rupa/z.
För att lägga till detta, i .bash_profile
Jag gjorde följande förändring:
# init z https://github.com/rupa/z. ~ / Z / z.sh
Och även i install-deps.sh
:
cd git klon https://github.com/rupa/z.git chmod + x ~ / z / z.sh
När du kör din dotfiles för första gången kan det hända att du inte tycker om en kod som har sprang. Till exempel i .osx
fil, jag var inte så angelägen om vad följande kod gjorde:
standardvärden skriv com.apple.dock showhidden -bool true
Den här koden ändrade opaciteten på dolda appar i dockan.
För att helt enkelt återgå detta beteende till standardläget, körde jag helt enkelt kommandot igen, den här tiden ändras Sann
till falsk
, som så:
standardvärden skriv com.apple.dock showhidden -boll false
Detta ställde det tillbaka till standard.
Med de flesta kommandon är det ganska uppenbart att återgå till kommandot genom att helt enkelt ändra Sann
till falsk
eller tvärtom. Med andra är det möjligt att ställa in det som standard med standardinställningarna raderas
, till exempel, standardinställningar ta bort NSGlobalDomain AppleHighlightColor
. I vissa fall kan du också behöva starta om maskinen.
Nu är det här för den mer avancerade dotfile-mästaren. När du får mer kunskap och självförtroende med dotfiles kanske du vill inkludera din egen kod.
På en ny maskin om du finner att du manuellt byter inställningar, skulle dessa vara bäst automatiserade.
Lägger till din egen .osx
Kommandon kan bli lite knepiga!
Men i allmänhet är det här ett bra ställe att börja:
standardinställningar läs> a
standardvärden läs> b
diff a b
Genom att göra detta skapas en fil som heter en
och b
Då visas skillnaden mellan dem, med den här kunskapen kan du sedan öppna filen b
i Sublime Text 2, leta efter den bit som har ändrats och försök att träna kommandot för att ändra det. Om du provar den här metoden lyckas du med!
Så där har du det! Gå ut, ha kul med dotfiles, se fram emot att ge din maskin superkraft och nästa gång du behöver ställa in en maskin från början, kan du le dig själv eftersom hela processen är automatiserad.
Tack så mycket för att sluta, vänligen kommentera nedan om du har några frågor eller förslag.
Jag är särskilt intresserad av att se din egen .punktfiler
repos och eventuella nya tillägg du gör, så gärna lägga till en länk till din dotfiles repo i kommentarerna nedan.
Det här blogginlägget skulle inte ha varit möjligt utan den underbara hjälp från samhället, särskilt tack till @mathias, @paul_irish, @reybango och @AndrewPerkins.