curl
متاحًاMakefile
db
لأدوات قواعد البيانات المساعدة و db top
db
أخرىdb
db connections
للأمر الفرعيdb pga
(على سبيل المثال pg_activity
)bin/tablet
البرنامج النصيbin/specs
المقدمbin/spec -P
Makefile
Makefile
شارات | مسح فوسا | |
---|---|---|
فوسسا | ||
اختبارات سي آي | ||
تثبيت سي آي | ||
ShellCheck | ||
ثرثرة |
|
Bashmatic® هو إطار عمل BASH، مما يعني أنه عبارة عن مجموعة من وظائف BASH (ما يقرب من 900 وظيفة) والتي نأمل أن تجعل برمجة BASH أسهل وأكثر متعة، والأهم من ذلك، ممتعة - نظرًا لتركيز المكتبة على تزويد المطور بـ ردود فعل مستمرة حول ما يحدث أثناء تشغيل البرنامج النصي الذي يستخدم مساعدي Bashmatic.
نصيحة | نقترح عليك التعرف على Bashmatic من نسخة PDF من هذا المستند والتي تعد أفضل بكثير للطباعة.
|
بعد تثبيت المكتبة (الموقع الافتراضي هو ~/.bashmatic
)، أدرك أنه لديك خيار إما:
تحديد مصدر المكتبة تلقائيًا (وجميع الوظائف التي يزيد عددها عن 900+) من ملفات "dotfiles" الخاصة بقشرتك مثل ~/.bash_profile
عن طريق إضافة هذا السطر: source ~/.bashmatic/init.sh
. على كمبيوتر محمول M1 Apple حديث، يضيف هذا إجمالي حوالي 100 مللي ثانية.
أو، يمكنك تخطيه أثناء تهيئة تسجيل الدخول ، وتحميله فقط في الجزء العلوي من البرامج النصية التي تستخدم المكتبة.
حذر | كلا النهجين صالحان تمامًا ولهما إيجابيات وسلبيات. قد يكون تحميل bashmatic في ملفات dotfiles أمرًا محفوفًا بالمخاطر بعض الشيء. بطريقة أو بأخرى، سنوفر لك قريبًا طرقًا للتحقق من أن إصدار bashmatic الذي تقوم بتنزيله هو الإصدار الآمن والصحيح، في كل مرة. |
كل ما سنقوله في هذا الشأن هو أننا ندير عملية تحسين مصادر المكتبة. هنا مثال:
يتأثر أسلوب برمجة Bashmatic® بشدة بلغات Ruby's DSL. إذا ألقيت نظرة سريعة على البرنامج النصي is.sh، فهو يحدد مجموعة من وظائف DSL التي يمكن ربطها بسلسلة مع &&
و ||
لإنشاء رمز مضغوط وموثق ذاتيًا مثل هذا:
[سهم دائري للأسفل]
# 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 " $@ "
لاستخدامها في البرامج النصية الخاصة بك، ستحتاج أولاً إلى دراسة الأمثلة المقدمة أدناه، والاستفادة من كل وحدة متاحة ضمن lib
.
ملاحظة أخيرة، - بمجرد تثبيت Bashmatic وتحميله بواسطة ملفات init الخاصة بـ Shell، يمكنك كتابة is.<tab><tab>
لمعرفة الوظائف المتاحة لك والتي تبدأ is
. تحدد كل وحدة ضمن lib
عادةً الوظائف العامة بدءًا من اسم الملف. على سبيل المثال، تبدأ الوظائف في array.sh
عادةً بـ array.<something>.<action>
يقدم Bashmatic® مجموعة كبيرة من الوظائف المساعدة المتزايدة باستمرار لتشغيل الأوامر، وإعادة المحاولة التلقائية، والتكرار، وإطار تنفيذ قياس وقت التشغيل مع run
الوظيفة الرئيسية. هناك أدوات مساعدة لكل مناسبة، بدءًا من رسم المربعات والخطوط والعناوين وحتى إظهار أشرطة التقدم والحصول على مدخلات المستخدم وتثبيت الحزم وغير ذلك الكثير.
ملحوظة | تمت كتابة جزء كبير من الأدوات المساعدة داخل Bashmatic® لنظام التشغيل OS-X، على الرغم من أن العديد من الوظائف المفيدة ستعمل أيضًا في نظام التشغيل Linux. تعمل مجموعة الاختبار بأكملها على Ubuntu. هناك جهد جاري لتحويل الوظائف الخاصة بـ Homebrew إلى مساعدين محايدين لنظام التشغيل مثل package.install والتي من شأنها أن تعمل بشكل جيد على نظام التشغيل Linux. |
ابدأ في استكشاف Bashmatic® أدناه من خلال قسم الأمثلة لدينا. عندما تكون مستعدًا، يمكن العثور على المجموعة الكاملة لوظائف العانة (ما يقرب من 500 منها) في صفحة فهرس الوظائف.
وأخيرًا، لا تقلق، Bashmatic® مفتوح المصدر تمامًا ومجاني الاستخدام والتوسيع. نحن نحب الطريقة التي تبدو بها قليلاً ® :)
إصدار باش 4+
BASH الإصدار 3 (التوافق الجزئي، تم تعطيل بعض الوظائف)
ZSH – اعتبارًا من التحديث الأخير، أصبح Bashmatic متوافقًا بنسبة 90% تقريبًا مع ZSH.
غير مدعوم حاليًا
FISH (على الرغم من أنه يمكنك استخدام Bashmatic عبر مساعد البرنامج النصي bin/bashmatic
، أو ملفاته التنفيذية)
لقد ولد هذا المشروع نتيجة لإدراك بسيط قام به العديد من المهندسين الكبار وذوي الخبرة العالية، وهو:
غالبًا ما يكون من الأسهل استخدام BASH لكتابة أشياء مثل المثبتات العامة، والمعروفة أيضًا باسم برامج الإعداد النصية ، وبرامج التحميل ، والمغلفات لجميع أنواع الوظائف، مثل NPM ، وrbenv ، وتثبيت الأحجار الكريمة، والياقوت، واستخدام AWS، ونشر التعليمات البرمجية، وما إلى ذلك.
تتوافق قيم الإرجاع الخاصة بوظيفة BASH بشكل جيد مع DSL (لغة خاصة بالمجال) حيث يمكن ربط وظائف متعددة بسلسلة منطقية AND &&
وOR ||
لتوفير منطق تنفيذ مضغوط للغاية. والأهم من ذلك أننا نعتقد أن هذا المنطق سهل القراءة والفهم للغاية.
على الرغم من النقاط المذكورة أعلاه، فمن المقبول عمومًا أيضًا ما يلي:
الكثير من نصوص BASH مكتوبة بشكل سيء للغاية ويصعب قراءتها وفهمها.
غالبًا ما يكون من الصعب فهم ما يحدث أثناء تشغيل البرنامج النصي، لأنه إما لا يُخرج أي شيء مفيد، أو أنه يُخرج الكثير جدًا.
عندما تحدث أخطاء BASH، يصدم الجمهور عمومًا ويقرر شخص ما أنه يجب عليه إعادة كتابة نص BASH المكون من 20 سطرًا في C++ أو Go، لأنه حسنًا، إنه نص BASH لعين ولا يعمل.
نصيحة | هدف Bashmatic هو جعل برمجة BASH ممتعة ومتسقة وتوفر الكثير من المخرجات المرئية للمستخدم بحيث لا يكون هناك أي غموض بشأن ما يحدث. |
ربما تكون أسهل طريقة لتثبيت Bashmatic® هي استخدام curl
كما هو موضح أدناه.
أولاً، تأكد من تثبيت Curl، ثم قم بتشغيل which curl
تريد رؤيته. ثم انسخ/ألصق هذا الأمر في جهازك الطرفي.
[السهم لأسفل]
bash -c " $( curl -fsSL https://bashmatic.re1.re ) ; bashmatic-install -q "
[السهم لأعلى]
أين:
-q تعني "هادئ"؛
-v لـ "مطول"
نصيحة | يقوم عنوان URL https://bashmatic.re1.re بإعادة التوجيه إلى رأس البرنامج النصي bin/bashmatic-install في Github Bashmatic Repo. نستخدم عنوان URL هذا حتى نحتفظ بالقدرة على إعادة توجيه التثبيت إلى برنامج نصي مختلف في المستقبل، إذا لزم الأمر. |
إذا كنت تفضل أن تكون قادرًا على فحص البرنامج النصي قبل تنفيذ التعليمات البرمجية التي يتم إرسالها مباشرة عبر الإنترنت، فأنا لا ألومك. أنت حذر وذكي.
بالنسبة للأشخاص مثلك، إليك طريقة أكثر أمانًا لفعل الشيء نفسه:
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
تتيح لك هذه الطريقة فحص البرنامج النصي /tmp/install
قبل تشغيله.
وفيما يلي بعض التفسيرات
يمكنك تثبيت فرع أو علامة Bashmatic عن طريق تمرير علامة -b / --git-branch <tag|branch>
.
يمكنك تمرير الإشارات إلى وظيفة bashmatic-install
للتحكم في كيفية تثبيت Bashmatic ومكان تنزيله منه، بما في ذلك:
-v
أو --verbose
لعرض مخرجات إضافية، أو العكس:
-d
أو --debug
سيطبع مخرجات تصحيح إضافية
-f
أو --force
سيستبدل أي مجلد bashmatic موجود بالمجلد الجديد
-q
أو --quiet
بدون إخراج
-l
أو --skip-on-login
لعدم تثبيت الخطاف الذي يقوم بتحميل Bashmatic عند تسجيل الدخول.
إذا كنت تفضل تثبيت Bashmatic في موقع غير قياسي (الموقع الافتراضي هو ~/.bashmatic
)، فيمكنك استخدام علامة -H PATH
على سبيل المثال، نقوم هنا بتثبيت Bashmatic في وجهة غير افتراضية، أثناء طباعة معلومات مطولة وتصحيح أخطاء إضافية، بالإضافة إلى استخدام -f
(القوة) لاحتمال الكتابة فوق المجلد الوجهة (إذا كان موجودًا بالفعل) مع الخروج من Bashmatic وفقًا إلى علامة v2.4.1
:
bash -c " $( curl -fsSL https://bashmatic.re1.re ) ;
bashmatic-install -d -v -f -b v2.4.1 -H ~/workspace/bashmatic "
إذا كان لديك مفاتيح SSH مثبتة محليًا، وتم تكوين المفتاح العام بحسابك على Github، فقد ترغب في تثبيت Bashmatic باستخدام [email protected]:kigster/bashmatic
Origin، بدلاً من https://github.com/kigster/bashmatic
:
فيما يلي القائمة الكاملة للخيارات التي يقبلها المثبت:
عند تشغيل bash -c "$(curl -fsSL https://bashmatic.re1.re); bashmatic-install"
، يحدث ما يلي عادةً:
يقوم curl
بتنزيل البرنامج النصي bin/bashmatic-install
ويمرره إلى BASH المدمج للتقييم.
بمجرد التقييم، يتم استدعاء الدالة bashmatic-install
، والتي تقوم بالفعل بإجراء التثبيت.
هذه هي الوظيفة التي تقبل الوسائط المذكورة أعلاه.
قد يطلب منك البرنامج النصي كلمة المرور الخاصة بك لتمكين الوصول إلى Sudo - قد يكون هذا مطلوبًا على OS-X لتثبيت أدوات XCode Developer (التي تتضمن git
)
إذا كان إصدار BASH الخاص بك هو 3 أو أقدم، فسيتم تنزيل البرنامج النصي وإنشاءه من مصادر الإصدار 5+ من BASH، وتثبيته في /usr/local/bin/bash
. قد تكون هناك حاجة إلى SUDO لهذه الخطوة.
في نظام التشغيل OS-X، سيقوم البرنامج النصي بتثبيت Homebrew على نظام التشغيل OS-X، إن لم يكن موجودًا بالفعل.
بمجرد تثبيت Brew، يتم تثبيت حزم المشروب coreutils
و gnu-sed
، حيث أن كلاهما مطلوب ويعتمد عليه Bashmatic.
سيحاول البرنامج النصي بعد ذلك git clone
مستودع Bashmatic في المجلد الرئيسي لـ Bashmatic، أو - إذا كان موجودًا بالفعل - فسوف git pull
أحدث التغييرات.
أخيرًا، ما لم تحدد -l
أو --skip-on-login
سيتحقق البرنامج النصي من ملفات bash dot الخاصة بك، وسيضيف الخطاف لتحميل Bashmatic من ~/.bashrc
أو ~/.bash_profile
.
الجزء الأخير الخاص بي يتطلب بعض التوضيح.
الآن، قد ترغب أو لا ترغب في تحميل Bashmatic عند تسجيل الدخول.
بمعنى آخر، لديك شيء مثل هذا في ~/.bashrc
الخاص بك :
# Let's see if ~/.bashrc mentions Bashmatic:
$ grep bashmatic ~ /.bashrc
[[ -f ~ /.bashmatic/init.sh ]] && source ~ /.bashmatic/init.sh
الوصول الفوري إلى أكثر من 800 وظيفة مريحة يقدمها Bashmatic© ومساعديه. سيتم تحديث Bashmatic تلقائيًا عند تحميله من الفرع الرئيسي.
حوالي 134 مللي ثانية تأخير عند تسجيل الدخول، وناقل هجوم أمني محتمل (على سبيل المثال، إذا قام شخص ما باختراق الريبو).
نصيحة | لقد قمنا مؤخرًا بتحسين وقت التحميل لكامل وظائف Bashmatic© بشكل كبير. في السابق، كان الأمر يستغرق ما يقرب من 900 مللي ثانية، أي ما يقرب من ثانية كاملة لتحميل 854 وظيفة. اليوم لا يزيد عن 180 مللي ثانية: |
❯ time source init.sh
real 0m0.134s
user 0m0.078s
sys 0m0.074s
إذا كان الأمر أعلاه يُظهر المخرجات التي تراها أعلاه، فعندما تقوم بدمج bashrc
أو zshrc
، فسيتم تحميل جميع وظائف Bashmatic في الصدفة الخاصة بك. قد يكون هذا مريحًا جدًا، على سبيل المثال،
يمكنك استدعاء ruby.install-ruby-with-readline-and-openssl 3.0.1
لتثبيت Ruby.
يمكنك استدعاء gem.remote.version sym
لمعرفة أن آخر نسخة منشورة من sym
هي 3.0.1
.
يمكنك الانضمام إلى مجموعة من القيم باستخدام array.join ", " apple pear orange
إشعار: لا يستغرق تحميل Bashmatic أكثر من 200-300 مللي ثانية عادةً. ومع ذلك، قد لا ترغب في الحصول على هذا العدد الكبير من وظائف Shell في بيئتك، لذلك في هذه الحالة يمكنك تخطي ربط تسجيل الدخول عن طريق تمرير -l
أو --skip-on-login
.
تثبيته مع:
bash -c " $( curl -fsSL https://bashmatic.re1.re ) ; bashmatic-install -l "
في هذه الحالة نقترح عليك ببساطة إضافة مجلد Bashmatic's bin
إلى المجلد $PATH
.
على سبيل المثال:
# ~/.bashrc
export BASHMATIC_HOME= " ${HOME} /.bashmatic "
export PATH= " ${BASHMATIC_HOME} /bin: ${PATH} "
بعد ذلك سيكون لديك إمكانية الوصول إلى البرنامج النصي القابل للتنفيذ bashmatic
والذي يمكن استخدامه *كـ "بوابة" لجميع الوظائف bashmatic:
يمكنك استخدامه على النحو التالي: bashmatic <function> <args>
:
مهم | تفترض الأمثلة أدناه أنك قمت بتعيين PATH ليشمل ${HOME}/.bashmatic/bin |
# 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
إذا حصلت على خطأ، فربما لم يتم تثبيت Bashmatic® بشكل صحيح.
curl
متاحًا لذلك، بالنسبة للموقف الذي قد لا يكون فيه curl
متاحًا، قم بتوفير وظيفة shell التالية التي تعمل على الأنظمة المستندة إلى Linux/Ubuntu وOS-X. ويمكن توسيعه بسهولة مع أنظمة التشغيل الجديدة:
# @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
}
لاكتشاف نطاق الوظائف المتاحة، اكتب الأمر التالي لرؤية جميع وظائف الصدفة المستوردة:
# 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
لتثبيت Bashmatic يدويًا، اتبع الخطوات التالية (لا تتردد في تغيير BASHMATIC_HOME
إذا أردت):
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
في بعض الأحيان، قد لا تتمكن من استخدام git
(لقد رأيت مشكلات تتراوح من عدم تطابق الشهادة المحلية إلى الإصدارات القديمة من git، والمزيد)، ولكن ربما تتمكن من التنزيل باستخدام curl
. في هذه الحالة، يمكنك البحث عن أحدث علامة (استبدل "v1.6.0" أدناه بهذه العلامة)، ثم قم بإصدار هذا الأمر:
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
يمكنك دائمًا إعادة تحميل Bashmatic® باستخدام وظيفة bashmatic.reload
. يؤدي هذا ببساطة إلى تحديد مصادر ${BASHMATIC_HOME}/init.sh
.
عندما تقوم بتثبيت Bashmatic، فإنه يضيف تلقائيًا رابطًا إلى ملف ~/.bash_profile
الخاص بك، ولكن إذا كنت تستخدم ZSH، فقد تحتاج إلى إضافته يدويًا (في الوقت الحالي).
أضف ما يلي إلى ملف ~/.zshrc
الخاص بك:
[[ -f ~ /.bashmatic/init.sh ]] && source " ~/.bashmatic/init.sh "
ملحوظة | يستغرق تحميل المكتبة بأكملها أقل من 300 مللي ثانية على ZSH وجهاز MacBook Pro حديث. |
Makefile
يتم توفير Makefile
ذي المستوى الأعلى في الغالب كوسيلة راحة لأنه يتضمن بعض المهام الشائعة المستخدمة في التطوير بواسطة مؤلف (مؤلفين) Bashmatic، بالإضافة إلى مهام أخرى مفيدة لأي شخص يستكشف Bashmatic.
يمكنك تشغيل make help
وقراءة الأهداف المتاحة:
❯ 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.
لقد أضفت مسافات بيضاء حول مجموعة من المهام الشائعة التي قد تجدها مفيدة.
دعونا نلقي نظرة سريعة على ما هو متاح هنا.
يتم توفير Makefile لتسهيل تشغيل المهام الأكثر شيوعًا ولتبسيط تشغيل بعض المهام الأكثر تعقيدًا التي تتطلب تذكر العديد من الوسائط، مثل make setup
. قد ترغب في استخدام Makefile لعدة أسباب:
make open-readme
تفتح هذه المهام إصدار PDF من الملف README في عارض نظام PDF الخاص بك.
make install
يتيح لك هذا تثبيت Bashmatic Framework محليًا. إنه ببساطة يقوم بتشغيل البرنامج النصي bin/bashmatic-install
. سيؤدي هذا على الأكثر إلى إضافة خطافات إلى ملفات Shell init الخاصة بك بحيث يتم تحميل Bashmatic عند تسجيل الدخول.
make setup
تستدعي هذه المهمة البرنامج النصي bin/dev-setup
الموجود أسفل الغطاء، بحيث يمكنك إعداد إعداد مطور الكمبيوتر المحلي لديك لتطوير البرامج.
الآن، يقدم هذا البرنامج النصي واجهة CLI غنية جدًا، بحيث يمكنك إما تشغيل البرنامج النصي مباشرةً والحصول على تحكم دقيق في ما يفعله، أو يمكنك تشغيله باستخدام العلامات الافتراضية عبر هدف الإنشاء هذا.
يقوم هذا الهدف المحدد بتشغيل البرنامج النصي bin/dev-setup
مع الإجراءات التالية:
dev, cpp, fonts, gnu, go, java, js, load-balancing, postgres, ruby
make test
make test-parallel
كلاهما مخصص للمطورين والمساهمين الباشميين. يرجى الاطلاع على قسم المساهمة حول كيفية التشغيل وما يمكن توقعه من اختبارات UNIT.
make update
هي المهمة التي يجب تشغيلها بواسطة المساهمين في المكتبة بعد قيامهم بإجراء تغييراتهم ويريدون أن تعكس الوثائق التي تم إنشاؤها تلقائيًا الوظائف الجديدة المضافة وما إلى ذلك وما إلى ذلك. تقوم هذه المهام أيضًا بإنشاء فهرس الوظائف، وإعادة إنشاء أحدث ملفات PDF الخاصة بملفات README
أو USAGE
أو CHANGELOG
.
ملحوظة | مطلوب تشغيل make update لتقديم أي طلب سحب. |
يأتي Bashmatic مزودًا بملف Dockerfile الذي يمكن استخدامه لإجراء الاختبارات أو التحقق يدويًا من صحة الوظائف المختلفة في نظام التشغيل Linux، وربما للتجربة.
قم بتشغيل make docker-build
لإنشاء صورة عامل إرساء bashmatic:latest
.
قم بتشغيل make docker-run-bash
(أو …-zsh
أو …-fish
) لبدء حاوية مع الصدفة المفضلة لديك، ثم التحقق من صحة وظائفك كما هو متوقع.
لاحظ كيف أوصلني هذا مباشرة إلى موجه بيئة Linux مع تثبيت Bashmatic بالفعل.
لماذا نحتاج إلى إطار BASH آخر؟
من المعروف أن BASH مطول للغاية وغير موثوق به. نرجو أن نختلف. ولهذا السبب أردنا أن نبدأ هذا الملف التمهيدي (README) ببعض الأمثلة.
ما عليك سوى إلقاء نظرة على هذا النص الصغير المكون من خمسة أسطر:
#! /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 ) "
النتائج في هذا التفصيل، ولنكن صادقين، مخرجات ASCII الرائعة :
أخبرني أنك لست متحمسًا على الإطلاق لبدء كتابة عمليات التثبيت المعقدة في BASH على الفور؟
لا تحصل على مخرجات جميلة فحسب، بل يمكنك أيضًا تنفيذ كل أمر، وحالة الخروج، وما إذا كان ناجحًا (أخضر/أحمر)، بالإضافة إلى المدة الدموية لكل أمر بالمللي ثانية. ما الذي لا يعجبك؟!؟
لا تزال غير مقتنع؟
ألق نظرة على مثال أكثر شمولاً بعد ذلك.
في هذا المثال، سنقوم بتنزيل وتثبيت ثنائيات kubectl
و minikube
الثنائيات في /usr/local/bin
لقد قدمنا مثالًا للبرنامج النصي في examples/k8s-installer.sh
. الرجاء الضغط وإلقاء نظرة على المصدر.
هنا هو الناتج من تشغيل هذا البرنامج النصي:
لماذا نعتقد أن هذا النوع من أدوات التثبيت رائع جدًا، مقارنةً بنص الصدفة الصامت ولكن المميت الذي كتبه "Jim-in-the-corn" والآن لا أحد يفهمه؟
لأن:
يبذل البرنامج النصي قصارى جهده للإفراط في إيصال ما يفعله للمستخدم.
يسمح ويذكر بإجازة نظيفة (Ctrl-C)
فهو يشارك الأمر الدقيق الذي يقوم بتشغيله وتوقيتاته حتى تتمكن من ملاحظة المشكلات مثل ازدحام الشبكة أو عناوين الشبكة، وما إلى ذلك.
يظهر باللون الأخضر رمز الخروج "0" لكل أمر. في حالة فشل أي من الأوامر، ستراه باللون الأحمر.
كود مصدره مقتضب وصريح وسهل القراءة. لا يوجد سحر. وظائف BASH فقط.
ملحوظة | إذا كنت بحاجة إلى إنشاء برنامج تثبيت BASH، فإن Bashmatic® يوفر بعض الوقت المذهل. |
دعنا نعود إلى الأرض، ونتحدث عن كيفية تثبيت Bashmatic، وكيفية استخدامه بمزيد من التفاصيل بعد ذلك مباشرة.
هذا المثال الأخير والأكثر ثراءً بالميزات ليس مجرد مثال - فهو أداة عمل يمكن استخدامها لتثبيت مجموعة من تبعيات المطورين على كمبيوتر Apple المحمول الخاص بك .
ملحوظة | يعتمد البرنامج النصي على Homebrew خلف الكواليس، وبالتالي لن يعمل على Linux أو Windows (ما لم يتم نقل Brew إلى هناك). |
إنه موجود في bin/dev-setup
ويحتوي على العديد من علامات CLI:
في المثال أدناه، سنستخدم البرنامج النصي dev-setup
لتثبيت ما يلي:
أدوات التطوير
PostgreSQL
ريديس
ميمكاشد
روبي 2.7.1
NodeJS/NPM/Yarn
على الرغم من أن هذه القائمة طويلة، إلا أنه يمكننا تثبيتها كلها في أمر واحد.
سنقوم بتشغيل هذا من المجلد حيث تم تثبيت تطبيقنا، لأنه بعد ذلك سيتم اكتشاف إصدار Ruby تلقائيًا من ملف .ruby-version
الخاص بنا، وبالإضافة إلى تثبيت جميع التبعيات، سيقوم البرنامج النصي أيضًا بتشغيل bundle install
وتثبيت npm install
(أو yarn install
). ليس سيئا، هاه؟
${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
يقوم سطر الأوامر المدمج هذا بتثبيت الكثير من الأشياء، لكن لا تأخذ كلامنا على محمل الجد - قم بتشغيله بنفسك. أو على الأقل استمتع بلقطة الشاشة الطويلة جدًا هذه :)
هذه أداة رائعة تعمل على تلوين مخرجات أي أداة أخرى تقريبًا.
تشغيله مثل هذا:
${BASHMATIC_HOME} /bin/install-grc
قد تحتاج إلى إدخال كلمة المرور الخاصة بك لـ SUDO.
بمجرد اكتماله، قم بتشغيل source ~/.bashrc
(أو أي الصدفة التي تستخدمها)، واكتب شيئًا مثل ls -al
أو netstat -rn
أو ping 1.1.1.1
ولاحظ كيف تم تلوين كل ما سبق بشكل جميل.
db
لأدوات قواعد البيانات المساعدة و db top
إذا كنت تستخدم PostgreSQL، فأنت محظوظ! يتضمن Bashmatic العديد من المساعدين لأداة PostreSQL's CLI المساعدة psql
.
ملحوظة | قبل أن تبدأ، نوصي بتثبيت الملف .psqlrc من دليل conf الخاص بـ Bashmatic في المجلد الرئيسي لديك. على الرغم من أنه ليس مطلوبًا، يقوم هذا الملف بإعداد الموجه ووحدات الماكرو المتنوعة لـ PostgreSQL والتي ستكون مفيدة جدًا إذا كنت تستخدم psql بأي انتظام. |
ما هو db top
على أي حال؟
تمامًا كما هو الحال مع top
العادي، يمكنك رؤية العمليات "الأعلى" التي تستهلك الموارد والتي تعمل على نظامك المحلي، مع dbtop
يمكنك مراقبة تقرير يتم تحديثه ذاتيًا للاستعلامات قيد التشغيل بشكل نشط على ما يصل إلى ثلاثة خوادم قاعدة بيانات في نفس الوقت.
فيما يلي لقطة شاشة منقطة لـ dbtop
الذي يعمل على قاعدتي بيانات مباشرتين:
لكي يعمل هذا، يجب عليك أولاً تحديد معلمات اتصال قاعدة البيانات في ملف YAML الموجود في المسار التالي: ~/.db/database.yml
.
إليك كيفية تنظيم الملف (إذا سبق لك استخدام Ruby on Rails، فيجب أن يكون الملف القياسي config/database.yml
متوافقًا تمامًا):
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 "
بالنظر إلى الملف أعلاه، يجب أن تكون قادرًا على تشغيل الأمر التالي لرؤية جميع الاتصالات المتاحة (المسجلة في ملف YAML أعلاه):
$ db connections
development
staging
production
بمجرد نجاح ذلك، يجب أن تكون قادرًا على تشغيل dbtop
: