curl
사용할 수 없는 경우Makefile
통해 검색db top
대한 db
단축키db
기능db
의 하위 명령db connections
db pga
(예: pg_activity
)bin/tablet
스크립트bin/specs
스크립트를 사용하여 테스트 실행bin/spec -P
사용하여 순차적으로 사양 실행Makefile
사용하여 병렬 테스트 실행Makefile
사용하여 순차적으로 테스트 실행배지 | FOSSA 스캐닝 | |
---|---|---|
포사 | ||
CI 테스트 | ||
CI 설치 | ||
쉘체크 | ||
거터 |
|
Bashmatic® 은 BASH 프레임워크입니다. 즉, BASH 프로그래밍을 더 쉽고, 더 즐겁고, 더 중요하게는 재미있게 만들어주는 BASH 기능 모음(거의 900개)을 의미합니다. Bashmatic의 도우미를 사용하는 스크립트가 실행되는 동안 무슨 일이 일어나고 있는지에 대한 지속적인 피드백이 제공됩니다.
팁 | 인쇄용으로 훨씬 더 나은 이 문서의 PDF 버전 에서 Bashmatic에 대해 알아보는 것이 좋습니다.
|
라이브러리(기본 위치는 ~/.bashmatic
)를 설치한 후 다음 중 하나를 선택할 수 있습니다.
source ~/.bashmatic/init.sh
줄을 추가하여 ~/.bash_profile
과 같은 쉘 'dotfiles'에서 라이브러리(및 900개 이상의 모든 함수)를 자동으로 소싱합니다. 최근 M1 Apple 노트북에서는 총 약 100ms가 추가됩니다.
또는 로그인 초기화 중에 이를 건너뛰고 라이브러리를 사용하는 스크립트의 맨 위에만 로드할 수 있습니다.
주의 | 두 가지 접근 방식 모두 절대적으로 유효하며 장단점이 있습니다. 도트 파일에 bashmatic을 로드하는 것은 약간 위험할 수 있습니다. 어떤 식으로든 우리는 다운로드한 bashmatic이 항상 안전하고 올바른 버전인지 확인할 수 있는 방법을 곧 제공할 것입니다. |
이 문제에 대해 우리가 말할 것은 우리가 라이브러리 소싱의 최적화를 관리한다는 것입니다. 예는 다음과 같습니다.
Bashmatic® 의 프로그래밍 스타일은 Ruby의 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이 설치되고 쉘 초기화 파일에 의해 로드되면 is.<tab><tab>
하여 is
로 시작하는 어떤 기능을 사용할 수 있는지 확인할 수 있습니다. lib
아래의 각 모듈은 일반적으로 파일 이름으로 시작하는 공용 함수를 정의합니다. 예를 들어 array.sh
의 함수는 일반적으로 array.<something>.<action>
으로 시작합니다.
Bashmatic®은 주요 기능인 run
을 사용하여 명령 실행, 자동 재시도, 반복 가능, 런타임 측정 실행 프레임워크를 위해 지속적으로 성장하는 광범위한 도우미 기능을 제공합니다. 상자, 선, 머리글 그리기부터 진행률 표시줄 표시, 사용자 입력 받기, 패키지 설치 등에 이르기까지 모든 상황에 맞는 도우미가 있습니다.
메모 | Bashmatic® 내 도우미의 상당 부분은 OS-X용으로 작성되었지만 많은 유용한 기능은 Linux에서도 작동합니다. 우리의 전체 테스트 스위트는 Ubuntu에서 실행됩니다. Homebrew 관련 기능을 Linux에서도 똑같이 잘 작동하는 package.install 과 같은 OS 중립 도우미로 변환하려는 노력이 진행 중입니다. |
아래의 예시 섹션을 통해 Bashmatic® 탐색을 시작해 보세요. 준비가 되면 전체 음모 기능 세트(거의 500개)를 기능 색인 페이지에서 찾을 수 있습니다.
그리고 마지막으로 걱정하지 마십시오. Bashmatic® 은 완전한 오픈 소스이며 무료로 사용하고 확장할 수 있습니다. 우리는 약간의 ®를 사용한 모습이 마음에 듭니다 :)
BASH 버전 4+
BASH 버전 3(부분 호환, 일부 기능 비활성화)
ZSH – 최근 업데이트 기준으로 Bashmatic은 ZSH와 거의 90% 호환됩니다.
현재 지원되지 않음
FISH( bin/bashmatic
스크립트 도우미 또는 해당 실행 파일을 통해 Bashmatic을 사용할 수 있음)
이 프로젝트는 매우 숙련되고 경험이 풍부한 몇몇 엔지니어들의 단순한 깨달음에서 탄생했습니다.
범용 설치 프로그램 , 일명 설정 스크립트 , 업로더 , NPM , rbenv , gem, Ruby 설치, AWS 사용, 코드 배포 등과 같은 모든 종류의 기능에 대한 래퍼 등을 작성하는 데 BASH를 사용하는 것이 더 쉬운 경우가 많습니다.
BASH 함수의 반환 값은 여러 함수가 논리적 AND &&
및 OR ||
로 연결될 수 있는 컴팩트 DSL(도메인 특정 언어)에 적합합니다. 매우 컴팩트한 실행 로직을 제공합니다. 가장 중요한 것은 이 논리가 읽고 이해하기 매우 쉽다는 것입니다.
위의 사항에도 불구하고 일반적으로 다음 사항이 인정됩니다.
많은 BASH 스크립트는 매우 형편없게 작성되었으며 읽고 이해하기 어렵습니다.
스크립트가 실행되는 동안 도대체 무슨 일이 일어나고 있는지 이해하기 어려운 경우가 많습니다. 유용한 내용을 출력하지 않거나 너무 많이 출력하기 때문입니다.
BASH 오류가 발생하면 일반적으로 똥 같은 일이 발생하고 누군가 C++ 또는 Go에서 20줄 BASH 스크립트를 다시 작성해야 한다고 결정합니다. 왜냐하면, 빌어먹을 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 는 Github Bashmatic Repo에 있는 bin/bashmatic-install 스크립트의 HEAD로 리디렉션됩니다. 필요한 경우 나중에 설치를 다른 스크립트로 리디렉션할 수 있는 기능을 유지하기 위해 이 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
스크립트를 실행하기 전에 검사할 수 있습니다.
아래는 일부 설명입니다
-b / --git-branch <tag|branch>
플래그를 전달하여 Bashmatic의 브랜치나 태그를 설치할 수 있습니다.
bashmatic-install
함수에 플래그를 전달하여 Bashmatic을 설치하는 방법, 위치, 다운로드 위치를 제어할 수 있습니다.
-v
또는 --verbose
: 추가 출력을 표시하거나 그 반대:
-d
또는 --debug
추가 디버깅 출력을 인쇄합니다.
-f
또는 --force
기존 bashmatic 폴더를 새 폴더로 대체합니다.
-q
또는 --quiet
(출력 없음)
-l
또는 --skip-on-login
로그인 시 Bashmatic을 로드하는 후크를 설치하지 않습니다.
비표준 위치(기본값은 ~/.bashmatic
)에 Bashmatic을 설치하려는 경우 -H PATH
플래그를 사용할 수 있습니다.
예를 들어, 여기서는 기본이 아닌 대상에 Bashmatic을 설치하고 추가 상세 및 디버그 정보를 인쇄할 뿐만 아니라 -f
(force)를 사용하여 대상 폴더(이미 존재하는 경우)를 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의 계정으로 구성된 경우 기본 https://github.com/kigster/bashmatic
대신 [email protected]:kigster/bashmatic
원본을 사용하여 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 개발자 도구( git
포함)를 설치하는 데 필요할 수 있습니다.
BASH 버전이 3 이하인 경우 스크립트는 BASH 버전 5 이상의 소스에서 다운로드하여 빌드한 후 /usr/local/bin/bash
에 설치합니다. 이 단계에는 SUDO가 필요할 수 있습니다.
OS-X에서 스크립트는 아직 OS-X에 Homebrew가 설치되어 있지 않은 경우 Homebrew를 설치합니다.
Brew가 설치되면 Bashmatic에서 필요하고 의존하는 Brew 패키지 coreutils
및 gnu-sed
설치됩니다.
그런 다음 스크립트는 bashmatic 저장소를 Bashmatic 홈 폴더에 git clone
하려고 시도하거나, 이미 존재하는 경우 git pull
.
마지막으로 -l
또는 --skip-on-login
지정하지 않으면 스크립트는 bash 도트 파일을 확인하고 ~/.bashrc
또는 ~/.bash_profile
에서 Bashmatic을 로드하기 위한 후크를 추가합니다.
마지막 부분에는 설명이 필요합니다.
이제 로그인 시 Bashmatic을 로드할 수도 있고 로드하지 않을 수도 있습니다.
즉, ~/.bashrc
에 다음과 같은 내용이 있습니다.
# Let's see if ~/.bashrc mentions Bashmatic:
$ grep bashmatic ~ /.bashrc
[[ -f ~ /.bashmatic/init.sh ]] && source ~ /.bashmatic/init.sh
Bashmatic©이 제공하는 800개 이상의 편의 기능과 도우미에 즉시 액세스할 수 있습니다. Bashmatic은 메인 브랜치에서 로드될 때마다 자동 업데이트됩니다.
로그인 시 약 134ms 지연 및 잠재적인 보안 공격 벡터(예: 누군가 저장소를 해킹하는 경우).
팁 | 우리는 최근 Bashmatic© 기능 전체의 로딩 시간을 획기적으로 개선했습니다. 이전에는 854개 기능을 로드하는 데 거의 900ms, 거의 1초가 걸렸습니다. 오늘은 180ms를 넘지 않습니다. |
❯ time source init.sh
real 0m0.134s
user 0m0.078s
sys 0m0.074s
위 명령이 위에 표시된 출력을 표시하는 경우 bashrc
또는 zshrc
grep하면 모든 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 "
이 경우 Bashmatic의 bin
폴더를 $PATH
에 추가하는 것이 좋습니다.
예를 들어:
# ~/.bashrc
export BASHMATIC_HOME= " ${HOME} /.bashmatic "
export PATH= " ${BASHMATIC_HOME} /bin: ${PATH} "
그런 다음 모든 bashmatic 함수에 대한 "게이트웨이"로 * 사용할 수 있는 실행 가능한 스크립트 bashmatic
에 액세스할 수 있습니다.
다음과 같이 사용합니다: bashmatic <function> <args>
:
중요한 | 아래 예에서는 ${HOME}/.bashmatic/bin 포함하도록 PATH 설정했다고 가정합니다. |
# 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.reload
기능을 사용하면 언제든지 Bashmatic®을 다시 로드할 수 있습니다. 이는 단순히 ${BASHMATIC_HOME}/init.sh
소싱을 수행합니다.
Bashmatic을 설치하면 자동으로 ~/.bash_profile
에 후크가 추가되지만 ZSH를 사용하는 경우 (현재로서는) 수동으로 추가해야 할 수도 있습니다.
~/.zshrc
파일에 다음을 추가합니다.
[[ -f ~ /.bashmatic/init.sh ]] && source " ~/.bashmatic/init.sh "
메모 | ZSH 및 최신 MacBook Pro에서 전체 라이브러리를 로드하는 데 300ms 미만이 걸립니다. |
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
스크립트를 실행합니다. 기껏해야 로그인 시 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
는 변경 사항을 적용하고 자동 생성된 문서에 추가된 새 기능 등을 반영하기를 원하는 라이브러리 기여자가 실행해야 하는 작업입니다. 이 작업은 또한 함수 색인을 생성하고 README
, USAGE
또는 CHANGELOG
파일의 최신 PDF를 다시 생성합니다.
메모 | 풀 요청을 제출하려면 make update 실행해야 합니다. |
Bashmatic에는 Linux에서 테스트를 실행하거나 jsut를 수동으로 검증하고 실험하는 데 사용할 수 있는 Dockerfile이 함께 제공됩니다.
make docker-build
실행하여 도커 이미지 bashmatic:latest
생성합니다.
make docker-run-bash
(또는 …-zsh
또는 …-fish
)를 실행하여 즐겨 사용하는 셸로 컨테이너를 시작한 다음 함수가 예상대로 작동하는지 확인합니다.
Bashmatic이 이미 설치된 Linux 환경 프롬프트로 바로 연결되는 방법에 주목하세요.
왜 또 다른 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®은 놀라운 시간 절약 기능을 제공합니다. |
잠시 후, 지구로 돌아가서 Bashmatic 설치 방법과 사용 방법에 대해 좀 더 자세히 이야기해 보겠습니다.
이 마지막이자 가장 기능이 풍부한 예제는 단순한 예제가 아닙니다. 이는 Apple 노트북에 여러 개발자 종속성을 설치하는 데 사용할 수 있는 작동하는 기능 도구입니다 .
메모 | 스크립트는 배후에서 Homebrew에 의존하므로 Linux나 Windows에서는 작동하지 않습니다(Brew가 거기로 포팅되지 않는 한). |
bin/dev-setup
에 있으며 많은 CLI 플래그가 있습니다.
아래 예에서는 dev-setup
스크립트를 사용하여 다음을 설치합니다.
개발 도구
포스트그레SQL
레디스
멤캐시드
루비 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 top
대한 db
단축키 PostgreSQL을 사용하고 있다면 운이 좋을 것입니다! Bashmatic에는 PostreSQL의 CLI 유틸리티 psql
에 대한 수많은 도우미가 포함되어 있습니다.
메모 | 시작하기 전에 Bashmatic의 conf 디렉터리에 있는 .psqlrc 파일을 홈 폴더에 설치하는 것이 좋습니다. 필수는 아니지만 이 파일은 psql 규칙적으로 사용하는 경우 매우 유용하게 사용할 PostgreSQL용 프롬프트와 다양한 매크로를 설정합니다. |
db top
대체 뭐죠?
일반 top
과 마찬가지로 로컬 시스템에서 실행 중인 "상위" 리소스 소비 프로세스를 볼 수 있으며, dbtop
사용하면 동시에 최대 3개의 데이터베이스 서버 에서 활발하게 실행 중인 쿼리에 대한 자체 새로 고침 보고서를 관찰할 수 있습니다.
다음은 두 개의 라이브 데이터베이스에 대해 실행되는 dbtop
의 픽셀화된 스크린샷입니다.
이 기능이 작동하려면 먼저 ~/.db/database.yml
경로에 있는 YAML 파일에서 데이터베이스 연결 매개변수를 정의해야 합니다.
파일을 구성하는 방법은 다음과 같습니다. 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
실행할 수 있습니다.