Next Generation Shell is a modern programming language that focuses on "DevOps"y use cases.
NGS utilizes a subset of bash syntax for running external programs and provides additional facilities for ergonomic experience: exit codes handling, output parsing, etc.
Data manipulation is convenient. NGS provides map
, filter
and other primitives for basic functional programming, uniquely extended to support patterns.
log("my log message")
debug("facility", "closing file ${f}")
and run with DEBUG=facility
environment variablestatus("Reading ${f} - ${p}% done")
retry
function$(your_program --id $id --values $*values)
p=$(your_program &)
... p.kill()
output = `your_program --values $*args`
structured_data = ``curl https://api.example.com/blah.json``
map
, filter
, reject
with the usual meaningsmapk
- maps hash keysmapv
- maps hash valuesfilterk / rejectk
- filters hash by keysfilterv / rejectv
- filters hash by valuesthe_one
- returns the only element in an arraygroup
- groups values into hashcollector
- accumulates resultTable
- displays tabular data elegantlyStats
- counts occurrencesfetch
- reads and parses a file or a URLcurl https://ngs-lang.org/install.sh | bash
git clone git@github.com:ngs-lang/ngs.git
cd ngs && ./install.sh
brew install ngs
sudo snap install ngs
!curl "https://raw.githubusercontent.com/ngs-lang/ngs-ipython-extension/master/ngs-install.sh" | bash
%load_ext ngs
%ngs [single line expression]
%%ngs [multi line code]
docker run -it --rm ngslang/ngs
docker run -p 8888:8888 ngslang/ngs-jupyter
- uses: ngs-lang/ngs@v0.2.13
- run: ngs -pi 'sum(10..100)'