Většina systémů POSIX je dodávána s GNU bc, což je libovolný jazyk pro přesné numerické zpracování. Jeho syntaxe je podobná C, ale také podporuje interaktivní provádění příkazů a zpracování dat ze standardního jazyka (stdin
). Z toho důvodu je to často odpověď na otázku:"Jak mám dělat matematiku v prostředí Linux?" Tento styl odpovědi je běžný online:
$ echo "1+1" | bc
2
I když to dokonale platí, jen málo uživatelů tvrdí, že je to elegantní ve srovnání s něčím intuitivnějším, jako například:
$ 1+1 #this does not work
2
Interaktivní režim je o něco jednodušší:
$ bc
1+1
2
quit
$
Interaktivní režimy však ne vždy odpovídají požadovanému a intuitivnímu pracovnímu postupu něčeho jednoduchého, jako je pouhé zadávání požadovaného výpočtu. K tomu doporučuji Bluebatovu kalkulačku v čistém Bash.
To, co bc ve skutečnosti poskytuje, je matematický jazyk pro pokročilé výpočty.
Pokročilé funkce s mathlib
Samostatně bc
poskytuje základní matematické funkce. Můžete je vyzkoušet v interaktivním režimu:
$ bc
3^2
9
(3^2)*(9)/3
27
Použijte --mathlib
možnost získat pokročilé funkce, včetně sinus, kosinus, tangens a další. V interaktivním režimu si některé z nich můžete vyzkoušet. Zde je kosinus 90:
c(90)
-.44807361612917015236
Sinus 9:
s(9)
.41211848524175656975
Vytváření vlastních funkcí bc
Můžete si také vytvořit své vlastní funkce v Bc. Definice funkcí začínají define
klíčové slovo a jsou uzavřeny složenými závorkami. Zde je jednoduchá funkce zadaná do interaktivní relace, která vrací jakékoli zadané číslo:
$ bc
define echo(n) {
return (n);
}
Ve stejné interaktivní relaci to vyzkoušejte:
echo(2)
2
echo(-2)
-2
příkazy If v bc
Jazyk bc má také různé ovládací příkazy, z nichž nejjednodušší je if/else. Syntaxe se může na první pohled zdát povědomá, ale v tom, jak se zachází se složenými závorkami, existují jemnosti. Všimněte si, že jiné klauzule if-příkazu je uzavřena ve složených závorkách, zatímco then klauzule není, ale obě jsou zakončeny středníkem. Zde je funkce k nalezení absolutní hodnoty čísla n :
define abso(n) {
if ( n > 0 ) return (n);
{ return (-n); }
}
Ve stejné interaktivní relaci to vyzkoušejte:
abso(-5)
5
abso(5)
5
Import dat do bc
Práce v interaktivní relaci je přijatelná pro rychlé výpočty a experimentování, ale po ukončení ztratíte svá data a je obtížné je upravovat, když uděláte chyby. Naštěstí může bc načítat proměnné a funkce z externích souborů.
Zde je soubor obsahující dvě proměnné (sol
a foo
) a vlastní abso
funkce k nalezení absolutní hodnoty:
sol=299792458
foo=42
define abso(n) {
if ( n > 0 ) return (n);
{ return (-n); }
}
Uložte to do souboru s názvem bcvars.bc
, takže jej můžete importovat do interaktivní relace bc:
$ bc bcvars.bc
foo
42
sol
299792458
abso(-23)
23
Zlepšete svou matematiku pomocí bc
Další zdroje pro Linux
- Cheat pro příkazy Linuxu
- Cheat sheet pro pokročilé příkazy systému Linux
- Bezplatný online kurz:Technický přehled RHEL
- Síťový cheat pro Linux
- Cheat sheet SELinux
- Cheat pro běžné příkazy pro Linux
- Co jsou kontejnery systému Linux?
- Naše nejnovější články o Linuxu
Jazyk bc je relativně jednoduchý, za předpokladu, že znáte dost matematiky na sestavení rovnice pro cokoliv, čeho se snažíte dosáhnout. Zatímco bc ve výchozím nastavení poskytuje užitečné základní funkce a umožňuje vám vytvářet si vlastní, můžete si snížit zátěž tím, že se postavíte na ramena obrů. Soubory nabité novými funkcemi, jak pro základy matematiky, tak pro specifické úlohy (například výpočet složeného úroku), jsou k dispozici na stránce GNU bc a k dispozici je úplná dokumentace pro bc.
Pokud máte zájem dělat lepší matematiku v shellu, zkuste bc. Neudělá z vás matematického génia, ale může vám to usnadnit stát se jím.