مقدمة إلى Dotfiles: كيفية التحكم في بيئة التطوير الخاصة بك

ملاحظة: هذه مقالة تمهيدية أساسية للغاية. إذا كنت تعرف بالفعل أساسيات إدارة الملفات الرقمية ، فإنني أوصيك بقراءة مقالتي الثانية.

بصفتنا مطورين ، نسعى جاهدين لتقليل الوقت الذي نقضيه في أشياء زائدة عن الحاجة ، مثل إعداد بيئتنا ، وكتابة رمز معياري ، وأساسًا عدم القيام بأي شيء لا يتعلق بالجزء الممتع من البرمجة - بناء أشياء جديدة.

في هذا السياق ، تخيل عالمًا مثاليًا حيث تقوم الأوامر الصغيرة بتنفيذ مهام معقدة بشكل لا يصدق مصممة خصيصًا لاحتياجاتك ، حيث يمكنك شراء كمبيوتر محمول جديد اليوم وتثبيت جميع الأدوات والحزم التي تحتاجها وإعداد بيئة التطوير الخاصة بك مع لا شيء سوى بضع طرفي الأوامر وحيث كل شيء هو السحر.

يمكن صنع أرض الخيال الرقمية هذه ، وبكل سهولة. وهناك اسم لهذا السحر: dotfiles.

بدون مزيد من اللغط ، دعنا نكشف أسرار ملفات dotfiles!

المقدمة

ملاحظة: تفترض هذه المقالة أنك تعمل بنظام تشغيل شبيه بـ Unix ويعتمد بشكل كبير على أوامر Unix الطرفية والبرمجة النصية. إذا لم تكن معتادًا على هذه الأشياء ، فإنني أوصي بتعلم الأساسيات والعودة إلى هنا. إليك كتاب تمهيدي عن البرمجة النصية.

في الأنظمة الشبيهة بـ UNIX ، يسبق الكثير من ملفات التكوين وما شابه ذلك بنقطة (.). يتم إخفاء هذه الملفات بواسطة نظام التشغيل افتراضيًا ، وحتى lsالأمر لا يكشف عن وجودها (سنتعرف على كيفية العثور على هذه الملفات بعد قليل). نظرًا لأن هذه الملفات مسبوقة بنقطة ، فإنها تسمى ملفات dotfiles. دوه.

فكيف نجد هذه الملفات الأسطورية إذا كانت مخفية بشكل افتراضي؟ افتح المحطة وقم بما يلي:

ملاحظة: علامة “$” ليس من المفترض أن تكتب في المحطة. إنه يمثل حقيقة أنه من المفترض أن يكتب النص بعده في موجه طرفية.
$ cd ~$ ls -a

فماذا يعني هذا أن تفعل؟

cd ~ينتقل الأمر الأول ( ) إلى الدليل الرئيسي (يمثل الرمز "~" الدليل الرئيسي). الدليل الرئيسي هو المكان الذي توجد فيه معظم ملفات التكوين الخاصة بك. لذلك ننتقل إلى هناك أولاً.

يسرد الأمر الثاني الملفات والمجلدات في الدليل الحالي. لكن هناك بعض السحر هنا. تقوم -aالعلامة بتوجيه الأمر لتضمين الملفات المخفية في القائمة.

بنغو! يمكننا الآن رؤية الملفات!

تعديل ملف bash_profile

عادةً ما يكون الملف الأول الذي يعدله معظم الأشخاص عند دخولهم إلى عالم dotfiles هو .bash_profileملف .bashrc. ولسبب وجيه. يتم تحميل هذا الملف عند بدء تشغيل الجهاز ، ويتم تنفيذ أوامره عند بدء تشغيل الجهاز.

أحد أسباب رغبتك في تعديل جهازك .bash_profileهو تخصيص مظهر جهازك (على وجه التحديد ، موجه جهازك الطرفي) هذا فن وعلم في حد ذاته وربما يجب أن يكون له كتاب كامل مخصص له ، لذلك لن أغطي هذا الموضوع كثيرًا في هذه المقالة. يمكنك البدء في تخصيص موجهك بهذه المقالة.

