Μια εισαγωγή στο Dotfiles: πώς να ελέγχετε το αναπτυξιακό σας περιβάλλον

Σημείωση: Αυτό είναι ένα πολύ βασικό, εισαγωγικό άρθρο. Εάν γνωρίζετε ήδη τις βασικές αρχές της διαχείρισης dotfile, θα σας συνιστούσα να διαβάσετε το δεύτερο άρθρο μου.

Ως προγραμματιστές, προσπαθούμε να ελαχιστοποιήσουμε το χρόνο που ξοδεύουμε σε περιττά πράγματα, όπως η ρύθμιση του περιβάλλοντος μας, η σύνταξη κωδικού boilerplate και βασικά δεν κάνουμε κάτι που δεν αφορά το διασκεδαστικό μέρος της κωδικοποίησης - κατασκευή νέων στοιχείων.

Σε αυτό το πλαίσιο, φανταστείτε έναν τέλειο κόσμο όπου οι μικροσκοπικές εντολές εκτελούν απίστευτα πολύπλοκες εργασίες προσαρμοσμένες στις ανάγκες σας, όπου θα μπορούσατε να αγοράσετε έναν νέο φορητό υπολογιστή σήμερα και να εγκαταστήσετε όλα τα εργαλεία και τα πακέτα που χρειάζεστε και να ρυθμίσετε το περιβάλλον ανάπτυξής σας με μόνο δύο τερματικά εντολές και όπου όλα είναι μαγικά.

Αυτό το ψηφιακό παραμύθι μπορεί να κατασκευαστεί, και με ευκολία. Και υπάρχει ένα όνομα για αυτήν τη μαγεία: dotfiles.

Χωρίς άλλη παραλλαγή, ας ξεκαθαρίσουμε τα μυστικά των dotfiles!

Εισαγωγή

Σημείωση: Αυτό το άρθρο προϋποθέτει ότι εργάζεστε με λειτουργικό σύστημα τύπου Unix και βασίζεται σε μεγάλο βαθμό στις εντολές τερματικού Unix και στη δέσμη ενεργειών κελύφους. Εάν δεν είστε εξοικειωμένοι με αυτά, προτείνω να μάθετε τα βασικά και να επιστρέψετε εδώ. Εδώ είναι ένα βασικό σενάριο shell.

Στα συστήματα που μοιάζουν με UNIX, προηγούνται πολλά αρχεία διαμόρφωσης και παρόμοια με τελεία (.). Αυτά τα αρχεία είναι κρυμμένα από το λειτουργικό σύστημα από προεπιλογή και ακόμη και η lsεντολή δεν αποκαλύπτει την παρουσία τους (θα μάθουμε πώς να βρούμε αυτά τα αρχεία σε λίγο). Δεδομένου ότι προηγούνται αυτά τα αρχεία με τελεία, ονομάζονται dotfiles. Ντου.

Πώς μπορούμε λοιπόν να βρούμε αυτά τα θρυλικά αρχεία εάν είναι κρυμμένα από προεπιλογή; Ανοίξτε ένα τερματικό και κάντε το:

Σημείωση: Το σύμβολο "$" δεν προορίζεται να πληκτρολογηθεί στο τερματικό. Αντιπροσωπεύει το γεγονός ότι το κείμενο αφού υποτίθεται ότι πρέπει να πληκτρολογηθεί σε μια προτροπή τερματικού.
$ cd ~$ ls -a

Τι κάνει λοιπόν;

Η πρώτη εντολή ( cd ~) μετακινείται στον αρχικό κατάλογο (το σύμβολο "~" αντιπροσωπεύει τον αρχικό κατάλογο). Ο αρχικός κατάλογος είναι όπου βρίσκονται τα περισσότερα από τα αρχεία διαμόρφωσης. Έτσι μετακομίζουμε εκεί πρώτα.

Η δεύτερη εντολή παραθέτει τα αρχεία και τους φακέλους στον τρέχοντα κατάλογο. Αλλά υπάρχει κάποια μαγεία εδώ. Η -aσημαία δίνει εντολή στην εντολή να συμπεριλάβει κρυφά αρχεία στη λίστα.

Λοταρία! Τώρα μπορούμε να δούμε τα dotfiles!

Τροποποίηση του .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 μπορούν να έχουν συναρτήσεις που μπορούν να πάρουν επιχειρήματα. Φοβερός! Εάν είστε λίγο σκουριασμένοι με λειτουργίες σε σενάρια κελύφους, ακολουθεί μια μικρή υπενθύμιση.

Μπορείτε να μετατρέψετε την παραπάνω ακολουθία σε λειτουργία κελύφους ως εξής (αυτό το παράδειγμα λήφθηκε από τα dotfiles του mathiasbynens, ο οποίος έχει μερικά από τα πιο δημοφιλή dotfiles. Άλλα άτομα με εξαιρετικά dotfiles για αναφορά αναφέρονται και συνδέονται στο τέλος του το άρθρο):

# 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 και κοινή χρήση

Γιατί οι άνθρωποι δεσμεύουν τα περιβάλλοντα ανάπτυξης - τα dotfiles τους - στον έλεγχο της έκδοσης; Γιατί το έβαλαν στο GitHub για να το δουν όλοι; Ίδιος λόγος όπως πάντα: να παρακολουθείτε πώς εξελίσσονται τα dotfiles σας με την πάροδο του χρόνου και, το πιο σημαντικό, να μοιράζεστε τα dotfiles σας και να εμπνέετε άλλους ανθρώπους .

Αν κοιτάξετε κάποιο ώριμο repot dotfiles, θα συνειδητοποιήσετε ότι υπάρχουν πάντα αποσπάσματα από άλλα repos dotfiles και παρόμοια. Μπορεί ακόμη και να έχουν πολλούς συνεισφέροντες και συντηρητές. Μοιραζόμαστε dotfiles για να βοηθήσουμε συλλογικά ο ένας τον άλλον να δημιουργήσουμε καλύτερα περιβάλλοντα και ροές εργασίας.

Αυτό επιτρέπει επίσης στους χρήστες να χρησιμοποιούν λειτουργίες ελέγχου έκδοσης για να κάνουν τα dotfiles του άλλου καλύτερα. Ένα παράδειγμα αυτού είναι η χρήση του GitHub Issue Tracker για τη συζήτηση ζητημάτων και βελτιώσεων.

Εμπνεύστηκα να δουλεύω στα dotfiles μου από τα dotfiles του pradyunsg, ο οποίος έχει ένα εντυπωσιακό repo dotfiles.

Τα δικά μου dotfiles είναι αρκετά βασικά και πολύ ανώριμα αυτή τη στιγμή, και θα βελτιωθούν με την πάροδο του χρόνου. Αλλά αυτό σημαίνει επίσης ότι οι αρχάριοι στον κόσμο των dotfiles θα φοβούνται λιγότερο όταν ελέγχουν το repo.

Όπως πολλοί άλλοι άνθρωποι, έχω προσθέσει κάποια υποστήριξη για την προσαρμογή των dotfiles μου, οπότε μπορεί να είναι καλή ιδέα για τα άτομα που είναι καινούργια στην ιδέα των dotfiles να πιάνουν το repo και να το κάνουν δικό τους. Περισσότερες λεπτομέρειες στο αποθετήριο. Ελέγξτε τα και δώστε μου σχόλια!

Ακολουθεί μια λίστα με άτομα των οποίων τα dotfiles είναι πολύ πιο εκτεταμένα και μπορεί να σας εμπνεύσουν:

  • pradyunsg
  • mathiasbynens
  • paulmillr
  • Χόλμαν

συμπέρασμα

Αυτά είναι τα βασικά στοιχεία της δημιουργίας του περιβάλλοντος ανάπτυξης σας χρησιμοποιώντας dotfiles. Ωστόσο, υπάρχουν πολλά περισσότερα σε αυτό, τα οποία θα συνεχίσουμε να εξετάζουμε στο επόμενο άρθρο αυτής της σειράς.

Μερικά από τα θέματα που θα εξετάσουμε στο επόμενο άρθρο της σειράς είναι:

  • Δημιουργία περιβάλλοντος για οργάνωση, παρακολούθηση και ανώδυνη εργασία με dotfiles
  • Διαχωρίζοντας τα dotfiles μας για να κάνουμε τη διαχείριση τους πιο εύκολη και πιο επεκτάσιμη (παρατηρήστε ότι είναι dotfiles , όχι dotfile )
  • Σύνταξη σεναρίων για ρύθμιση (bootstrap) ενός νέου συστήματος με τα dotfiles μας
  • Διευκολύνοντας την κοινή χρήση των dotfiles προσθέτοντας υποστήριξη για προσαρμογή

Αυτό ολοκληρώνει το πρώτο μέρος της σειράς για τα dotfiles! Εδώ είναι ένας σύνδεσμος για τον επόμενο.

Μου άρεσε πολύ η ιδέα των dotfiles που με ενέπνευσε να δημιουργήσω ένα βασικό πλαίσιο διαχείρισης dotfile - autodot . Το πλαίσιο είναι στα σπάργανα του, επομένως ψάχνω ενθουσιώδεις ανθρώπους που μπορούν να μου δώσουν σχόλια για το πλαίσιο, να συμβάλουν σε αυτό λέγοντάς μου για σφάλματα και να κάνω αιτήματα λειτουργιών και να συνεισφέρω στον κώδικα και την τεκμηρίωση. Αφιερώστε λίγο χρόνο για αυτό! :)

ajmalsiddiqui / autodot

autodot - Ένα σύστημα διαχείρισης dotfile που καθιστά εύκολη την κοινή χρήση των dotfiles, διατηρώντας παράλληλα την προσοχή. github.com

Επίσης, συνδεθείτε μαζί μου στο GitHub και το LinkedIn.

Καλή τύχη και καλή κωδικοποίηση! :)