
Brush โ ััะพ ะบะพะผะฐะฝะดะฝะฐั ะพะฑะพะปะพัะบะฐ, ะฝะฐะฟะธัะฐะฝะฝะฐั ะฝะฐ ัะทัะบะต Rust, ะบะพัะพัะฐั ัะพัะตัะฐะตั ัะพะฒะผะตััะธะผะพััั ั POSIX ะธ Bash ั ะณะฐัะฐะฝัะธัะผะธ ะฑะตะทะพะฟะฐัะฝะพััะธ ะฟะฐะผััะธ ะธ ะฟัะพะธะทะฒะพะดะธัะตะปัะฝะพัััั. ะัะพะตะบั ะฝะฐัะตะปะตะฝ ะฝะฐ ัะพ, ััะพะฑั ััะฐัั ะฟะพะปะฝะพัะตะฝะฝะพะน ะฐะปััะตัะฝะฐัะธะฒะพะน ััะฐะดะธัะธะพะฝะฝัะผ ะพะฑะพะปะพัะบะฐะผ, ะฟะพะทะฒะพะปัั ะทะฐะฟััะบะฐัั ัััะตััะฒัััะธะต ัะบัะธะฟัั ะธ ะธัะฟะพะปัะทะพะฒะฐัั .bashrc ะฟัะฐะบัะธัะตัะบะธ ะฑะตะท ะธะทะผะตะฝะตะฝะธะน. ะญัะฐ ะฒะตััะธั ะพะฑัะตะดะธะฝัะตั ะฝะตัะบะพะปัะบะพ ะผะตัััะตะฒ ัะฐะฑะพัั ะธ ะฑะพะปะตะต 200 ะพะฑัะตะดะธะฝัะฝะฝัั ะฟัะปะป-ัะตะบะฒะตััะพะฒ, ัััะตััะฒะตะฝะฝะพ ะฟัะพะดะฒะธะณะฐั ะพะฑะพะปะพัะบั ะฟะพ ะฟััะธ ะบ ะฟะพะปะฝะพัะตะฝะฝะพะน ะทะฐะผะตะฝะต Bash ะธ POSIX-ัะพะฒะผะตััะธะผัั ััะตะด.
ะัะฝะพะฒะฝัะต ะฝะฐะฟัะฐะฒะปะตะฝะธั ัะฐะทะฒะธัะธั ะฒ ััะพะผ ะฒัะฟััะบะต:
- ัะพะฒะผะตััะธะผะพััั ั Bash: ะดะพะฑะฐะฒะปะตะฝั set -e, set -u, pipefail, failglob, ะพะฑัะฐะฑะพััะธะบ ERR, ัะพะฟัะพัะตััั ะธ ะผะฝะพะณะพะต ะดัััะณะพะต;
- ะฝะฐะดัะถะฝะพััั: ัะปัััะตะฝะฐ ะพะฑัะฐะฑะพัะบะฐ ะธัะบะปััะธัะตะปัะฝัั ัะปััะฐะตะฒ โ ะทะฐะบััััั ะบะฐะฝะฐะปะพะฒ, ะฑะธัะพะณะพ ะฒัะฒะพะดะฐ, ะฝะต-UTF8 ะธััะพัะธะธ ะธ ะดััะณะธั ;
- ะฟะปะฐััะพัะผั: ัะฐััะธัะตะฝะฐ ะฟะพะดะดะตัะถะบะฐ macOS (ัะฐะฑะพัะฐ ะฒ ะบะฐัะตััะฒะต ัะตะปะปะฐ ะฒั ะพะดะฐ), ัะปัััะตะฝะฐ ัะฐะฑะพัะฐ ะฝะฐ Windows, FreeBSD, Android ะธ 32-ะฑะธัะฝัั ัะธััะตะผะฐั ;
- ะธะฝัะตัะฐะบัะธะฒะฝะพััั: ะดะพะฑะฐะฒะปะตะฝั ะพะฟัะธะพะฝะฐะปัะฝัะต TOML-ะบะพะฝัะธะณะธ, preexec/precmd-ั ัะบะธ, ัะปัััะตะฝะฐ ะฟะพะดะดะตัะถะบะฐ ะผะฐะบัะพัะพะฒ readline ะธ ะดััะณะพะต.
ะะปััะตะฒัะต ัะปัััะตะฝะธั Bash-ัะพะฒะผะตััะธะผะพััะธ
ะะฐะถะฝะตะนัะธะผะธ ะดะพัะฐะฑะพัะบะฐะผะธ ััะพะณะพ ะฒัะฟััะบะฐ ััะฐะปะพ ะทะฝะฐัะธัะตะปัะฝะพะต ัะฐััะธัะตะฝะธะต ะฟะพะดะดะตัะถะบะธ ะฒะพะทะผะพะถะฝะพััะตะน Bash. ะฃะฟัะฐะฒะปะตะฝะธะต ะพัะธะฑะบะฐะผะธ:
- set -e (errexit) โ ะฝะตะผะตะดะปะตะฝะฝัะน ะฒัั ะพะด ะฟัะธ ะพัะธะฑะบะต;
- set -u (nounset) โ ะพัะธะฑะบะฐ ะฟัะธ ะพะฑัะฐัะตะฝะธะธ ะบ ะฝะตะพะฑััะฒะปะตะฝะฝะพะน ะฟะตัะตะผะตะฝะฝะพะน;
- pipefail โ ะบะพะด ะฒะพะทะฒัะฐัะฐ ะบะพะฝะฒะตะนะตัะฐ ะพะฟัะตะดะตะปัะตััั ะฟะพัะปะตะดะฝะตะน ัะฟะฐะฒัะตะน ะบะพะผะฐะฝะดะพะน;
- failglob โ ะพััััััะฒะธะต ัะพะฒะฟะฐะดะตะฝะธะน ะดะปั glob-ะฒััะฐะถะตะฝะธั ัะตะฟะตัั ะฟัะธะฒะพะดะธั ะบ ะพัะธะฑะบะต.
ะะฑัะฐะฑะพััะธะบะธ (Traps) ะธ ัะพะฟัะพัะตััั:
- ะพะฑัะฐะฑะพััะธะบ ERR โ ะฟะพะทะฒะพะปัะตั ะฒัะฟะพะปะฝััั ะบะพะผะฐะฝะดั ะฟัะธ ะฒะพะทะฝะธะบะฝะพะฒะตะฝะธะธ ะพัะธะฑะบะธ;
- ัะพะฟัะพัะตััั (coproc) โ ะทะฐะฟััะบ ัะพะฝะพะฒัั ะฟัะพัะตััะพะฒ ั ะดะฒัััะพัะพะฝะฝะตะน ัะฒัะทัั.
ะัััะพะตะฝะฝัะต ะบะพะผะฐะฝะดั:
- ัะปัััะตะฝะฐ ะพะฑัะฐะฑะพัะบะฐ ะผะฝะพะณะธั ะฐัะธัะผะตัะธัะตัะบะธั ะบะพะฝััััะบัะธะน, ะฒ ัะพะผ ัะธัะปะต ะปะธัะตัะฐะปะพะฒ ั ะฒััะพะบะธะผ ะพัะฝะพะฒะฐะฝะธะตะผ, ะฟะตัะตะฟะพะปะฝะตะฝะธั ะธ ะพะฟะตัะฐัะพัะพะฒ ะฟัะธัะฒะฐะธะฒะฐะฝะธั;
- ะธัะฟัะฐะฒะปะตะฝะธั ะธ ัะปัััะตะฝะธั ะทะฐััะพะฝัะปะธ ะฒัััะพะตะฝะฝัะต ะบะพะผะฐะฝะดั: caller, read, getopts, printf ะธ ะดััะณะธะต.
ะ ะฐััะธัะตะฝะธะต ะฟะพะดะดะตัะถะบะธ ะฟะปะฐััะพัะผ:
ะ ะตะปะธะท v0.4.0 ะดะตะปะฐะตั ะพะฑะพะปะพัะบั ะดะพัััะฟะฝะพะน ะฝะฐ ะฑะพะปะตะต ัะธัะพะบะพะผ ัะฟะตะบััะต ััััะพะนััะฒ:
- macOS: ะธัะฟัะฐะฒะปะตะฝะฐ ะฟัะพะฑะปะตะผะฐ, ะธะท-ะทะฐ ะบะพัะพัะพะน ะพะฑะพะปะพัะบะฐ ะทะฐะฒะธัะฐะปะฐ ะฟัะธ ะฒั ะพะดะต ะฒ ัะธััะตะผั. ะขะตะฟะตัั brush ะผะพะถะฝะพ ะธัะฟะพะปัะทะพะฒะฐัั ะฒ ะบะฐัะตััะฒะต ัะตะปะปะฐ ะฒั ะพะดะฐ (login shell);
- Windows: ัะปัััะตะฝะธั ะฟะพ ะพะฑัะฐะฑะพัะบะต ะฟััะตะน, ะดะพะฑะฐะฒะปะตะฝะฐ ัะผัะปััะธั /dev/null, ััะพ ะทะฝะฐัะธัะตะปัะฝะพ ะฟะพะฒััะฐะตั ัะดะพะฑััะฒะพ ะธัะฟะพะปัะทะพะฒะฐะฝะธั ะฝะฐ Windows;
- FreeBSD ะธ Android: ะฟะพะดะดะตัะถะธะฒะฐะตััั ัะฑะพัะบะฐ ะดะปั ััะธั ะฟะปะฐััะพัะผ;
ะะฝัะตัะฐะบัะธะฒะฝัะต ะฒะพะทะผะพะถะฝะพััะธ ะธ API
- เบเบฒเบเบเบฑเปเบเบเปเบฒ: ะดะพะฑะฐะฒะปะตะฝะฐ ะฟะพะดะดะตัะถะบะฐ ะพะฟัะธะพะฝะฐะปัะฝะพะณะพ TOML-ะบะพะฝัะธะณ-ัะฐะนะปะฐ (~/.config/brush/config.toml) ะดะปั ะฝะฐัััะพะตะบ, ัะฟะตัะธัะธัะฝัั ะดะปั brush;
- เบเบฒเบเบเบฑเบเปเบเปเบ: ัะตะฐะปะธะทะพะฒะฐะฝั zsh-ััะธะปะธ preexec/precmd ั ัะบะธ (ะทะฐ ัะบัะฟะตัะธะผะตะฝัะฐะปัะฝัะผ ัะปะฐะณะพะผ), ะฟะพะปะตะทะฝัะต ะดะปั ัะพะทะดะฐะฝะธั ะบะฐััะพะผะฝัั ะฟัะธะณะปะฐัะตะฝะธะน ะธ ะธะฝััััะผะตะฝัะพะฒ ะทะฐะผะตัะฐ ะฒัะตะผะตะฝะธ;
- API ะดะปั ัะฐะทัะฐะฑะพััะธะบะพะฒ: ัะธะฟ Shell ัะตะฟะตัั ะฟะฐัะฐะผะตััะธะทะพะฒะฐะฝ ัะฐััะธัะตะฝะธัะผะธ (ShellExtensions), ะฟัะตะดะพััะฐะฒะปัั ัะฐะทัะฐะฑะพััะธะบะฐะผ ะฒะพะทะผะพะถะฝะพััั ะดะพะฑะฐะฒะปััั ัะพะฑััะฒะตะฝะฝัะต ะฒัััะพะตะฝะฝัะต ะบะพะผะฐะฝะดั ะธ ะธะทะผะตะฝััั ะฟะพะฒะตะดะตะฝะธะต ะฟะตัะตะผะตะฝะฝัั ะฑะตะท ะฝะตะพะฑั ะพะดะธะผะพััะธ ัะพัะบะฐ ะฟัะพะตะบัะฐ;
- ะ ะฐะทะฝะพะต:
- ะดะพะฑะฐะฒะปะตะฝั ะฒะพะทะผะพะถะฝะพััะธ ัะตัะธะฐะปะธะทะฐัะธะธ AST ะธ ัะพััะพัะฝะธั ะพะฑะพะปะพัะบะธ ัะตัะตะท serde;
- ัะตะฟะตัั ะฒ brush-parser ะธ brush-core ะดะพัััะฟะฝั ััะฝะบัะธะธ serde ะดะปั ะฒะพะทะผะพะถะฝะพััะธ ัะตัะธะฐะปะธะทะฐัะธะธ AST ะธ ัะพััะพัะฝะธั ะพะฑะพะปะพัะบะธ.
เปเบซเบผเปเบเบเปเปเบกเบนเบ: linux.org.ru
