curl
nicht verfügbar istMakefile
db
-Verknüpfung für Datenbank-Dienstprogramme und db top
db
db
db connections
db pga
(z. B. pg_activity
)bin/tablet
Skriptbin/specs
-Skript ausbin/spec -P
ausführenMakefile
ausMakefile
ausAbzeichen | FOSSA-Scannen | |
---|---|---|
FOSSSA | ||
CI-Tests | ||
CI-Installation | ||
ShellCheck | ||
Gitter |
|
Bashmatic® ist ein BASH-Framework, das heißt, es handelt sich um eine Sammlung von BASH-Funktionen (fast 900 davon), von denen wir hoffen, dass sie die BASH-Programmierung einfacher, angenehmer und vor allem unterhaltsamer machen – da der Schwerpunkt der Bibliothek darauf liegt, dem Entwickler eine... Ständiges Feedback darüber, was passiert, während ein Skript ausgeführt wird, das die Helfer von Bashmatic verwendet.
Tipp | Wir empfehlen Ihnen, mehr über Bashmatic anhand der PDF-Version dieses Dokuments zu erfahren, die sich viel besser zum Ausdrucken eignet.
|
Stellen Sie nach der Installation der Bibliothek (der Standardspeicherort ist ~/.bashmatic
) fest, dass Sie die Wahl haben zwischen:
Beziehen Sie die Bibliothek (und alle über 900 Funktionen) automatisch aus Ihren Shell-Punktdateien wie ~/.bash_profile
indem Sie diese Zeile hinzufügen: source ~/.bashmatic/init.sh
. Bei einem neueren M1-Laptop von Apple sind das insgesamt etwa 100 ms.
ODER Sie können es während Ihrer Anmeldeinitialisierung überspringen und es nur oben in den Skripten laden, die die Bibliothek verwenden.
Vorsicht | Beide Ansätze sind absolut gültig und haben ihre Vor- und Nachteile. Das Laden von Bashmatic in Ihre Dotfiles könnte etwas riskant sein. Auf die eine oder andere Weise werden wir bald Möglichkeiten bereitstellen, um jedes Mal zu überprüfen, ob die von Ihnen heruntergeladene Bashmatic die sichere und korrekte Version ist. |
Alles, was wir zu diesem Thema sagen können, ist, dass wir die Beschaffung der Bibliothek um ein Vielfaches optimieren können. Hier ist ein Beispiel:
Der Programmierstil von Bashmatic® ist stark von den DSL-Sprachen von Ruby beeinflusst. Wenn Sie einen kurzen Blick auf das Skript is.sh werfen, definiert es eine Reihe von DSL-Funktionen, die mit &&
und ||
verkettet werden können um einen kompakten und selbstdokumentierenden Code wie diesen zu erstellen:
[Pfeilkreis nach unten]
# An example of a DSL-like function
function bashmatic.auto-update() {
local dir= " ${1 :- " ${BASHMATIC_HOME " }} "
is.a-directory " ${dir} " && {
file.exists-and-newer-than " ${dir} /.last-update " 30 && return 0
(
cd ${BASHMATIC_HOME} &&
git.is-it-time-to-update &&
git.sync-remote
)
}
}
# check if the function is defined and call it
is.a-function.invoke bashmatic.auto-update " $@ "
Um es in Ihren eigenen Skripten zu verwenden, sollten Sie zunächst die unten bereitgestellten Beispiele studieren und jedes unter lib
verfügbare Modul nutzen.
Abschließende Anmerkung: Sobald Bashmatic installiert und von Ihren Shell-Init-Dateien geladen ist, können Sie is.<tab><tab>
um zu sehen, welche Funktionen Ihnen zur Verfügung stehen, die mit is
beginnen. Jedes Modul unter lib
definiert normalerweise öffentliche Funktionen, beginnend mit dem Namen der Datei. Beispielsweise beginnen Funktionen in array.sh
normalerweise mit array.<something>.<action>
Bashmatic® bietet eine riesige Auswahl an ständig wachsenden Hilfsfunktionen für die Ausführung von Befehlen, automatische Wiederholungsversuche, wiederholbare, laufzeitmessende Ausführungsrahmen mit der Schlüsselfunktion run
. Es gibt Helfer für jeden Anlass, vom Zeichnen von Rahmen, Linien, Überschriften bis hin zum Anzeigen von Fortschrittsbalken, dem Einholen von Benutzereingaben, dem Installieren von Paketen und vielem mehr.
Notiz | Ein großer Teil der Hilfsprogramme in Bashmatic® ist für OS-X geschrieben, obwohl viele nützliche Funktionen auch unter Linux funktionieren. Unsere gesamte Testsuite läuft auf Ubuntu. Es gibt Bestrebungen, Homebrew-spezifische Funktionen in betriebssystemneutrale Hilfsprogramme wie package.install umzuwandeln, die unter Linux genauso gut funktionieren würden. |
Beginnen Sie unten mit der Erkundung von Bashmatic® anhand unseres Beispielbereichs. Wenn Sie bereit sind, finden Sie den gesamten Satz an Schamfunktionen (fast 500 davon) auf der Funktionsindexseite.
Und keine Sorge, Bashmatic® ist völlig Open Source und kann kostenlos verwendet und erweitert werden. Wir mögen einfach die Art und Weise, wie es mit ein wenig ® aussieht :)
BASH-Version 4+
BASH Version 3 (teilweise Kompatibilität, einige Funktionen sind deaktiviert)
ZSH – seit dem letzten Update ist Bashmatic zu fast 90 % mit ZSH kompatibel.
Derzeit nicht unterstützt
FISH (obwohl Sie Bashmatic über bin/bashmatic
-Skripthelfer oder seine ausführbaren Dateien verwenden könnten)
Dieses Projekt entstand aus der einfachen Erkenntnis mehrerer hochrangiger und sehr erfahrener Ingenieure:
Es ist oft einfacher, BASH zum Schreiben von Dingen wie universellen Installationsprogrammen , auch Setup-Skripten genannt, Uploadern , Wrappern für alle Arten von Funktionen wie NPM , rbenv , der Installation von Gems, Rubys, der Verwendung von AWS, der Bereitstellung von Code usw. zu verwenden.
Die Rückgabewerte der BASH-Funktion eignen sich gut für eine kompakte DSL (domänenspezifische Sprache), in der mehrere Funktionen durch logisches AND &&
und OR ||
verkettet werden können um eine sehr kompakte Ausführungslogik bereitzustellen. Am wichtigsten ist, dass wir glauben, dass diese Logik äußerst einfach zu lesen und zu verstehen ist.
Trotz der oben genannten Punkte ist allgemein anerkannt, dass:
Viele BASH-Skripte sind sehr schlecht geschrieben und schwer zu lesen und zu verstehen.
Es ist oft schwierig zu verstehen, was zum Teufel los ist, während das Skript ausgeführt wird, weil es entweder nichts Nützliches ausgibt, ODER es gibt viel zu viel aus.
Wenn BASH-Fehler auftreten, geht es in der Regel schief und jemand beschließt, das 20-Zeilen-BASH-Skript in C++ oder Go neu zu schreiben, weil es ein verdammtes BASH-Skript ist und nicht funktioniert.
Tipp | Das Ziel von Bashmatic besteht darin, die BASH-Programmierung sowohl unterhaltsam als auch konsistent zu gestalten und dem Benutzer zahlreiche sichtbare Ausgaben zu bieten, sodass keine Geheimnisse darüber entstehen, was vor sich geht. |
Der vielleicht einfachste Weg, Bashmatic® zu installieren, ist die Verwendung von curl
, wie unten gezeigt.
Stellen Sie zunächst sicher, dass Curl installiert ist, und führen Sie which curl
aus, den Sie sehen möchten. Kopieren Sie dann diesen Befehl und fügen Sie ihn in Ihr Terminal ein.
[Pfeil nach unten]
bash -c " $( curl -fsSL https://bashmatic.re1.re ) ; bashmatic-install -q "
[Pfeil nach oben]
Wo:
-q steht für „leise“;
-v für „ausführlich“
Tipp | Die URL https://bashmatic.re1.re leitet zum HEAD des bin/bashmatic-install -Skripts im Github Bashmatic Repo weiter. Wir verwenden diese URL, damit wir die Installation bei Bedarf in Zukunft auf ein anderes Skript umleiten können. |
Wenn Sie es vorziehen, das Skript zu prüfen, bevor Sie direkt aus dem Internet weitergeleiteten Code ausführen, kann ich Ihnen das nicht verübeln. Du bist vorsichtig und klug.
Für Leute wie Sie gibt es hier eine etwas sicherere Möglichkeit, dasselbe zu tun:
export script= " /tmp/install "
curl -fsSL https://bashmatic.re1.re > /tmp/install
chmod 755 /tmp/install
# At this point you can examine /tmp/install
/tmp/install --help
/tmp/install --verbose --debug # install with extra info
Mit dieser Methode können Sie das Skript /tmp/install
untersuchen, bevor Sie es ausführen.
Nachfolgend finden Sie einige Erläuterungen
Sie können einen Zweig oder ein Tag von Bashmatic installieren, indem Sie das Flag -b / --git-branch <tag|branch>
übergeben.
Sie können Flags an die bashmatic-install
Funktion übergeben, um zu steuern, wie und wo Bashmatic installiert wird und woher es heruntergeladen wird, einschließlich:
-v
oder --verbose
zum Anzeigen zusätzlicher Ausgaben oder das Gegenteil:
-d
oder --debug
gibt zusätzliche Debugging-Ausgaben aus
-f
oder --force
ersetzt jeden vorhandenen Bashmatic-Ordner durch den neuen
-q
oder --quiet
für keine Ausgabe
-l
oder --skip-on-login
um den Hook, der Bashmatic beim Anmelden lädt, NICHT zu installieren.
Wenn Sie Bashmatic lieber an einem nicht standardmäßigen Speicherort installieren möchten (der Standardwert ist ~/.bashmatic
), können Sie das Flag -H PATH
verwenden
Hier installieren wir beispielsweise Bashmatic an einem nicht standardmäßigen Zielort, geben dabei zusätzliche ausführliche Informationen und Debug-Informationen aus und verwenden -f
(force), um möglicherweise den Zielordner (sofern dieser bereits vorhanden ist) mit einem entsprechenden Checkout von Bashmatic zu überschreiben zu einem Tag v2.4.1
:
bash -c " $( curl -fsSL https://bashmatic.re1.re ) ;
bashmatic-install -d -v -f -b v2.4.1 -H ~/workspace/bashmatic "
Wenn Sie Ihre SSH-Schlüssel beide lokal installiert haben und der öffentliche Schlüssel mit Ihrem Konto auf Github konfiguriert wurde, möchten Sie Bashmatic möglicherweise mit dem Ursprung [email protected]:kigster/bashmatic
anstelle des Standard- https://github.com/kigster/bashmatic
:
Hier ist die vollständige Liste der vom Installationsprogramm akzeptierten Optionen:
Wenn Sie bash -c "$(curl -fsSL https://bashmatic.re1.re); bashmatic-install"
ausführen, passiert normalerweise Folgendes:
curl
lädt das Skript bin/bashmatic-install
herunter und übergibt es zur Auswertung an die integrierte BASH.
Nach der Auswertung wird die Funktion bashmatic-install
aufgerufen, die die Installation tatsächlich durchführt.
Dies ist die Funktion, die die oben aufgeführten Argumente akzeptiert.
Das Skript fragt möglicherweise nach Ihrem Passwort, um den Sudo-Zugriff zu aktivieren. Dies kann unter OS-X erforderlich sein, um die XCode Developer-Tools (einschließlich git
) zu installieren.
Wenn Ihre BASH-Version 3 oder älter ist, lädt das Skript die Quellversion 5+ von BASH herunter, erstellt sie und installiert sie in /usr/local/bin/bash
. Für diesen Schritt ist möglicherweise SUDO erforderlich.
Unter OS-X installiert das Skript Homebrew unter OS-X, sofern es noch nicht vorhanden ist.
Sobald Brew installiert ist, werden die Brew-Pakete coreutils
und gnu-sed
installiert, da beide erforderlich sind und von Bashmatic verwendet werden.
Das Skript versucht dann, das Bashmatic-Repo in den Bashmatic-Home-Ordner zu git clone
, oder – falls es bereits vorhanden ist – die neuesten Änderungen git pull
.
Wenn Sie schließlich nicht -l
oder --skip-on-login
angeben, überprüft das Skript Ihre Bash-Dot-Dateien und fügt den Hook hinzu, um Bashmatic entweder von ~/.bashrc
oder ~/.bash_profile
zu laden.
Der letzte Teil bedarf einer Erklärung.
Nun können Sie Bashmatic beim Anmelden laden oder auch nicht.
Mit anderen Worten, Sie haben so etwas in Ihrem ~/.bashrc
:
# Let's see if ~/.bashrc mentions Bashmatic:
$ grep bashmatic ~ /.bashrc
[[ -f ~ /.bashmatic/init.sh ]] && source ~ /.bashmatic/init.sh
Sofortiger Zugriff auf über 800 Komfortfunktionen und Helfer von Bashmatic©. Bashmatic wird automatisch aktualisiert, wenn es aus dem Hauptzweig geladen wird.
Ungefähr 134 ms Verzögerung bei der Anmeldung und ein potenzieller Sicherheitsangriffsvektor (z. B. wenn jemand das Repo hackt).
Tipp | Wir haben kürzlich die Ladezeit aller Bashmatic©-Funktionen erheblich verbessert. Zuvor dauerte das Laden von 854 Funktionen fast 900 ms, also fast eine ganze Sekunde. Heute sind es nicht mehr als 180ms: |
❯ time source init.sh
real 0m0.134s
user 0m0.078s
sys 0m0.074s
Wenn der obige Befehl die oben angezeigte Ausgabe anzeigt, werden beim grep Ihres bashrc
oder zshrc
alle Bashmatic-Funktionen in Ihre Shell geladen. Das könnte zum Beispiel sehr praktisch sein,
Sie könnten ruby.install-ruby-with-readline-and-openssl 3.0.1
aufrufen, um Ruby zu installieren.
Sie können gem.remote.version sym
aufrufen, um zu sehen, dass die letzte veröffentlichte Version von sym
3.0.1
ist.
Sie können ein Array von Werten mit array.join ", " apple pear orange
verbinden
HINWEIS: Das Laden von Bashmatic dauert normalerweise nicht länger als 200–300 ms. Allerdings möchten Sie möglicherweise nicht so viele Shell-Funktionen in Ihrer Umgebung haben. In diesem Fall können Sie den Login-Hook überspringen, indem Sie -l
oder --skip-on-login
übergeben.
Installieren Sie es mit:
bash -c " $( curl -fsSL https://bashmatic.re1.re ) ; bashmatic-install -l "
In diesem Fall empfehlen wir, dass Sie einfach den bin
-Ordner der Bashmatic zum $PATH
hinzufügen.
Zum Beispiel:
# ~/.bashrc
export BASHMATIC_HOME= " ${HOME} /.bashmatic "
export PATH= " ${BASHMATIC_HOME} /bin: ${PATH} "
Dann haben Sie Zugriff auf das ausführbare Skript bashmatic
, das *als „Gateway“ zu allen bashmatic-Funktionen verwendet werden kann:
Sie verwenden es wie folgt: bashmatic <function> <args>
:
Wichtig | Bei den folgenden Beispielen wird davon ausgegangen, dass Sie den PATH so festgelegt haben, dass er ${HOME}/.bashmatic/bin enthält |
# Eg, if as in the previous example you sourced in Bashmatic:
$ bashmatic.version
2.1.2
# If you have not, you can still invoke 'bashmatic.version':
$ bashmatic version
# Or another function, 'array.join' — if you sourced in init.sh:
$ array.join ' | ' hello goodbye
hello | goodbye
# Or using the script:
$ bashmatic array.join ' | ' hello goodbye
hello | goodbye
Wenn Sie eine Fehlermeldung erhalten, wurde Bashmatic® möglicherweise nicht ordnungsgemäß installiert.
curl
nicht verfügbar ist Für Situationen, in denen curl
möglicherweise nicht verfügbar ist, bieten Sie daher die folgende Shell-Funktion an, die auf Linux/Ubuntu- und OS-X-basierten Systemen funktioniert. Es kann problemlos mit neuen Betriebssystemen erweitert werden:
# @description Installs bashmatic dependency into the ~/.bashmatic folder.
function install_bashmatic() {
# install bashmatic using https:// URL instead of git@
command -v curl > /dev/null || {
local OS= $( uname -s )
local code
case ${OS} in
Linux)
apt-get update -yq && apt-get install curl -yqq
code= $?
(( code )) && sudo apt-get update -yq && sudo apt-get install curl -yqq
;;
Darwin)
command -v brew > /dev/null || /bin/bash -c " $( curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh ) "
hash -r
brew install curl
;;
* )
echo " OS ${OS} is not supported. "
;;
esac
}
[[ -d ~ /.bashmatic ]] || bash -c " $( curl -fsSL https://bashmatic.re1.re ) ; bashmatic-install -q -m https "
return 0
}
Um die Bandbreite der verfügbaren Funktionen zu entdecken, geben Sie den folgenden Befehl ein, um alle importierten Shell-Funktionen anzuzeigen:
# List all functions using 4-column mode; print top 5 lines.
❯ bashmatic functions 4 | head -5
7z.a db.psql.connect.db-set hl.yellow-on-gray run.inspect-variables
7z.install db.psql.connect.db-set hr run.inspect-variables-
7z.unzip db.psql.connect.just-d hr.colored run.inspect.set-skip-f
7z.x db.psql.connect.table- http.servers run.on-error.ask-is-en
7z.zip db.psql.connect.table- https.servers run.print-command
# or, to get the count of all functions, use 1 column output:
$ bashmatic functions 1 | wc -l
773
Um Bashmatic manuell zu installieren, befolgen Sie diese Schritte (Sie können BASHMATIC_HOME
gerne ändern, wenn Sie möchten):
export BASHMATIC_HOME= " ${HOME} /.bashmatic "
test -d " ${BASHMATIC_HOME} " ||
git clone https://github.com/kigster/bashmatic.git " ${BASHMATIC_HOME} "
cd " ${BASHMATIC_HOME} " && ./bin/bashmatic-install -v
cd - > /dev/null
Manchmal können Sie git
möglicherweise nicht verwenden (ich habe Probleme gesehen, die von der Nichtübereinstimmung lokaler Zertifikate bis hin zu alten Versionen von git und mehr reichen), aber vielleicht können Sie es mit curl
herunterladen. In diesem Fall können Sie nach dem neuesten Tag suchen (ersetzen Sie unten „v1.6.0“ durch diesen Tag) und dann diesen Befehl ausführen:
export BASHMATIC_TAG= " v2.4.1 "
set -e
cd ${HOME}
curl --insecure -fSsl
https://codeload.github.com/kigster/bashmatic/tar.gz/ ${BASHMATIC_TAG}
-o bashmatic.tar.gz
rm -rf .bashmatic && tar xvzf bashmatic.tar.gz && mv bashmatic- ${BASHMATIC_TAG} .bashmatic
source ~ /.bashmatic/init.sh
cd ${HOME} /.bashmatic && ./bin/bashmatic-install -v
cd ~ > /dev/null
Sie können Bashmatic® jederzeit mit der Funktion bashmatic.reload
neu laden. Dadurch wird lediglich die Beschaffung von ${BASHMATIC_HOME}/init.sh
durchgeführt.
Wenn Sie Bashmatic installieren, wird Ihrem ~/.bash_profile
automatisch ein Hook hinzugefügt. Wenn Sie jedoch ZSH verwenden, müssen Sie ihn möglicherweise (vorerst) manuell hinzufügen.
Fügen Sie Ihrer ~/.zshrc
Datei Folgendes hinzu:
[[ -f ~ /.bashmatic/init.sh ]] && source " ~/.bashmatic/init.sh "
Notiz | Das Laden der gesamten Bibliothek auf ZSH und einem aktuellen MacBook Pro dauert weniger als 300 ms. |
Makefile
Das Makefile
der obersten Ebene wird hauptsächlich aus praktischen Gründen bereitgestellt, da es einige häufige Aufgaben enthält, die von Bashmatic-Autoren in der Entwicklung verwendet werden, sowie andere, die für jeden nützlich sind, der Bashmatic erforscht.
Sie können make help
ausführen und die verfügbaren Ziele lesen:
❯ make
help Prints help message auto-generated from the comments.
open-readme Open README.pdf in the system viewer
docker-build Builds the Docker image with the tooling inside
docker-run-bash Drops you into a BASH session with Bashmatic Loaded
docker-run-fish Drops you into a FISH session with Bashmatic Loaded
docker-run-zsh Drops you into a ZSH session with Bashmatic Loaded
docker-run Drops you into a BASH session
file-stats-git Print all files known to ` git ls-files ` command
file-stats-local Print all non-test files and run ` file ` utility on them.
install-dev Installs the Development Tooling using dev-setup script
install-ruby Installs the Bashmatic default Ruby version using rbenv
install install BashMatic Locally in ~ /.bashmatic
release Make a new release named after the latest tag
tag Tag this commit with .version and push to remote
setup Run the comprehensive development setup on this machine
shell-files Lists every single checked in SHELL file in this repo
test Run fully automated test suite based on Bats
test-parallel Run the fully auto-g mated test suite
update-changelog Auto-generate the doc/CHANGELOG (requires GITHUB_TOKEN env var set)
update-functions Auto-generate doc/FUNCTIONS index at doc/FUNCTIONS.adoc/pdf
update-readme Re-generate the PDF version of the README
update-usage Auto-generate doc/USAGE documentation from lib shell files,
to doc/USAGE.adoc/pdf
update Runs all update targets to regenerate all PDF docs and the
Changelog.
Ich habe Leerzeichen um eine Reihe allgemeiner Aufgaben herum eingefügt, die für Sie nützlich sein könnten.
Werfen wir einen kurzen Blick auf das, was hier verfügbar ist.
Makefile wird zur Erleichterung der Ausführung der häufigsten Aufgaben und zur Vereinfachung der Ausführung einiger komplexerer Aufgaben bereitgestellt, bei denen das Merken vieler Argumente erforderlich ist, z. B. make setup
. Möglicherweise möchten Sie das Makefile aus mehreren Gründen verwenden:
make open-readme
Diese Aufgabe öffnet die PDF-Version der README-Datei in Ihrem PDF-System-Viewer.
make install
Dadurch können Sie das Bashmatic Framework lokal installieren. Es führt einfach bin/bashmatic-install
-Skript aus. Dies fügt höchstens Hooks zu Ihren Shell-Init-Dateien hinzu, sodass Bashmatic beim Anmelden geladen wird.
make setup
Diese Aufgabe ruft das Skript bin/dev-setup
unter der Haube auf, sodass Sie das Entwickler-Setup Ihres lokalen Computers für die Softwareentwicklung einrichten können.
Dieses Skript bietet nun eine sehr umfangreiche CLI-Schnittstelle, sodass Sie das Skript entweder direkt ausführen und eine detaillierte Kontrolle darüber haben können, was es tut, oder Sie können es mit Standard-Flags über dieses Make-Ziel ausführen.
Dieses spezielle Make-Ziel führt bin/dev-setup
Skript mit den folgenden Aktionen aus:
dev, cpp, fonts, gnu, go, java, js, load-balancing, postgres, ruby
make test
und make test-parallel
sind beide für Bashmatic-Entwickler und Mitwirkende gedacht. Im Abschnitt „Mitwirken“ erfahren Sie, wie Sie die UNIT-Tests ausführen und was Sie von ihnen erwarten können.
make update
ist die Aufgabe, die von Bibliotheksmitwirkenden ausgeführt werden sollte, nachdem sie ihre Änderungen vorgenommen haben und möchten, dass die automatisch generierte Dokumentation die neu hinzugefügten Funktionen usw. widerspiegelt. Diese Aufgabe generiert auch den Funktionsindex und generiert die neuesten PDFs der README
, USAGE
oder CHANGELOG
-Dateien neu.
Notiz | Für die Übermittlung einer Pull-Anfrage ist die Ausführung make update erforderlich. |
Bashmatic wird mit einer Docker-Datei geliefert, die zum Ausführen von Tests oder zur manuellen Validierung verschiedener Funktionen unter Linux und möglicherweise zum Experimentieren verwendet werden kann.
Führen Sie make docker-build
aus, um ein Docker-Image bashmatic:latest
zu erstellen.
Führen Sie make docker-run-bash
(oder …-zsh
oder …-fish
) aus, um einen Container mit Ihrer bevorzugten Shell zu starten, und überprüfen Sie dann, ob Ihre Funktionen wie erwartet funktionieren.
Beachten Sie, dass ich dadurch direkt zur Eingabeaufforderung der Linux-Umgebung weitergeleitet wurde, obwohl Bashmatic bereits installiert war.
Warum brauchen wir ein weiteres BASH-Framework?
BASH ist bekanntermaßen zu ausführlich und unzuverlässig. Da sind wir anderer Meinung. Aus diesem Grund wollten wir diese README-Datei mit ein paar Beispielen beginnen.
Schauen Sie sich einfach dieses kleine, fünfzeilige Skript an:
#! /usr/bin/env bash
source ${BASHMATIC_HOME} /init.sh
h2 " Installing ruby gem sym and brew package curl... "
" Please standby... "
gem.install " sym " && brew.install.package " curl " &&
success " installed sym ruby gem, version $( gem.version sym ) "
Das Ergebnis ist diese detaillierte und, seien wir ehrlich, wunderschöne ASCII-Ausgabe:
Sagen Sie mir, Sie sind überhaupt nicht begeistert davon, sofort mit dem Schreiben komplexer Installationsabläufe in BASH zu beginnen?
Sie erhalten nicht nur eine hübsche Ausgabe, sondern können auch jeden ausgeführten Befehl, seinen Exit-Status, ob er erfolgreich war (grün/rot) sowie die verdammte Dauer jedes Befehls in Millisekunden anzeigen. Was kann man daran nicht mögen?!?
Immer noch nicht überzeugt?
Schauen Sie sich als nächstes ein umfassenderes Beispiel an.
In diesem Beispiel laden wir die Binärdateien kubectl
und minikube
herunter und installieren sie in /usr/local/bin
Wir haben ein Beispielskript in examples/k8s-installer.sh
bereitgestellt. Bitte klicken Sie und werfen Sie einen Blick auf die Quelle.
Hier ist die Ausgabe der Ausführung dieses Skripts:
Warum halten wir diese Art von Installationsprogramm für ziemlich großartig, verglichen mit einem stillen, aber tödlichen Shell-Skript, das „Jim-in-the-corner“ geschrieben hat und das jetzt niemand mehr versteht?
Weil:
Das Skript gibt sich alle Mühe, dem Benutzer übermäßig zu kommunizieren, was es tut.
Es ermöglicht und erinnert an einen sauberen Fluchtweg (Strg-C)
Es teilt den genauen Befehl, den es ausführt, und seine Zeitvorgaben mit, sodass Sie Probleme wie Netzwerküberlastungen oder Netzwerkadressen usw. im Auge behalten können.
Für jeden Befehl wird der Exit-Code „0“ in Grün angezeigt. Sollte einer der Befehle fehlschlagen, wird dies rot angezeigt.
Der Quellcode ist knapp, explizit und leicht zu lesen. Es gibt keine Magie. Nur BASH-Funktionen.
Notiz | Wenn Sie ein BASH-Installationsprogramm erstellen müssen, bietet Bashmatic® einige unglaubliche Zeitersparnisse. |
Kehren wir zur Erde zurück und sprechen darüber, wie man Bashmatic installiert und wie man es gleich danach im Detail verwendet.
Dieses letzte und funktionsreichste Beispiel ist nicht nur ein Beispiel – es ist ein funktionierendes Tool, mit dem Sie eine Reihe von Entwicklerabhängigkeiten auf Ihrem Apple Laptop installieren können .
Notiz | Das Skript basiert im Hintergrund auf Homebrew und würde daher unter Linux oder Windows nicht funktionieren (es sei denn, Brew wird dorthin portiert). |
Es befindet sich in bin/dev-setup
und verfügt über viele CLI-Flags:
Im folgenden Beispiel verwenden wir dev-setup
-Skript, um Folgendes zu installieren:
Entwicklungstools
PostgreSQL
Redis
Im Speicher gespeichert
Ruby 2.7.1
NodeJS/NPM/Garn
Obwohl dies eine lange Liste ist, können wir alles mit einem Befehl installieren.
Wir führen dies in einem Ordner aus, in dem unsere Anwendung installiert ist, denn dann wird die Ruby-Version automatisch aus unserer .ruby-version
Datei erkannt und zusätzlich zur Installation aller Abhängigkeiten führt das Skript auch bundle install
und npm install
aus (oder yarn install
). Nicht schlecht, oder?
${BASHMATIC_HOME} /bin/dev-setup
-g " ruby postgres mysql caching js monitoring "
-r $( cat .ruby-version )
-p 9.5 # use PostgreSQL version 9.5
-m 5.6 # use MySQL version 5.6
Diese kompakte Befehlszeile installiert eine Menge Dinge, aber verlassen Sie sich nicht auf unser Wort – führen Sie sie selbst aus. Oder genießen Sie zumindest diesen extrem langen Screenshot :)
Dies ist ein großartiges Tool, das die Ausgabe fast aller anderen Tools einfärbt.
Führen Sie es folgendermaßen aus:
${BASHMATIC_HOME} /bin/install-grc
Möglicherweise müssen Sie Ihr Passwort für SUDO eingeben.
Sobald der Vorgang abgeschlossen ist, führen Sie source ~/.bashrc
(oder die von Ihnen verwendete Shell) aus und geben Sie etwas wie ls -al
oder netstat -rn
oder ping 1.1.1.1
ein. Beachten Sie, dass alles oben Genannte schön gefärbt ist.
db
-Verknüpfung für Datenbank-Dienstprogramme und db top
Wenn Sie PostgreSQL verwenden, haben Sie Glück! Bashmatic enthält zahlreiche Hilfsprogramme für das CLI-Dienstprogramm psql
von PostreSQL.
Notiz | Bevor Sie beginnen, empfehlen wir Ihnen, die Datei .psqlrc aus dem conf -Verzeichnis von Bashmatic in Ihrem Home-Ordner zu installieren. Diese Datei ist zwar nicht erforderlich, richtet aber Ihre Eingabeaufforderung und verschiedene Makros für PostgreSQL ein, die sehr praktisch sind, wenn Sie psql regelmäßig verwenden. |
Was ist db top
überhaupt?
So wie Sie mit dem regulären top
die „Top“-Ressourcen verbrauchenden Prozesse sehen können, die auf Ihrem lokalen System laufen, können Sie mit dbtop
einen sich selbst aktualisierenden Bericht der aktiv laufenden Abfragen auf bis zu drei Datenbankservern gleichzeitig beobachten.
Hier ist der verpixelte Screenshot von dbtop
der mit zwei Live-Datenbanken läuft:
Damit dies funktioniert, müssen Sie zunächst Datenbankverbindungsparameter in einer YAML-Datei definieren, die sich im folgenden PATH befindet: ~/.db/database.yml
.
So sollte die Datei organisiert sein (wenn Sie jemals Ruby on Rails verwendet haben, sollte die Standarddatei config/database.yml
vollständig kompatibel sein):
development :
database : development
username : postgres
host : localhost
password :
staging :
database : staging
username : postgres
host : staging.db.example.com
password :
production :
database : production
username : postgres
host : production.db.example.com
password : " a098098safdaf0998ff79789a798a7sdf "
Angesichts der obigen Datei sollten Sie in der Lage sein, den folgenden Befehl auszuführen, um alle verfügbaren (in der obigen YAML-Datei registrierten) Verbindungen anzuzeigen:
$ db connections
development
staging
production
Sobald das funktioniert, sollten Sie dbtop
ausführen können: