Bemutatjuk az ABS-t, a shell scriptek programozási nyelvét

Az elmúlt napokban szántam egy kis időt arra, hogy dolgozzak egy olyan projekten, amelyet korom óta szem előtt tartottam, a Bash szkript-alternatívája: hadd mutassam be az ABS programozási nyelvét.

Miért

Hadd tartsam ezt röviden: mindannyian szeretjük a shell programozást - az ismétlődő feladatok automatizálása túl sok erőfeszítés nélkül.

Valószínűleg egyetértünk abban, hogy a shell programozás szintaxis szempontjából is egyfajta dió:

if [ -z $STRING ]; then ...fi

Mint, mi az ördög? fi? -z? zárójelben?

A Bash-szal vagy a közös shell programozási nyelvvel folytatott harc időről időre intenzívebbé válhat. Íráskód, például:

if (this == that) { parts = this.split("/").filter(...).map(...)}

könnyeket csal a szemedbe, ha a héjat használod.

Most hasonló dolgokat tehet bármelyik mainstream programozási nyelvvel (a fenti példa az érvényes JavasScript-t használja): amiben ezek a nyelvek nem nagyszerűek, az az, hogy integrálódnak az alapul szolgáló rendszerbe - a shell egyszerűen sokkal egybeesőbb / erősebb ebből a szempontból.

Képzelje el, hogy futtathatja a következő kódot:

host = $(hostname)
if (host == "johns_computer") { ...}

Nos, nem kell többet „elképzelni”: az ABS egy olyan nyelv, amely a gyors és egyszerű rendszerparancsokat ötvözi egy elegánsabb szintaxissal.

Gondolj arra, mint a cukorkák óta a legjobb dologra, csak hogy emlékezz erre az ABS-szerző definíciójára. De komolyan mondva, ez baromi kényelmes.

Nem hiszel nekem? Olvass tovább!

Példák

Határozottan híve vagyok a „ mutasd meg a kódot! ”Mantrát, szóval térjünk rá gyorsan. A shell parancsok futtatása rendkívül egyszerű az ABS-ben:

# Get the content of your hostfile$(cat /etc/hosts)

és a csövek is működnek:

# Check if a domain is in your hostfile$(cat /etc/hosts | grep domain.com | wc -l)

Ezen a ponton csak megragadhatjuk a parancsunk és a parancsfájl kimenetét rajta:

# Check if a domain is in your hostfilematches = $(cat /etc/hosts | grep domain.com | wc -l)
# If so, print an awesome stringif matches.int() > 0 { echo("We got ya!")}

Nem fog megtörténni, de tegyük fel, hogy hiba történik:

# Check if a domain is in your hostfilematches = $(cat /etc/hosts | grep domain.com | wc -l)
if !matches.ok { echo("How do you even...")}
# If so, print an awesome stringif matches.int() > 0 { echo("We got ya!")}

Ezt egy kicsit általánosabbá tehetnénk:

$ cat script.abs# Usage $ abs script.abs domain.com# Check if a domain is in your hostfiledomain = arg(2)matches = $(cat /etc/hosts | grep $domain | wc -l)
if !matches.ok { echo("How do you even...")}
# If so, print an awesome stringif matches.int() > 0 { echo("We got %s!", domain)}

Most a húrok meglehetősen unalmasak, így kipróbálhatunk valami szórakoztatóbbat:

# Say we're getting some JSON from a commandx = $(echo '{"some": {"dope": "json"}}')x.json().some.dope # "json"
# Arrays, you say?tz = $(cat /etc/timezone) # "Asia/Dubai"parts = tz.split("/") # ["Asia", "Dubai"]
# You better destructure the hell out of that![continent, city] = tz.split("/")

…stb. Rengeteg „rendes” dolgot tehet az ABS-szel, ezért nem nagyon fogok ezekre koncentrálni - hadd mutassam meg helyettük a furcsább részeket:

# Avoiding the bug that happened because# we forgot to compare strings case-insensitively"HELLO" ~ "hello" # true
# Just range1..3 # [1, 2, 3]
# Combined comparison operator (thanks Ruby!)5  5 # 05  6 # -16  5 # 1
# Classic short-circuiting1 && 2 # 21 || 2 # 1

15 percen belül átnézheti az egész dokumentációt: Az ABS célja nem egy általános célú, funkciókkal töltött nyelv, tehát a felület nem olyan széles. Ezenkívül, ha olyan nyelvekkel dolgozott, mint a JavaScript, a Python vagy a Ruby, akkor nem okoz gondot az ABS megszokása.

Mi fog most történni?

Átlátogathat az ABS webhelyére, és többet tudhat meg a nyelvről. A bátrak ehelyett kirándulnak az ABS github repójába, és letöltenek egy kiadást a helyi telepítéshez.

A bátrabbak csak:

bash <(curl //www.abs-lang.org/installer.sh)

(lehet, hogy előtte sudo kell)

Melyik leszel?

Eredetileg az odino.org címen jelent meg (2018. december 25.).

Kövess engem a Twitteren - szeretettel várunk! ?