dotfiles hat eine untrennbare Beziehung zum Leben eines Ingenieurs. Ich möchte vorstellen, wie solche Punktdateien in die ideale Form gebracht werden.
Beginnen wir als ersten Schritt mit der Verwaltung von Punktedateien mit Git. Es gibt verschiedene Vorteile wie Verlaufsverwaltung und verbesserte Portabilität. (Auch Gras anbauen)
Erstellen Sie ein Repository mit dem Namen dotfiles und schreiben Sie verschiedene Dotfiles wie ".bashrc" unter das Repository.
[Symbolischer Link](https://ja.wikipedia.org/wiki/%E3%82%BD%E3%83%95%E3%83%88%E3%83] mit dem Befehl ln
zum Ausgangsverzeichnis % AA% E3% 83% B3% E3% 82% AF).
** Durch Erstellen eines symbolischen Links können Sie die Dateien im Repository zentral verwalten und so das Aktualisieren und Aktualisieren vereinfachen. ** ** **
.Beispiel für die Erstellung einer symbolischen Verknüpfung in bashrc
#Link erstellen
$ cd path/to/dotfiles
$ ln -s .bashrc ~/.bashrc
#Überprüfen Sie den Link
$ ls -l ~/.bashrc
lrwxrwxrwx 1 reireias reireias 59 8. Juni 22:30 /home/reireias/.bashrc -> /home/reireias/dev/src/github.com/reireias/dotfiles/.bashrc
Es gibt ziemlich viele Dotfiles-Repositories, die auf GitHub veröffentlicht wurden. https://github.com/topics/dotfiles
** Achten Sie übrigens darauf, Ihre Anmeldeinformationen wie "AWS_ACCESS_KEY_ID" nicht preiszugeben. **
Die symbolische Verknüpfung wird nur einmal für die Umgebung erstellt. Mit zunehmender Anzahl der Zieldatendateien wird die Arbeit jedoch durch den Ingenieur effizienter.
Es kann mit einem einfachen Shell-Skript implementiert werden. Sie können es mit etwas anderem als einem Shell-Skript implementieren, aber ein Shell-Skript, das in den meisten Umgebungen verwendet werden kann, wird häufig verwendet, da die Installation in einer sauberen Umgebung mit weniger Paketen einfacher ist.
Das folgende Skript erstellt einen symbolischen Link für alle Dateien, die mit "." Beginnen, direkt unter dem Dotfiles-Repository in Ihrem Home-Verzeichnis.
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"
Bei einigen Punktdateien müssen Sie möglicherweise Pakete und Bibliotheken installieren.
Zum Beispiel
.tmux.conf
, also möchte ich tmux installierenpeco
verwendet, ist in .bashrc
definiert.Und so weiter.
Zunächst finden Sie möglicherweise eine Liste der abhängigen Pakete in README. Immerhin ist es ein Ingenieur zu automatisieren.
Im Fall eines Shell-Skripts ergibt sich beispielsweise durch einfaches Auflisten der Befehle wie unten gezeigt ein gutes Installationsskript.
Ein Beispiel für ein Installationsskript
#!/bin/bash
brew install tmux peco neovim
pip install neovim
Machen wir das Installationsskript auf [Gleichheit] aufmerksam (https://ja.wikipedia.org/wiki/%E5%86%AA%E7%AD%89). Indem sichergestellt wird, dass unabhängig von der Häufigkeit der Ausführung dasselbe Ergebnis erzielt wird, kann das Installationsskript für die vorhandene Umgebung ausgeführt werden, auch wenn ein neuer Prozess hinzugefügt wird, der vom Installationsskript ausgeführt werden soll.
Ein einfaches Beispiel ist unten gezeigt.
#Keine Gleichheit
mv config /etc/hoge/config
echo "some setting" >> ~/.hogerc
#Es gibt Gleichheit
cp config /etc/hoge/config
if ! grep -q "^some setting$" ~/.hogerc; then
echo "some setting" >> ~/.hogerc
fi
Je größer das Installationsskript ist, desto schwieriger ist es, die Gleichwertigkeit mit einem Shell-Skript sicherzustellen. Daher Ansible und [Chef]( Das Schreiben eines Installationsskripts mit einem Konfigurationsverwaltungstool wie https://www.chef.io/) ist ebenfalls eine gute Wahl.
Wenn Sie jedoch andere Tools als Shell-Skripte verwenden, müssen Sie vorsichtig sein, da die Installation in einer sauberen Umgebung etwas zunimmt.
Sowohl Katzen als auch Schöpflöffel [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) Es ist eine Welt. Lassen Sie uns CI auch in Dotfiles umwandeln.
Bei Skripten, die die neueste Version installieren, ohne die Version des zu installierenden Pakets oder der zu installierenden Bibliothek anzugeben, können inkompatible Updates dazu führen, dass das Installationsskript fehlschlägt. Es ist eine gute Idee, das Installationsskript auszuführen und zu überprüfen, ob die Dateien ordnungsgemäß abgelegt sind.
Hier ist ein sehr einfacher Beispielcode für GitHub-Aktionen.
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
Wenn die Dotfiles stetig wachsen, werden .bashrc
( .zshrc
) und .vimrc
ziemlich groß.
Ingenieure halten eine große Datei aufgrund bedingter Reflexion normalerweise für schlecht, daher möchte ich sie irgendwie aufteilen.
Glücklicherweise haben .bashrc
und .vimrc
eine Funktion zum Lesen einer anderen Datei, so dass es einfach ist, sie zu teilen.
Sie können beispielsweise eine andere Datei aus ".bashrc" wie folgt lesen.
.bashrc
source ${HOME}/.bash/keybind.sh
source ${HOME}/.bash/alias.sh
Dotfiles wachsen auch, wenn sie von Menschen gesehen werden (?) Organisieren Sie Ihre README-Datei und machen Sie sie zu einem coolen Dotfiles-Repository.
Persönlich, wenn das Folgende beschrieben wird, möchte ich darauf verweisen ~~ Pakuri Taku ~~.
Wenn Sie eine seltene Person sind, die möglicherweise sowohl Linux als auch Mac OS verwendet, können Sie sich freuen, wenn Sie Einstellungen und Installationsskripte für beide Umgebungen vorbereiten. CI sollte auch in Linux- und Mac OS-Umgebungen unter Verwendung von Matrix Build usw. ausgeführt werden.
Übrigens, in letzter Zeit bin ich in Schwierigkeiten, weil es keine Möglichkeit gibt, Linux Apt und Mac OS Brew in Ansible zu schreiben, ohne die Verzweigung bis wann zu verwenden.
Was ist also mit deinen Dotfiles? Ich werde es posten, weil es gesagt zu sein scheint. Erwarten Sie nicht so viel.
Recommended Posts