بدلاً من ذلك ، دعنا نلقي نظرة على بنايتين شائعتين للقشرة ربما تكونان من بين الأجزاء الأكثر أهمية وفائدة في ملفات dotfiles: الأسماء المستعارة والوظائف.

اسماء مستعارة

الأسماء المستعارة هي ببساطة أسماء / اختصارات قصيرة يمكنك تخصيصها لتسلسل أطول من الأوامر لتقليل المدة التي تستغرقها في كتابتها وبالتالي زيادة سرعتك. على سبيل المثال ، يستخدم كل مطور تقريبًا git. أي شخص يستخدم git CLI (ودعنا نواجه الأمر - يجب أن تستخدم git CLI) ، ربما استخدم أوامر طويلة مثل هذه:

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

الآن ، كلما بدأت تشغيل محطة bash ، يتم إنشاء الاسم المستعار أعلاه. بدأت الحياة بالفعل تصبح رائعة!

ملاحظة: يمكنك استخدام nanoمحرر النصوص لتحرير ملفاتك النصية. عندما تكون في الدليل الرئيسي ، اكتب nano .bash_profileلفتح الملف باستخدام nano ، وقم بإجراء التغييرات ، واحفظ الملف عن طريق الضغط Ctrl+Xثم yعند المطالبة. Vimهو محرر نصوص آخر يمكنك استخدامه.

نظرًا لأن الأسماء المستعارة تحل محل الأمر الكامل بشكل أساسي ، يمكنك استخدام الأسماء المستعارة كجزء من أداة CLI متعددة الأوامر الشائعة مثل git لتسهيل جميع أوامرها. فقط أضف هذا إلى .bash_profile:

alias g="git"

ويمكنك كتابة "g" بدلاً من "git" حيثما تريد استخدام "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اتخاذ الحجج، وأنت لا يمكن تمرير الوسائط إلى الأسماء المستعارة.

اذا ماذا الان؟ تذكر ، هناك بنية برمجة فائقة مشتركة تأخذ الحجج؟ نعم ، وظائف! يمكن أن تحتوي البرامج النصية لـ Shell على وظائف يمكن أن تأخذ وسيطات. رائع! إذا كنت غير قادر على التعامل مع الوظائف في نصوص الشل ، فإليك القليل من التذكير.

يمكنك تحويل التسلسل أعلاه إلى دالة shell مثل هذا (تم أخذ هذا المثال من ملفات dotfiles الخاصة بـ mathiasbynens ، الذي يحتوي على بعض أكثر ملفات النقاط شيوعًا. يتم سرد الأشخاص الآخرين الذين لديهم ملفات نقطية ممتازة للإشارة إليها وربطهم بها في نهاية المقالة):

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

مرة أخرى ، يمكنك وضع هذا في حسابك .bash_profileوستكون الوظيفة متاحة أثناء أي جلسة طرفية.

ملاحظة: سيتعين عليك إعادة تشغيل جهازك الطرفي .bash_profileحتى تسري أي تغييرات تطرأ على جهازك . إذا كان هذا عمل روتيني ، قم بتشغيل source .bash_profileلإضافة تغييراتك إلى جلسة المحطة الحالية. أفضل من ذلك ، بروح dotfiles ، اصنع اسمًا مستعارًا مثل alias reload="source .bash_profile"!

Dotfiles والمشاركة

لماذا يلزم الأشخاص بيئات التطوير الخاصة بهم - ملفاتهم النقطية - بالتحكم في الإصدار؟ لماذا يطرحونه على جيثب ليراه الجميع؟ نفس السبب كما هو الحال دائمًا: لتتبع كيفية تطور ملفاتك مع مرور الوقت ، والأهم من ذلك ، مشاركة ملفاتك وإلهام الآخرين .

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

autodot - نظام إدارة ملف نقطي يجعل مشاركة ملفاتك سهلة مع إبقائك في الحلقة. github.com

أيضًا ، تواصل معي على GitHub و LinkedIn.

حظًا سعيدًا وترميزًا سعيدًا! :)