dotfiles a une relation indissociable avec la vie d'un ingénieur. Je voudrais vous présenter comment développer ces fichiers de points dans la forme idéale.
Dans un premier temps, commençons par gérer les dotfiles avec Git. Il existe divers avantages tels que la gestion de l'historique et une meilleure portabilité. (Cultivez également de l'herbe)
Créez un référentiel appelé dotfiles et validez divers fichiers dotfiles tels que .bashrc
sous le référentiel.
[Lien symbolique](https://ja.wikipedia.org/wiki/%E3%82%BD%E3%83%95%E3%83%88%E3%83] vers le répertoire de base à l'aide de la commande ln
% AA% E3% 83% B3% E3% 82% AF).
** En créant un lien symbolique, vous pouvez gérer de manière centralisée les fichiers dans le référentiel, ce qui facilite la mise à jour et la mise à jour. ** **
.Exemple de création d'un lien symbolique dans bashrc
#Créer un lien
$ cd path/to/dotfiles
$ ln -s .bashrc ~/.bashrc
#Vérifiez le lien
$ ls -l ~/.bashrc
lrwxrwxrwx 1 reireias reireias 59 8 juin 22:30 /home/reireias/.bashrc -> /home/reireias/dev/src/github.com/reireias/dotfiles/.bashrc
Il y a tellement de référentiels dotfiles publiés sur GitHub. https://github.com/topics/dotfiles
** Au fait, veillez à ne pas divulguer vos informations d'identification telles que ʻAWS_ACCESS_KEY_ID` **
Le lien symbolique n'est créé qu'une seule fois pour l'environnement, mais à mesure que le nombre de fichiers dotfiles cibles augmente, c'est la nature de l'ingénieur que le travail devient plus efficace.
Il peut être implémenté avec un simple script shell. Vous pouvez l'implémenter avec autre chose qu'un script shell, mais le script shell qui peut être utilisé dans la plupart des environnements est souvent utilisé car il est plus facile à installer dans un environnement propre avec moins de packages.
Le script suivant crée des liens symboliques pour tous les fichiers commençant par .
directement sous le référentiel dotfiles de votre répertoire personnel.
install.sh
#!/bin/bash -e
IGNORE_PATTERN="^\.(git|travis)"
echo "Create dotfile links."
for dotfile in .??*; do
[[ $dotfile =~ $IGNORE_PATTERN ]] && continue
ln -snfv "$(pwd)/$dotfile" "$HOME/$dotfile"
done
echo "Success"
Certains fichiers dotfiles peuvent nécessiter l'installation de packages et de bibliothèques.
Par exemple
--Il y a .tmux.conf
, donc je veux installer tmux
--Une fonction auto-conçue qui utilise la commande peco
est définie dans .bashrc
.
Etc.
Au début, vous pouvez trouver une liste des packages dépendants dans README. Après tout, c'est un ingénieur à automatiser.
Par exemple, dans le cas d'un script shell, le simple fait d'énumérer les commandes comme indiqué ci-dessous fera un bon script d'installation.
Un exemple de script d'installation
#!/bin/bash
brew install tmux peco neovim
pip install neovim
Rendons le script d'installation conscient de l'égalité. En s'assurant que le même résultat est obtenu quel que soit le nombre d'exécutions, il est possible d'exécuter le script d'installation pour l'environnement existant même si un nouveau processus à exécuter par le script d'installation est ajouté.
Un exemple simple est présenté ci-dessous.
#Pas d'égalité
mv config /etc/hoge/config
echo "some setting" >> ~/.hogerc
#Il y a égalité
cp config /etc/hoge/config
if ! grep -q "^some setting$" ~/.hogerc; then
echo "some setting" >> ~/.hogerc
fi
Plus le script d'installation est volumineux, plus il est difficile d'assurer l'équivalence avec un script shell, donc Ansible et [Chef]( Ecrire un script d'installation à l'aide d'un outil de gestion de configuration tel que https://www.chef.io/) est également un bon choix.
Cependant, si vous commencez à utiliser des outils autres que le script shell, vous devez être prudent car la procédure d'installation dans un environnement propre augmentera un peu.
Chats et louche [CI](https://ja.wikipedia.org/wiki/%E7%B6%99%E7%B6%9A%E7%9A%84%E3%82%A4%E3%83%B3 % E3% 83% 86% E3% 82% B0% E3% 83% AC% E3% 83% BC% E3% 82% B7% E3% 83% A7% E3% 83% B3) C'est un monde. Transformons également CI dans les fichiers dot.
Pour les scripts qui installent la dernière version sans spécifier la version du package ou de la bibliothèque à installer, des mises à jour incompatibles peuvent entraîner l'échec du script d'installation. C'est une bonne idée d'exécuter le script d'installation et de vérifier si les fichiers sont placés correctement.
Voici un exemple de code très simple pour les actions GitHub.
yaml:.github/workflows/main.yml
---
name: main
on: [push]
jobs:
main:
runs-on: ubuntu-latest # or macOS-latest
steps:
- uses: actions/checkout@v1
- name: install dotfiles
run: bash install.sh
- name: test
run: # some tests
Au fur et à mesure que les dotfiles grandissent, .bashrc
( .zshrc
) et .vimrc
deviennent assez énormes.
Les ingénieurs considèrent généralement qu'un gros fichier est mauvais en raison de la réflexion conditionnelle, je veux donc le diviser d'une manière ou d'une autre.
Heureusement, .bashrc
et .vimrc
ont une fonction pour lire un autre fichier, il est donc facile de le diviser.
Par exemple, vous pouvez lire un autre fichier à partir de .bashrc
comme suit.
.bashrc
source ${HOME}/.bash/keybind.sh
source ${HOME}/.bash/alias.sh
Les fichiers dot se développent également en étant vus par les gens Organisez votre README et faites-en un dépôt de fichiers dotfiles sympa.
Personnellement, si ce qui suit est décrit, je voudrais y faire référence ~~ Pakuri Taku ~~.
Si vous êtes une personne rare qui peut utiliser à la fois Linux et Mac OS, vous serez peut-être heureux si vous préparez des paramètres et des scripts d'installation pour les deux environnements. CI doit également être exécuté dans les environnements Linux et Mac OS en utilisant la construction de matrice et ainsi de suite.
À propos, récemment, j'ai des problèmes car il n'y a aucun moyen d'écrire Linux apt et Mac OS brew dans Ansible sans utiliser le branchement par quand.
Alors qu'en est-il de vos fichiers dotfiles? Je le posterai parce qu'il semble être dit. Ne vous attendez pas à ça.
[^ 1]: Le mécanisme de fichiers cachés basé sur Unix était une mauvaise habitude née du développeur Poka
Recommended Posts