Uvod u Dotfiles: kako preuzeti kontrolu nad svojim razvojnim okruženjem

Napomena: Ovo je vrlo osnovni, uvodni članak. Ako već znate osnove upravljanja dotfileom, preporučio bih vam da pročitate moj drugi članak.

Kao programeri, nastojimo smanjiti vrijeme koje trošimo na suvišne stvari, poput postavljanja našeg okruženja, pisanja uzorka koda i u osnovi ne poduzimanja ničega što se ne tiče zabavnog dijela kodiranja - stvaranja novih stvari.

U tom kontekstu, zamislite savršeni svijet u kojem malene naredbe izvršavaju nevjerojatno složene zadatke prilagođene vašim potrebama, gdje biste danas mogli kupiti novo prijenosno računalo i instalirati sve alate i pakete koji su vam potrebni te postaviti svoje razvojno okruženje s samo nekoliko terminala naredbe, i gdje je sve čarolija.

Ova digitalna bajkovita zemlja može se napraviti i s lakoćom. I postoji naziv za ovu čaroliju: dotfiles.

Bez daljnjeg razotkrivanja, razotkrijmo tajne točkica!

Uvod

Napomena: Ovaj članak pretpostavlja da radite s operativnim sustavom sličnim Unixu i da se u velikoj mjeri oslanja na Unixove naredbe terminala i skriptiranje ljuske. Ako niste upoznati s njima, preporučujem učenje osnova i povratak ovdje. Evo priručnika za skriptiranje ljuske.

U sustavima sličnim UNIX-u, mnogim konfiguracijskim datotekama i slično stoji točka (.). Te datoteke OS prema zadanim postavkama skriva, a čak i lsnaredba ne otkriva njihovu prisutnost (malo ćemo doći do načina pronalaska tih datoteka). Budući da tim datotekama prethodi točka, nazivaju se točkicama. Duh.

Pa kako pronaći ove legendarne datoteke ako su prema zadanim postavkama skrivene? Otvorite terminal i učinite sljedeće:

Napomena: Znak "$" nije namijenjen upisivanju u terminal. Predstavlja činjenicu da bi se tekst nakon njega trebao otkucati u terminalskom odzivu.
$ cd ~$ ls -a

Pa što ovo radi?

Prva naredba ( cd ~) premješta se u kućni direktorij (simbol ~ predstavlja kućni direktorij). U početnom direktoriju nalazi se većina vaših konfiguracijskih datoteka. Pa se prvo tamo preselimo.

Druga naredba navodi datoteke i mape u trenutnom direktoriju. Ali ovdje ima neke čarolije. Oznaka -aupućuje naredbu da uključi skrivene datoteke na popis.

Bingo! Sada možemo vidjeti točkaste datoteke!

Izmjena .bash_profile

Obično je prva datoteka koju većina ljudi izmijeni kada uđu u svijet točkica datoteka .bash_profileili .bashrc. I to s dobrim razlogom. Ova se datoteka učitava kad pokrenete terminal, a njegove se naredbe izvršavaju pri pokretanju terminala.

Jedan od razloga zašto biste možda htjeli izmijeniti svoj .bash_profileje prilagodba izgleda terminala (točnije, upita terminala). Ovo je umjetnost i znanost za sebe i vjerojatno bi joj trebala biti posvećena cijela knjiga, pa u ovom članku neću puno obrađivati ​​ovu temu. Ovim člankom možete započeti s prilagođavanjem upita.

Umjesto toga, pogledajmo dvije uobičajene konstrukcije ljuske koje su možda među najvažnijim i najkorisnijim dijelovima točkica: aliasi i funkcije.

Aliasi

Pseudonimi su jednostavno kratka imena / kratice koje možete dodijeliti duljem nizu naredbi kako biste smanjili koliko vam vremena treba da ga upišete i tako povećali brzinu. Na primjer, gotovo svaki programer koristi git. Svatko tko koristi git CLI (i priznajmo - trebali biste koristiti git CLI), vjerojatno je koristio duge naredbe poput ove:

// commit changes$ git commit -m "some changes"
// push changes to the master branch of origin$ git push origin master

Ove naredbe je prilično malo za tipkati. Ako mislite da nisu, promijenit ćete mišljenje nakon što počnete koristiti pseudonime.

Upišite sljedeće u svoj shell shell:

$ alias gpom="git push origin master"

Sada kad upišete gpom, git push origin masterizvršava se! Prešli ste s 4 riječi na 4 slova ! ?

Ali postoji problem. Zatvorite terminal, ponovo ga pokrenite i pokušajte gpomponovo. Nestao je vaš alias! To je zato što je alias definiran za trenutnu sesiju terminala.

Pa kako to zaobići i učiniti da se naši aliasi lijepe?

Sjećate se da smo razgovarali o datoteci čije se naredbe izvršavaju kad se terminal pokrene? Bingo!

Dodajte sljedeći redak u svoj .bash_profileili .bashrci spremite ga:

alias gpom="git push origin master"

Sad, kad god pokrenete bash terminal, gornji pseudonim je stvoren. Život već počinje postajati strašan!

Napomena:nano Uređivač teksta možete koristiti za uređivanje tekstualnih datoteka. Kada ste u matičnom direktoriju, upišite nano .bash_profileda biste datoteku otvorili pomoću nano-a, unesite promjene i spremite datoteku pritiskom Ctrl+Xi zatim ykada se to zatraži. Vimje još jedan uređivač teksta koji možete koristiti.

Budući da aliasi u osnovi zamjenjuju punu naredbu, pseudonime možete dodati kao dio zajedničkog CLI alata s više naredbi, poput gita, kako biste olakšali sve njegove naredbe. Samo dodajte ovo u svoj .bash_profile:

alias g="git"

A možete upisati "g" umjesto "git" gdje god želite koristiti "git". Slatko!

Evo nekoliko uobičajenih pseudonima koje biste mogli koristiti:

alias home="cd ~"alias ..='cd ..'alias '?=man'# Git CLI aliasesalias g="git"alias gi="git init"alias gra="git remote add"alias gs="git status"...# Aliases for NPMalias nr="npm run"alias ni="npm install"alias nid="npm install -D"...

Funkcije

Pseudonimi mogu uvelike poboljšati naš tijek rada, ali jedna stvar koju oni ne mogu učiniti: raditi s argumentima.

Recimo da ste se umorili od izvršavanja dviju naredbi za stvaranje novog direktorija i cdulazak u njega:

$ mkdir new_folder$ cd new_folder

A vi ste htjeli napraviti pseudonim za ovo. Ali ne možete, budući da i jedno mkdiri cddrugo uzimate argumente, a argumente ne možete prosljeđivati ​​nadimcima.

Pa što sada? Zapamtite, postoji super uobičajena programska konstrukcija koja uzima argumente? Da, funkcije! Skripte ljuske mogu imati funkcije koje mogu uzimati argumente. Super! Ako ste pomalo zahrđali s funkcijama u skriptama ljuske, evo malo podsjetnika.

Gornju sekvencu možete pretvoriti u funkciju ljuske poput ove (ovaj je primjer preuzet iz dotfila mathiasbynensa, koji ima neke od najpopularnijih dotfilea. Drugi ljudi s izvrsnim dotfilovima na koje se pozivaju navedeni su i povezani s njima na kraju članak):

# Create a new directory and enter itfunction mkd() { mkdir -p "[email protected]" && cd "$_";}

Opet, možete to staviti u svoj .bash_profilei funkcija će biti dostupna tijekom bilo koje terminale sesije.

Napomena: Morat ćete ponovo pokrenuti terminal kako bi promjene na vašem računu .bash_profilestupile na snagu. Ako je ovo dosadan posao, pokrenite source .bash_profilekako biste dodali promjene trenutnoj sesiji terminala. Još bolje, u duhu točkica, napravite alias alias reload="source .bash_profile"!

Datoteke i dijeljenje

Zašto ljudi predaju svoja razvojna okruženja - svoje dotfilove - kontroli verzija? Zašto ga postavljaju na GitHub da ga svi vide? Isti razlog kao i uvijek: pratiti kako se vaše točkice razvijaju s vremenom i, što je najvažnije, dijeliti svoje točkice i nadahnjivati ​​druge ljude .

Ako pogledate bilo koji repo zrelih datoteka s datotekama, shvatit ćete da uvijek postoje isječci preuzeti iz drugih repo mjesta s datotekama i slično. Oni čak mogu imati više suradnika i održavatelja. Dijelimo točke kako bismo zajednički pomagali jedni drugima u izgradnji boljih okruženja i tijekova rada.

To također omogućuje ljudima da koriste značajke kontrole verzija kako bi međusobne točkice poboljšali. Jedan primjer za to je korištenje GitHub Issue Trackera za raspravu o problemima i poboljšanjima.

Inspiriran sam za rad na svojim točkicama iz točkica pradyunsga, koji ima svoj impresivni repo snimak točkica.

Moje vlastite točke trenutno su prilično osnovne i vrlo nezrele, a s vremenom će postajati sve bolje. Ali to također znači da će početnici u svijetu dotfilesa biti manje zastrašeni kad provjere repo.

Kao i mnogi drugi ljudi, dodao sam i određenu podršku za prilagodbu mojih datoteka s točkama, pa bi možda bilo dobro da ljudi koji su novi u ideji s točkama razlože repo i pokušaju ga napraviti vlastitim. Više detalja u spremištu. Provjerite ih i pošaljite mi povratne informacije!

Evo popisa ljudi čije su datoteke s točkama puno šire i mogu vas nadahnuti:

  • pradyunsg
  • mathiasbynens
  • paulmillr
  • holman

Zaključak

To su vrlo osnova stvaranja vašeg razvojnog okruženja pomoću dotfilova. Međutim, postoji još mnogo toga, što ćemo nastaviti razmatrati u sljedećem članku ove serije.

Neke od tema koje ćemo pogledati u sljedećem članku u seriji su:

  • Stvaranje okruženja za organiziranje, praćenje i bezbolan rad s točkicama
  • Splitting our dotfiles to make managing them easier and more scalable (notice it is dotfiles, not dotfile)
  • Writing scripts to setup (bootstrap) a new system with our dotfiles
  • Making our dotfiles easy to share by adding support for customization

That concludes the first part of the series on dotfiles! Here’s a link to the next one.

I loved the idea of dotfiles so much that it inspired me to create a basic dotfile management framework - autodot. The framework is in its infancy, so I’m looking for enthusiastic people who can give me feedback for the framework, contribute to it by telling me about bugs and making feature requests, and contribute to the code and documentation. Do take some time out for this! :)

ajmalsiddiqui/autodot

autodot - A dotfile management system that makes sharing your dotfiles easy while keeping you in the loop.github.com

Also, connect with me on GitHub and LinkedIn.

Good luck and Happy Coding! :)