curl
ไม่พร้อมใช้งานMakefile
db
สำหรับยูทิลิตี้ฐานข้อมูล & db top
db
อื่นๆdb
db connections
คำสั่งย่อยdb pga
(เช่น pg_activity
)bin/tablet
bin/specs
ที่ให้มาbin/spec -P
Makefile
Makefile
ป้าย | การสแกนฟอสซ่า | |
---|---|---|
ฟอสซา | ||
การทดสอบซีไอ | ||
การติดตั้ง CI | ||
เชลล์เช็ค | ||
กิตเตอร์ |
|
Bashmatic® เป็นเฟรมเวิร์ก BASH ซึ่งหมายถึงชุดของฟังก์ชัน BASH (เกือบ 900 ฟังก์ชัน) ที่เราหวังว่าจะทำให้การเขียนโปรแกรม BASH ง่ายขึ้น สนุกสนานยิ่งขึ้น และที่สำคัญกว่านั้นคือ สนุกสนาน - เนื่องจากห้องสมุดมุ่งเน้นที่การให้นักพัฒนาได้รับ ข้อเสนอแนะอย่างต่อเนื่องเกี่ยวกับสิ่งที่เกิดขึ้นในขณะที่สคริปต์ที่ใช้ตัวช่วยของ Bashmatic กำลังทำงานอยู่
เคล็ดลับ | เราขอแนะนำให้คุณเรียนรู้เกี่ยวกับ Bashmatic จาก เอกสารเวอร์ชัน PDF ซึ่งดีกว่ามากสำหรับการพิมพ์
|
หลังจากที่คุณติดตั้งไลบรารี (ตำแหน่งเริ่มต้นคือ ~/.bashmatic
) โปรดทราบว่าคุณมีตัวเลือกอย่างใดอย่างหนึ่ง:
จัดหาไลบรารีโดยอัตโนมัติ (และฟังก์ชันทั้งหมด 900+ รายการ) จากเชลล์ 'dotfiles' ของคุณ เช่น ~/.bash_profile
โดยการเพิ่มบรรทัดนี้: source ~/.bashmatic/init.sh
ในแล็ปท็อป M1 Apple ล่าสุด จะเพิ่มทั้งหมดประมาณ 100ms
หรือสามารถ ข้ามไปได้ในระหว่างการเริ่มต้นการเข้าสู่ระบบ และโหลดไว้ที่ด้านบนของสคริปต์ที่ใช้ไลบรารีเท่านั้น
คำเตือน | ทั้งสองวิธีนั้นใช้ได้อย่างแน่นอนและมีข้อดีและข้อเสีย การโหลด bashmatic ใน dotfiles ของคุณอาจมีความเสี่ยงเล็กน้อย ไม่ทางใดก็ทางหนึ่ง เราจะจัดเตรียมวิธีการตรวจสอบว่า bashmatic ที่คุณดาวน์โหลดนั้นเป็นเวอร์ชันที่ปลอดภัยและถูกต้องทุกครั้ง |
ทั้งหมดที่เราจะพูดเกี่ยวกับเรื่องนี้คือเราจัดการเพิ่มประสิทธิภาพจากการจัดหาไลบรารี นี่คือตัวอย่าง:
รูปแบบการเขียนโปรแกรมของ Bashmatic® ได้รับอิทธิพลอย่างมากจากภาษา DSL ของ Ruby หากคุณดูสคริปต์ 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 ของเชลล์แล้ว คุณสามารถพิมพ์ is.<tab><tab>
เพื่อดูว่ามีฟังก์ชันใดบ้างที่ขึ้นต้นด้วย is
. โดยทั่วไปแต่ละโมดูลภายใต้ lib
จะกำหนดฟังก์ชันสาธารณะโดยขึ้นต้นด้วยชื่อของไฟล์ เช่น ฟังก์ชันใน array.sh
มักจะเริ่มต้นด้วย array.<something>.<action>
Bashmatic® นำเสนอฟังก์ชันตัวช่วยที่เพิ่มมากขึ้นเรื่อยๆ สำหรับการรันคำสั่ง การลองใหม่อัตโนมัติ ทำซ้ำได้ และเฟรมเวิร์กการดำเนินการวัดรันไทม์พร้อมฟังก์ชันหลัก run
มีตัวช่วยสำหรับทุกโอกาส ตั้งแต่กล่องวาดรูป เส้น ส่วนหัว ไปจนถึงการแสดงแถบความคืบหน้า รับข้อมูลจากผู้ใช้ การติดตั้งแพ็คเกจ และอื่นๆ อีกมากมาย
บันทึก | ส่วนช่วยเหลือที่ดีภายใน Bashmatic® นั้นเขียนขึ้นสำหรับ OS-X แม้ว่าฟังก์ชันที่มีประโยชน์มากมายจะทำงานบน linux ก็ตาม ชุดทดสอบทั้งหมดของเราทำงานบน Ubuntu มีความพยายามในการแปลงฟังก์ชันเฉพาะของ Homebrew เป็นตัวช่วยที่เป็นกลางกับระบบปฏิบัติการ เช่น package.install ที่จะทำงานได้ดีพอๆ กันบน linux |
เริ่มสำรวจ Bashmatic® ด้านล่างด้วยส่วนตัวอย่างของเรา เมื่อคุณพร้อม คุณจะพบฟังก์ชัน pubic ทั้งชุด (เกือบ 500 รายการ) ในหน้าดัชนีฟังก์ชัน
และสุดท้าย ไม่ต้องกังวล Bashmatic® เป็นโอเพ่นซอร์สโดยสมบูรณ์ ใช้งานและขยายได้ฟรี เราก็ชอบรูปลักษณ์ที่มี ® นิดหน่อย :)
ทุบตีเวอร์ชัน 4+
BASH เวอร์ชัน 3 (ความเข้ากันได้บางส่วน ฟังก์ชันบางอย่างถูกปิดใช้งาน)
ZSH - ณ การอัปเดตล่าสุด Bashmatic เข้ากันได้กับ ZSH เกือบ 90%
ไม่รองรับในขณะนี้
FISH (แม้ว่าคุณจะสามารถใช้ Bashmatic ผ่านทางตัวช่วยสคริปต์ bin/bashmatic
หรือไฟล์ปฏิบัติการได้)
โครงการนี้เกิดจากการตระหนักรู้ที่เรียบง่ายของวิศวกรอาวุโสและมีประสบการณ์สูงหลายคนว่า:
มักจะง่ายกว่าที่จะใช้ BASH ในการเขียนสิ่งต่าง ๆ เช่น universal installers หรือที่เรียกว่า สคริปต์การตั้งค่า , uploaders , wrapper สำหรับฟังก์ชันทุกประเภท เช่น NPM , rbenv , การติดตั้ง gems, rubies, การใช้ AWS, การปรับใช้โค้ด ฯลฯ
ค่าที่ส่งคืนของฟังก์ชัน BASH เหมาะอย่างยิ่งกับ DSL ขนาดกะทัดรัด (ภาษาเฉพาะโดเมน) ซึ่งหลายฟังก์ชันสามารถเชื่อมโยงกันด้วยตรรกะ AND &&
และ OR ||
เพื่อให้มีตรรกะการดำเนินการที่กะทัดรัดมาก สิ่งสำคัญที่สุดคือ เราคิดว่าตรรกะนี้ อ่านและเข้าใจง่ายมาก
แม้จะมีประเด็นข้างต้น แต่ก็เป็นที่ยอมรับกันโดยทั่วไปว่า:
สคริปต์ BASH จำนวนมากเขียนได้แย่มาก และอ่านและทำความเข้าใจได้ยาก
มักจะเป็นเรื่องยากที่จะเข้าใจว่าเกิดอะไรขึ้นในขณะที่สคริปต์กำลังทำงานอยู่ เพราะสคริปต์ไม่ได้ส่งออกสิ่งที่มีประโยชน์ หรือส่งออกมากเกินไป
เมื่อข้อผิดพลาด BASH เกิดขึ้น โดยทั่วไปเรื่องไร้สาระจะโจมตีแฟน ๆ และมีคนตัดสินใจว่าพวกเขาควรเขียนสคริปต์ BASH 20 บรรทัดใหม่ใน C ++ หรือ Go เพราะมันเป็นสคริปต์ BASH ที่น่ารังเกียจและมันก็ใช้งานไม่ได้
เคล็ดลับ | เป้าหมายของ Bashmatic คือการทำให้การเขียนโปรแกรม BASH ทั้งสนุก สม่ำเสมอ และให้ผลลัพธ์ที่มองเห็นได้มากมายแก่ผู้ใช้ เพื่อไม่ให้มีความลึกลับเกี่ยวกับสิ่งที่เกิดขึ้น |
บางทีวิธีที่ง่ายที่สุดในการติดตั้ง Bashmatic® คือการใช้ curl
ดังที่แสดงด้านล่าง
ขั้นแรก ตรวจสอบให้แน่ใจว่าคุณได้ติดตั้ง Curl แล้ว เรียกใช้ which curl
เพื่อดู จากนั้นคัดลอก/วางคำสั่งนี้ลงใน Terminal ของคุณ
[ลูกศรลง]
bash -c " $( curl -fsSL https://bashmatic.re1.re ) ; bashmatic-install -q "
[ลูกศรขึ้น]
ที่ไหน:
-q ย่อมาจาก "เงียบ";
-v สำหรับ "รายละเอียด"
เคล็ดลับ | URL https://bashmatic.re1.re เปลี่ยนเส้นทางไปที่ HEAD ของสคริปต์ 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
เพื่อไม่ให้ติดตั้ง hook ที่โหลด 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
เริ่มต้น 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 แล้ว จะมีการติดตั้งแพ็คเกจ brew coreutils
และ gnu-sed
เนื่องจาก Bashmatic จำเป็นต้องใช้ทั้งสองอย่างและพึ่งพา
จากนั้นสคริปต์จะพยายาม git clone
bashmatic repo ลงในโฟลเดอร์โฮมของ Bashmatic หรือ - หากมีอยู่แล้ว - มันจะ git pull
การเปลี่ยนแปลงล่าสุด
สุดท้ายนี้ เว้นแต่คุณจะระบุ -l
หรือ --skip-on-login
สคริปต์จะตรวจสอบไฟล์ bash dot ของคุณ และจะเพิ่ม hook เพื่อโหลด 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 มิลลิวินาที และเวกเตอร์การโจมตีด้านความปลอดภัยที่อาจเกิดขึ้น (เช่น หากมีผู้แฮ็ก repo)
เคล็ดลับ | เมื่อเร็วๆ นี้ เราได้ปรับปรุงเวลาในการโหลดฟังก์ชัน Bashmatic© ทั้งหมดอย่างมาก ก่อนหน้านี้ใช้เวลาเกือบ 900 มิลลิวินาที หรือเกือบหนึ่งวินาทีเต็มในการโหลดฟังก์ชัน 854 รายการ วันนี้มันไม่เกิน 180ms: |
❯ time source init.sh
real 0m0.134s
user 0m0.078s
sys 0m0.074s
หากคำสั่งด้านบนแสดงผลลัพธ์ที่คุณเห็นด้านบน เมื่อคุณ grep 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-300ms ดังที่กล่าวไปแล้ว คุณอาจไม่ต้องการมีฟังก์ชันเชลล์มากมายขนาดนี้ในสภาพแวดล้อมของคุณ ดังนั้นในกรณีนี้ คุณสามารถข้ามการเข้าสู่ระบบฮุกได้โดยส่ง -l
หรือ --skip-on-login
ติดตั้งด้วย:
bash -c " $( curl -fsSL https://bashmatic.re1.re ) ; bashmatic-install -l "
ในกรณีนี้ เราขอแนะนำให้คุณเพิ่มโฟลเดอร์ bin
ของ Bashmatic ลงใน $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
ให้เสนอฟังก์ชันเชลล์ต่อไปนี้ที่ทำงานบนระบบที่ใช้ 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 มันจะเพิ่ม hook ให้กับ ~/.bash_profile
ของคุณโดยอัตโนมัติ แต่ถ้าคุณอยู่ใน ZSH คุณอาจต้องเพิ่มด้วยตนเอง (สำหรับตอนนี้)
เพิ่มสิ่งต่อไปนี้ในไฟล์ ~/.zshrc
ของคุณ:
[[ -f ~ /.bashmatic/init.sh ]] && source " ~/.bashmatic/init.sh "
บันทึก | ไลบรารีทั้งหมดใช้เวลาโหลดน้อยกว่า 300ms บน ZSH และ MacBook Pro รุ่นล่าสุด |
Makefile
Makefile
ระดับบนสุดมีไว้เพื่อความสะดวกเป็นส่วนใหญ่ เนื่องจากสรุปงานทั่วไปบางอย่างที่ใช้ในการพัฒนาโดย Bashmatic Author(s) เช่นเดียวกับงานอื่นๆ ที่เป็นประโยชน์สำหรับทุกคนที่สำรวจ 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
งานนี้จะเปิด README เวอร์ชัน PDF ในโปรแกรมดูระบบ PDF ของคุณ
make install
สิ่งนี้ช่วยให้คุณติดตั้ง Bashmatic Framework ในเครื่องได้ มันเพียงแค่รันสคริปต์ bin/bashmatic-install
อย่างมากที่สุดสิ่งนี้จะเพิ่ม hooks ให้กับไฟล์ init ของเชลล์ของคุณเพื่อให้โหลด Bashmatic เมื่อเข้าสู่ระบบ
make setup
งานนี้เรียกใช้สคริปต์ bin/dev-setup
ภายใต้ประทุน เพื่อให้คุณสามารถตั้งค่าการตั้งค่านักพัฒนาคอมพิวเตอร์ในพื้นที่ของคุณสำหรับการพัฒนาซอฟต์แวร์
ตอนนี้ สคริปต์นี้มีอินเทอร์เฟซ CLI ที่สมบูรณ์มาก ดังนั้นคุณสามารถรันสคริปต์ได้โดยตรงและควบคุมสิ่งที่กำลังทำอยู่อย่างละเอียด หรือคุณสามารถรันสคริปต์ด้วยแฟล็กเริ่มต้นผ่านเป้าหมาย make นี้
เป้าหมาย make เฉพาะนี้จะรันสคริปต์ bin/dev-setup
โดยมีการดำเนินการต่อไปนี้:
dev, cpp, fonts, gnu, go, java, js, load-balancing, postgres, ruby
make test
และ make test-parallel
มีไว้สำหรับนักพัฒนาและผู้มีส่วนร่วมของ Bashmatic โปรดดูส่วนการสนับสนุนเกี่ยวกับวิธีการรันและสิ่งที่คาดหวังจากการทดสอบ UNIT
make update
เป็นงานที่ควรจะดำเนินการโดยผู้มีส่วนร่วมห้องสมุด หลังจากที่พวกเขาได้ทำการเปลี่ยนแปลงแล้ว และต้องการให้เอกสารที่สร้างขึ้นโดยอัตโนมัติสะท้อนถึงฟังก์ชันใหม่ที่เพิ่มเข้ามา และอื่นๆ อีกมากมาย งานนี้ยังสร้างดัชนีฟังก์ชัน สร้าง PDF ล่าสุดของไฟล์ README
, USAGE
หรือ CHANGELOG
อีกครั้ง
บันทึก | จำเป็นต้องมีการรัน make update เพื่อส่งคำขอดึงข้อมูล |
Bashmatic มาพร้อมกับ Dockerfile ที่สามารถใช้เพื่อรันการทดสอบหรือ jsut ตรวจสอบฟังก์ชันต่างๆ ด้วยตนเองภายใต้ 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-corner" เขียนไว้แต่ตอนนี้ไม่มีใครเข้าใจ
เพราะ:
สคริปต์พยายามสื่อสารมากเกินไปถึงสิ่งที่ทำกับผู้ใช้
อนุญาตและเตือนเกี่ยวกับการพักผ่อนที่สะอาด (Ctrl-C)
โดยจะแชร์คำสั่งที่รันและกำหนดเวลาที่แน่นอน เพื่อให้คุณสามารถแก้ไขปัญหาต่างๆ เช่น ความแออัดของเครือข่ายหรือที่อยู่เครือข่าย ฯลฯ
โดยจะแสดงเป็นรหัสทางออกสีเขียว '0' ของแต่ละคำสั่ง หากคำสั่งใดล้มเหลว คุณจะเห็นเป็นสีแดง
ซอร์สโค้ดของมันสั้นกระชับ ชัดเจน และอ่านง่าย ไม่มีเวทย์มนตร์ เพียงแค่ฟังก์ชั่น BASH
บันทึก | หากคุณต้องการสร้างตัวติดตั้ง BASH Bashmatic® จะช่วยประหยัดเวลาได้อย่างเหลือเชื่อ |
กลับมาที่ Earth กันเถอะ และพูดคุยเกี่ยวกับวิธีการติดตั้ง Bashmatic และวิธีใช้งานอย่างละเอียดหลังจากนั้น
ตัวอย่างสุดท้ายและเต็มไปด้วยฟีเจอร์ส่วนใหญ่นี้ไม่ได้เป็นเพียงตัวอย่างเท่านั้น แต่ยังเป็นเครื่องมือที่ใช้งานได้จริงซึ่งสามารถใช้เพื่อติดตั้งการพึ่งพาของนักพัฒนาจำนวนมากบน Apple Laptop ของคุณ
บันทึก | สคริปต์อาศัย Homebrew อยู่เบื้องหลังดังนั้นจึงไม่สามารถทำงานบน linux หรือ Windows ได้ (เว้นแต่ว่า Brew จะได้รับการย้ายที่นั่น) |
ตั้งอยู่ใน bin/dev-setup
และมีแฟล็ก CLI มากมาย:
ในตัวอย่างด้านล่าง เราจะใช้สคริปต์ dev-setup
เพื่อติดตั้งสิ่งต่อไปนี้:
เครื่องมือพัฒนา
PostgreSQL
เรดิส
เมคแคช
รูบี้ 2.7.1
NodeJS/NPM/เส้นด้าย
แม้ว่านี่จะเป็นรายการยาว แต่เราสามารถติดตั้งได้ทั้งหมดในคำสั่งเดียว
เราจะเรียกใช้สิ่งนี้จากโฟลเดอร์ที่ติดตั้งแอปพลิเคชันของเรา เนื่องจากเวอร์ชัน 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 มีตัวช่วยมากมายสำหรับยูทิลิตี้ CLI psql
ของ PostreSQL
บันทึก | ก่อนที่คุณจะเริ่มต้น เราขอแนะนำให้คุณติดตั้งไฟล์ .psqlrc จากไดเร็กทอรี conf ของ Bashmatic ลงในโฟลเดอร์หลักของคุณ แม้ว่าจะไม่จำเป็น แต่ไฟล์นี้จะตั้งค่าพรอมต์และมาโครต่างๆ สำหรับ PostgreSQL ซึ่งจะมีประโยชน์มากหากคุณใช้ psql อย่างสม่ำเสมอ |
db top
คืออะไร?
เช่นเดียวกับ top
ทั่วไป คุณจะเห็นกระบวนการที่ใช้ทรัพยากร "บนสุด" ที่ทำงานบนระบบภายในของคุณ ด้วย dbtop
คุณสามารถสังเกตรายงานที่รีเฟรชตัวเองของการสืบค้นที่ทำงานอย่างแข็งขันบน เซิร์ฟเวอร์ฐานข้อมูลสูงสุดสามเซิร์ฟเวอร์ ในเวลาเดียวกัน
นี่คือภาพหน้าจอแบบพิกเซลของ dbtop
ที่ทำงานกับฐานข้อมูลสดสองฐานข้อมูล:
เพื่อให้สิ่งนี้ทำงานได้ คุณต้องกำหนดพารามิเตอร์การเชื่อมต่อฐานข้อมูลในไฟล์ YAML ซึ่งอยู่ที่ PATH ต่อไปนี้: ~/.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
: