Увод у Дотфилес: како да преузмете контролу над својим развојним окружењем

Напомена: Ово је врло основни, уводни чланак. Ако већ знате основе управљања дотфиле-ом, препоручио бих вам да прочитате мој други чланак.

Као програмери, трудимо се да смањимо време које трошимо на сувишне ствари, попут постављања нашег окружења, писања бојлер кода и у основи не радимо ништа што се не тиче забавног дела кодирања - стварања нових ствари.

У том контексту, замислите савршен свет у којем мале команде извршавају невероватно сложене задатке прилагођене вашим потребама, где бисте данас могли да купите нови лаптоп и инсталирате све потребне алате и пакете и подесите своје развојно окружење са само неколико терминала команде, и где је све магија.

Ова дигитална бајковита земља може се направити и са лакоћом. А постоји и име за ову магију: тачке.

Без даљег хватања, разоткријемо тајне тачака!

Увод

Напомена: Овај чланак претпоставља да радите са оперативним системом сличним Уник-у и да се у великој мјери ослања на Уник наредбе терминала и скриптирање љуске. Ако вам ови нису познати, препоручујем вам да научите основе и вратите се овде. Ево упутства за скриптовање шкољки.

У системима сличним УНИКС-у, многим конфигурационим датотекама и слично стоји тачка (.). Те датотеке ОС подразумевано скрива, чак ни lsкоманда не открива њихово присуство (за мало ћемо доћи до начина проналаска ових датотека). Будући да овим датотекама претходи тачка, они се називају тачкама. Дух.

Па како да пронађемо ове легендарне датотеке ако су подразумевано скривене? Отворите терминал и направите следеће:

Напомена: Знак „$“ није намењен за унос у терминал. Представља чињеницу да би текст након њега требало да буде откуцан у терминалском одзиву.
$ cd ~$ ls -a

Па шта ово ради?

Прва наредба ( cd ~) се премешта у кућни директоријум (симбол ~ представља кућни директоријум). Кућни директоријум је место где се налази већина ваших конфигурационих датотека. Па се прво преселимо тамо.

Друга наредба наводи датотеке и фасцикле у тренутном директоријуму. Али овде постоји нека магија. Ознака -aупућује наредбу да укључи скривене датотеке на листу.

Бинго! Сада можемо видети тачке!

Модификовање .басх_профиле

Обично је прва датотека коју већина људи модификује када уђу у свет тачкица датотека .bash_profileили .bashrc. И то са добрим разлогом. Ова датотека се учитава када покренете терминал, а његове се наредбе извршавају при покретању терминала.

Један од разлога зашто бисте можда желели да измените свој .bash_profileје прилагођавање изгледа вашег терминала (тачније, терминала терминала). Ово је уметност и наука за себе и вероватно би јој требало бити посвећена читава књига, па у овом чланку нећу пуно обрађивати ову тему. Овим чланком можете започети прилагођавање упита.

Уместо тога, погледајмо две уобичајене конструкције љуске које су можда међу најважнијим и најкориснијим деловима тачака: псеудоними и функције.

Алиаси

Псеудоними су једноставно кратка имена / акроними које можете доделити дужем низу наредби како бисте смањили колико вам времена треба да их откуцате и тако повећали брзину. На пример, скоро сваки програмер користи гит. Свако ко користи гит ЦЛИ (и признајмо то - требало би да користите гит ЦЛИ), вероватно је користио дуге команде попут ове:

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

Ове наредбе је прилично мало за куцати. Ако мислите да нису, предомислићете се након што почнете да користите псеудониме.

Откуцајте следеће у свој схелл схелл:

$ alias gpom="git push origin master"

Сада када куцате gpom, git push origin masterизвршава се! Прешли сте са 4 речи на 4 слова ! ?

Али постоји проблем. Затворите терминал, поново га покрените и покушајте gpomпоново. Отишао је ваш псеудоним! То је зато што је замјенско име дефинирано за тренутну сесију терминала.

Па, како то заобићи и учинити да нам се псеудоними држе?

Сјећате се да смо разговарали о датотеци чије се наредбе извршавају кад се терминал покрене? Бинго!

Додајте следећи ред на .bash_profileили или .bashrcга сачувајте:

alias gpom="git push origin master"

Сада, кад год покренете басх терминал, горњи алиас се креира. Живот већ почиње да постаје сјајан!

Напомена:nano Уређивач текста можете користити за уређивање текстуалних датотека. Када сте у матичном директоријуму, откуцајте nano .bash_profileда бисте датотеку отворили помоћу нано-а, унесите промене и сачувајте датотеку притиском на тастер, Ctrl+Xа затим yкада се то затражи. Vimје још један уређивач текста који можете користити.

Будући да алиаси у основи замењују комплетну команду, псеудониме можете додати као део заједничког ЦЛИ алата са више наредби, попут гит-а, како бисте олакшали све његове команде. Само додајте ово у свој .bash_profile:

alias g="git"

Можете да упишете „г“ уместо „гит“ где год желите да користите „гит“. Слатко!

Ево неколико уобичајених псеудонима које бисте можда желели да користите:

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"...

Функције

Псеудоними могу много да побољшају наш ток посла, али једна ствар не могу да раде: рад са аргументима.

Рецимо да сте се уморили од извршавања две наредбе да бисте направили нови директоријум и cdушли у њега:

$ mkdir new_folder$ cd new_folder

А ви сте желели да направите псеудоним за ово. Али не можете, будући да mkdirи cdједно и друго узимате аргументе и не можете прослеђивати аргументе надимцима.

So what now? Remember, there’s a super common programming construct that takes arguments? Yup, functions! Shell scripts can have functions that can take arguments. Awesome! If you’re a little rusty with functions in shell scripts, here’s a little reminder.

You can turn the above sequence into a shell function like this (this example was taken from the dotfiles of mathiasbynens, who has some of the most popular dotfiles around. Other people with excellent dotfiles to refer to are listed and linked to at the end of the article):

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

Again, you can put this in your .bash_profile and the function will be accessible during any terminal session.

Напомена: Морате поново покренути терминал да би све промене на њему ступиле на .bash_profileснагу. Ако је ово досадан посао, покрените source .bash_profileда бисте додали промене тренутној сесији терминала. Још боље, у духу тачака, направите псеудоним попут alias reload="source .bash_profile"!

Дотфилес и дељење

Зашто људи предају своја развојна окружења - своје тачке података - контроли верзија? Зашто га постављају на ГитХуб да га сви виде? Исти разлог као и увек: да пратите како се ваше тачке развијају током времена и, што је најважније, делите своје тачке и инспиришете друге људе .

If you look at any mature dotfiles repo, you’ll realize that there are always snippets taken from other dotfiles repos and the like. They may even have multiple contributors and maintainers. We share dotfiles to collectively help each other build better environments and workflows.

This also allows people to use features of version control to make each others’ dotfiles better. One example of this is using the GitHub Issue Tracker to discuss issues and improvements.

I was inspired to work on my dotfiles from the dotfiles of pradyunsg, who has an impressive dotfiles repo of his own.

My own dotfiles are fairly basic and very immature right now, and they’ll get better over time. But this also means that beginners in the world of dotfiles will be less intimidated when they check the repo out.

Like many other people, I’ve added some support for customization of my dotfiles, so it might be a good idea for people who are new to the idea of dotfiles to fork the repo and try making it their own. More details in the repository. Do check them out and give me feedback!

Here’s a list of a people whose dotfiles are much more expansive and might inspire you:

  • pradyunsg
  • mathiasbynens
  • paulmillr
  • holman

Conclusion

These are the very fundamentals of creating your development environment using dotfiles. However, there is a lot more to this, which we’ll continue looking at in the next article in this series.

Some of the topics we’ll look at in the next article in the series are:

  • Creating an environment to organize, track and painlessly work with dotfiles
  • 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

аутодот - Систем управљања датотекама датотека који олакшава дељење датотека тачака, а истовремено вас обавештава. гитхуб.цом

Такође се повежите са мном на ГитХуб-у и ЛинкедИн-у.

Сретно и срећно кодирање! :)